📅  最后修改于: 2021-01-07 03:11:35             🧑  作者: Mango
积分∫f(x)dx的数值评估称为正交。
函数f(x)在某个时间间隔[a,b]上的数值积分的一般形式是在有限数量(N +1)个采样点(节点)上的函数值的加权总和,表示为“正交” ':
MATLAB提供了用于数字积分的内置函数:
它在自适应辛普森规则的基础上集成了超过指定限制的指定函数。遵循自适应规则,可以通过在积分范围内自适应地选择子区间的估计值,同时评估组成积分的总和来提高准确性。
它在自适应Lobatto正交的基础上集成了超过指定限制的指定函数。这个比四边形更准确,但是它也使用更多的函数求值。
quad和quad1的语法如下:
要使用quad1 ,请在语法中将quad替换为quad1 。如语法所示,这两个函数都要求我们提供被积分作为用户编写的函数。
可选的输入参数tol指定绝对公差(默认值为10 -6 )。另一个可选参数trace的非零值表示每个步骤的一些中间计算。
可选参数p1,p2等除了x之外,还作为输入参数传递给用户定义的函数。
使用这些内置函数进行数值积分的步骤包括:
步骤1:编写一个函数,该函数在给定x值的情况下返回被积f(x)的值。我们的函数应该能够接受输入值x作为向量,并产生被积数(输出)的值作为向量。
步骤2:决定使用哪个函数-quad或quad1 (quad更快,但不如quad1准确)。默认公差值是10 -6 。
让我们计算以下积分
这种集成与误差函数erf密切相关。
MATLAB还提供了误差函数erf作为内置函数,我们可以以闭合形式(根据误差函数)评估我们的积分,并比较数值积分的结果。让我们按照前面概述的步骤进行操作。
步骤1:下面是在给定的x的计算结果被积(x被允许为载体)的函数。
function y = erfcousin(x);
% ERFCOUSIN function to evaluate exp(-x^2)
y= exp(-x.^2); % the array operator .^ is used for vector x.
步骤2:让我们以最简单的语法使用quad:
>> y=quad ('erfcousin', 1/2, 3/2) % here a=1/2, b=3/2
y=
0.3949
积分的精确结果(最多10位小数)为0.3949073872。在前面的示例中,我们使用了默认公差。下表显示了使用积分进行的一些实验的结果。我们同时使用Quad和Quad1进行集成。对于四边形,我们将具有不同公差的结果制成表格。在表中,我们列出了积分的值,%误差和函数求值的数量。对于Quad1,仅提供默认公差即可提供相当准确的解决方案。
Function | tol | Answer | % Error | F-evals |
---|---|---|---|---|
quad | default | 0.3949073927 | 1.3907 x 10-6 | 17 |
10-7 | 0.3949073894 | 5.5506 x 10-7 | 25 | |
10-8 | 0.3949073873 | 2.4369 x 10-8 | 33 | |
quad1 | default | 0.3949073875 | 8.0616 x 10-8 | 18 |