2 如何使用 MATLAB 求解定积分、不定积分和多重积分问题

  • 4228
请先 登录 后评论

最佳答案

介绍几种 MATLAB 中求解积分的方法,首先是采用符号积分的方法,求解积分的符号函数为 \(int\),使用方法如下:

int(f,x,a,b)

例如计算如下积分函数:

$$\int \frac{1}{1+x^4}dx$$

$$\int_0^1 \frac{xe^x}{(1+x)^2}dx$$

$$\int_{-\infty}^{+\infty} \frac{dx}{x^2+2x+3}$$

MATLAB 代码如下:

syms x
y1=1/(1+x^4);
y2=(x*exp(x))/(1+x)^2;
y3=1/(x^2+2*x+3);
fy1=int(y1)
fy2=int(y2,0,1)
fy3=int(y3,-inf,+inf)

上述是一般情况下的积分函数求解,但是有时候我们会遇到双重积分,或者多重积分的情况 ,好在 MATLAB 有相关现成的函数可以利用,如求解函数 \(f(x,y)\) 在 \([a,b]X[c,d]\)区域的二重积分问题:

$$\underset {D}{\iint} {e^{-\frac{x^2}{2}}\sin(x^2+y)}dxdy$$

$$-x\le x \le 2,-1 \le y \le1$$

对应的可以使用 MATLAB 中的二重积分函数:

I=dblquad(f,a,b,c,d,tol,trace)

同样,如果是三重积分,可以使用三重积分函数:

I=triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol,method)

还有一种偷懒的方法,不管是二重、三重还是多重积分,都可以通过多次使用 \(int\)函数直接实现,如上面所列的三重积分函数,可以有如下的 MATLAB 写法:

int(int(int(f,z,z1(x,y),z2(x,y)),y,y1(x),y2(x)),x,a,b)

该方法也适合更多重积分。

符号积分是比较常用的求解积分的方法,但是有些积分函数的求解比较困难,这时需要使用数值积分方法,求解函数的近似值,这里主要介绍梯形积分法、变步长长积分法,以及 Lobatto 积分法、Gauss-Kronrod 积分法、自适应 Simpson 积分法,后面三种只简单引出积分函数的使用,重点介绍前面两种数值积分算法。

首先是梯形法数值积分,其适用于倍积分函数为离散数据的情况,使用该方法求解积分时,需要调用 MATLAB 中的 trapz 函数,调用方法如下:

I=trapz(x,y)

例如求解如下积分:

$$\int_{\frac{\pi}{4}}^{\frac{\pi}{2}}\frac{\sin x}{x}dx$$

求解时,MATLAB 代码如下:

clc,clear
format long
ac=@(x)sin(x)./x
x1=pi/4:pi/50:pi/2;
y1=ac(x1);
s1=trapz(x1,y1)
x2=pi/4:pi/100:pi/2;
y2=ac(x2);
s2=trapz(x2,y2)

另外一种是基于变步长辛普森法的数值积分方法,是用该方法是需要调用 MATLAB 中的 quad 函数,调用方法如下:

请先 登录 后评论

其它 0 个回答