📜  MATLAB数值积分

📅  最后修改于: 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。在前面的示例中,我们使用了默认公差。下表显示了使用积分进行的一些实验的结果。我们同时使用QuadQuad1进行集成。对于四边形,我们将具有不同公差的结果制成表格。在表中,我们列出了积分的值,%误差和函数求值的数量。对于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