在MATLAB中,如何利用triplequad函数求三元函数的积分
在MATLAB语言中,使用triplequad函数求三元函数的积分。其使用格式如下。
·triplequad(fun,XMAM,YMIN,YMAX,ZMIN,ZMAX)命令求函数fun(x,y,z)在矩形区间[XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX]上的积分值。函数fun(x,y,z)必须接受向量x以及标量y和z并返回一个积分向量。
·triplequad(fun,XMAM,YMIN,YMAX,ZMIN,ZMAX,tol)命令使用tol作为允许的误差值,取y代默认值1.e-6。
·triplequad(fun,XMAM,YMIN,YMAX,ZMIN,ZMAX,tol,@quadl)命令使用指定的算法代替y默认的算法quad。
·triplequad(fun,XMAM,YMIN,YMAX,ZMIN,ZMAX,tol,ZMIN,ZMAX,@myquadf)命令使用自定义的算法myquadf取代默认值quad。函数myquadf必须和quad与quadl两函数有相同调用次序的函数句柄。
ytriplequad(fun,XMAM,YMIN,YMAX,ZMIN,ZMAX,tol,@quadl,·1,p2,…)命令将可选参数p1,p2,…等传递函数fun(x,y,p1,p2,…)。若tol和quadl都是空矩阵时,则使用默认函数精度和算法quad。
例题 使用triplequad函数求三元函数f=y sin(x)+zcos(x)的积分
输入程序如下:
>> Q=triplequad(inline('y*sin(x)+z*cos(x)'),0,pi,0,1,-1,1)
Q =
2.0000
>> Q=triplequad(inline('y*sin(x)+z*cos(x)'),0,pi,0,1,-1,1,1.e-9)
Q =
2.0000
>> vpa(Q,10)
ans =
2.0
可见,ans=2.0000即为本例的精确值。此外,用户还可以使用如下形式来求解积分值。
>> Q=triplequad(@integrnd,0,pi,0,1,-1,1)
Q =
2.0000
其中integrnd函数的M文件如下:
function f=integrnd(x,y,z)
f=y*sin(x)+z*cos(x);
end