功能:采用三点高斯公式求解多重数值积分(有限区间积分)

格式:

[r,er,n]=IntergalMultiple(f,x,x1_a,x1_b,x2_a,x2_b,……,xn_a,xn_b,er0,n0,n_Max)
[r,er,n]=IntergalMultiple(f,x,x1_a,x1_b,x2_a,x2_b,……,xn_a,xn_b,er0,n0)
[r,er,n]=IntergalMultiple(f,x,x1_a,x1_b,x2_a,x2_b,……,xn_a,xn_b,er0)
[r,er,n]=IntergalMultiple(f,x,x1_a,x1_b,x2_a,x2_b,……,xn_a,xn_b)

f:符号变量,存储积分表达式
x:符号变量,存储各个积分的变量名称,每个变量名称以逗号分隔
x1_a,x2_a,……,xn_a分别对应x当中的第1、2、……、n个变量的下限,注意此变量可为数据可为表达式,但是第一个变量的积分下限x1_a必须为数据
x1_b,x2_b,……,xn_b分别对应x当中的第1、2、……、n个变量的上限,注意此变量可为数据可为表达式,但是第一个变量的积分上限x1_b必须为数据
er0:表示求解控制的相对误差,默认为1e-12
n0:可为数据或者矩阵变量,表示对x当中每个变量进行数值积分时复化数,默认为4
n_Max:可为数据或者矩阵变量,表示对x当中每个变量进行数值积分时最大的复化数,默认为4倍n0

r:返回的积分结果值
er:返回的求解结果的相对误差
n:返回的求解到此值时程序对x当中各个变量的复化深度

说明:

1、本积分函数与其它积分函数不同点之一是可对任意重函数进行数值积分,因此不局限于一重、二重、三重……
2、因为多重积分使用比较少,因此本函数不像一重、二重积分函数支持积分上下限为矩阵变量的情况。也就是说,每执行一次函数只求解一个积分限。
3、本函数随着积分维数增加,以及设置的复化数的增加计算耗时越长。对于追求精度较高的情况,建议将复化数n0设置偏大

原理:

1、多重积分,可分别对每一层采用单变量的积分算法进行数值积分
2、本积分算法对x当中的每个变量均采用三点高斯积分算法进行数值积分。

参考://王超能.数值分析简明教程[M].高等教育出版社,北京,2004,87页题3  

例子:

//对函数f=x^2*y*z积分,其中x、y、z积分区间分别为[0,1],[0,2*x+3],[0,x+4*y+1]，注意本函数准确结果为183821/504≈364.724206349206

f="x^2*y*z";x="x,y,z";[a,er,n]=IntergalMultiple(f,x,0,1,0,"2*x+3",0,"x+4*y+1")//回车得到如下结果
a =
[ 364.724206289715 ]
er =
[ 0.00000000000000 ]
n =
[ 8.00000000000000    8.00000000000000    4.00000000000000 ]

[a,er,n]=IntergalMultiple(f,x,0,1,0,"2*x+3",0,"x+4*y+1",1e-12,64)//如果把初始复化数都设为64,则输入本命令回车得到如下结果,可以发现精确位更多。注意这里1e-12是控制的误差
a =
[ 364.724206349206 ]
er =
[ 1.7053025658E-13 ]
n =
[ 128.000000000000    64.0000000000000    64.0000000000000 ]