罗兰关于MATLAB的艺术

将想法转化为MATLAB

MATLAB中的双积分-理解公差

在今天的帖子中,Mike Hosea加入了我,他是一名开发人员,偶尔会为MATLAB做集成例程。在最近的版本中,我们添加了新的集成例程,包括integral2二重积分。今天我们将讨论在使用这个程序以及调整绝对和相对公差时的一些细微差别。

内容

调用集成函数的要求

当你调用任何积分函数时被积函数至少有一个要求,那就是它可以被多个输入调用它会返回相应的输出,1对1,带有输入。为了积分$x * y$,你需要提供矢量化形式,即x。* y

我们不是用integrand定义创建一个文件,而是创建一个匿名函数.如果您不熟悉匿名功能,并想了解更多,请查看博客右侧的分类讨论和示例。

F0 = @(x,y) x .* y;

现在可以积分了F在0和1之间,xy

Q = integral2 (F0 0 1 0 1)
Q = 0.250000000000000

探索公差

下面是另一个例子。首先对函数积分F1

F = @ (x, y) exp (10 * x)。* tan (y)
F = @ (x, y) exp (10 * x)。* tan (y)

在0和1之间x0和$\ /4$y

Q1 = integral2 (F, 0 1 0,π/ 4)
Q1 = 7.633444730985692 e + 02

这个积分的解析答案是

Q0 = log(根号2)/10*(exp(10) - 1)
Q0 = 7.633444758094897 e + 02

你可以看到第一季度不同于Q0处,也许比我们想要的更多。在显示积分的绝对误差之前,我们首先调整数字显示以看到足够的十进制数字第一季度

格式intabserr1 = abs (Q1-Q0)
intabserr1 = 2.710920512072335 e-06

调整公差(s)

它的一个优点是integral2例程(以及其他维度的配套程序)在大多数老例程的基础上提供了混合的相对和绝对误差控制,也就是说,您可以提供两个公差而不是一个。你不仅可以,而且应该。实际上两者都需要,或者有时需要一个,有时需要另一个,但是最好考虑一下两者都需要什么,并注意默认值,以防您选择不设置它们。你很少想要做的是改变绝对容错,AbsTol

现在假设我们想要更高的精度,并试图降低绝对公差。

Q2 = integral2 (F, 0 1 0,π/ 4,“AbsTol”intabser2 = abs(Q2 - Q0)
Q2 = 7.633444730985692e+02 intabserr2 = 2.710920512072335e-06

我们得到了和以前一样的答案!原因是integral2使用了相对误差和绝对误差的混合控制,并且它总是这两者中限制最少的。默认的AbsTol是1e-10,默认是RelTol是1 e-6。绝对误差大于绝对公差,这是真的,但相对误差是

inrelerr2 = abs(Q2 - Q0)/abs(Q0)
intrelerr2 = 3.551372411777180 e-09

这比RelTol,所以integral2返回答案。因为相对误差在1e-8和1e-9之间,应该有大约8个正确有效数字,确实,我们有。

disp ([Q0; Q2])
1.0e+02 * 7.633444758094897 7.633444730985692

默认的RelTol是1e-6,我们试着把它变小AbsTol,以获得更准确的结果。

第三季度= integral2 (F, 0 1 0,π/ 4,“RelTol”,1e-12) inrelerr3 = abs(Q3 - Q0)/abs(Q0)
Q3 = 7.633444758094937e+02 intrrelerr3 = 5.212639177138190e-15

现在,由于相对误差在1e-14和1e-15之间,我们应该有大约14位有效数字是正确的,我们做到了

disp ([Q0;第三季度)
1.0e+02 * 7.633444758094897 7.633444758094937

通常RelTol是更重要的操作公差,也是更有用的一个,因为它间接地控制了正确有效位数的数量。但这里总有一个陷阱。假设正确答案是零。那么相对误差是未定义的!这就是为什么integral2必须使用限制最少的ofAbsTolRelTol.它试图满足的实际误差条件是

er < = max (AbsTol RelTol * abs (Q))

在哪里是绝对误差的近似上界。

结果是这个比率R = AbsTol / RelTol是一个截止。当abs (Q) < RAbsTol重要的是宽容。当abs (Q) > RRelTol才是最重要的。所以,通过问自己两个问题,将两种容忍都设定为合理的做法是很好的做法:

  1. 如果真解的大小很小,小数点后要注意多少位?这个问题的答案告诉你什么AbsTol应该是。如果答案是10位,那么就是AbsTol1e-10或者5e-11,这样当四舍五入到这一点时,最后一位应该是正确的。
  2. 假设答案不太小,我需要多少正确有效位?这个问题的答案告诉你什么RelTol应该是。这里,如果你想要10位有效数字,请RelTol1e-10或者5e-11。

所以当你选择自己的容忍度时,电话应该是这样的

第四季度= integral2 (F, 0 1 0,π/ 4,“AbsTol”1 e-12“RelTol”1、平台以及)
第四季度= 7.633444758095101 e + 02

您是否成功地使用了较新的集成例程?

在这篇文章中,我们只讨论了设置公差以确保对积分进行合理估计的话题。我们计划更多地讨论选择哪种方法,集成的顺序(例如,x然后y),以及处理奇点和不连续。

同时,你有什么经验可以分享关于用MATLAB进行数值积分?让我们知道在这里




发布与MATLAB®R2013b

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。