1、1、符号积分符号积分由函数 int 来实现。该函数的一般调用格式为:int(s):没有指定积分变量和积分阶数时,系统按 findsym 函数指示的默认变量对被积函数或符号表达式 s 求不定积分;int(s,v):以 v 为自变量,对被积函数或符号表达式 s 求不定积分;int(s,v,a,b):求定积分运算。a,b 分别表示定积分的下限和上限。该函数求被积函数在区间a,b上的定积分。a 和 b 可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数 f 关于变量 x 在闭区间a,b上可积时,函数返回一个定积分结果。当 a,b 中有一个是 inf 时,函数返回一个广义积分。当
2、 a,b 中有一个符号表达式时,函数返回一个符号函数。例:求函数 x2+y2+z2 的三重积分。内积分上下限都是函数,对 z 积分下限是sqrt(x*y),积分上限是 x2*y;对 y 积分下限是 sqrt(x),积分上限是 x2;对 x 的积分下限 1,上限是 2,求解如下:syms x y z %定义符号变量F2=int(int(int(x2+y2+z2,z,sqrt(x*y),x2*y),y,sqrt(x),x2),x,1,2) %注意定积分的书写格式NORMINV(probability,mean,standard_dev) Probability 正态分布的概率值。 Mean 分布的
3、算术平均值。 Standard_dev 分布的标准偏差。 F2 =1610027357/6563700-6072064/348075*2(1/2)+14912/4641*2(1/4)+64/225*2(3/4) %给出有理数解VF2=vpa(F2) %给出默认精度的数值解VF2 =224.92153573331143159790710032805二、数值积分1.数值积分基本原理求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)法、牛顿柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间a,b分成 n 个子区间xi,xi+1,i=1,2,
4、n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。2.数值积分的实现方法基于变步长辛普生法,MATLAB 给出了 quad 函数来求定积分。该函数的调用格式为:I,n=quad(fname,a,b,tol,trace)基于变步长、牛顿柯特斯(Newton-Cotes)法,MATLAB 给出了 quadl 函数来求定积分。该函数的调用格式为:I,n=quadl(fname,a,b,tol,trace)其中 fname 是被积函数名。a 和 b 分别是定积分的下限和上限。tol 用来控制积分精度,缺省时取 tol=0.001。trace 控制是否展现积分过程,若取非 0 则展现积分
5、过程,取 0 则不展现,缺省时取 trace=0。返回参数 I 即定积分值,n 为被积函数的调用次数。例:求函数exp(-x*x)的定积分,积分下限为 0,积分上限为 1。fun=inline(exp(-x.*x),x); %用内联函数定义被积函数 fnameIsim=quad(fun,0,1) %辛普生法Isim =0.746824180726425IL=quadl(fun,0,1) %牛顿柯特斯法IL =0.746824133988447三、梯形法求向量积分trapz(x,y)梯形法沿列方向求函数 Y 关于自变量 X 的积分(向量形式,数值方法)。d=0.001;x=0:d:1;S=d*t
6、rapz(exp(-x.2)S= 0.7468或:format long gx=0:0.001:1; %x 向量,也可以是不等间距y=exp(-x.2); %y 向量,也可以不是由已知函数生成的向量S=trapz(x,y); %求向量积分S =0.746824071499185int 的积分可以是定积分,也可以是不定积分(即有没有积分上下限都可以积)可以得到解析的解,比如你对 x2 积分,得到的结果是 1/3*x3,这是通过解析的方法来解的。如果 int(x2,x,1,2)得到的结果是 7/3quad 是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson 数值积分来求得
7、的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。如果 f=inline(x.2);quad(f,1,2)得到的结果是 2.333333,这个数并不是 7/3int 是符号解,无任何误差,唯一问题是计算速度;quad 是数值解,有计算精度限制,优点是总是能有一定的速度,即总能在一定时间内给出一个一定精度的解。 FROM: 58.192.116.*对于 y=exp(-(x.2+x+1)/(1+x),被积函数之原函数无“封闭解析表达式“,符号计算无法解题,这是符号计算有限性,结果如下: syms xy=exp(-(x.2+x+1)/(1+x)s=int(y,x,0
8、,inf) y =exp(-x2-x-1)/(1+x)Warning: Explicit integral could not be found. In sym.int at 58 s =int(exp(-x2-x-1)/(1+x),x = 0 . Inf)只有通过数值计算解法 dx=0.05; %采样间隔 x=0:dx:1000; %数值计算适合于有限区间上,取有限个采样点,只要终值足够大,精度不受影响y=exp(-(x.2+x+1)./(1+x);S=dx*cumtrapz(y); %计算区间内曲线下图形面积,为小矩形面积累加得S(end) ans =0.5641 %所求定积分值或进行编程
9、,积分上限人工输入,程序如下:%表达式保存为函数文件function y=fxy(x)y=exp(-(x.2+x+1)./(1+x); % save fxy.m% main -主程序clear,clch=.001;p=0;a=0;R=input(请输入积分上限,R=)while a0 e1=2; end end if n2=0 e2=1; else if n20 e2=2; end end if n3=0 e3=1; else if n30 e3=2; end end F=(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n
10、3*pi*z/9); S=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5) %求三重数值积分将以上代码保存为 Fn.m 程序文件,即 m 文件,然后运行: Fn(1,1,1)S =866.9655 FROM: 211.65.33.*三重积分请用三重积分函数 triplequad,与三个积分上下限对应,即x=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5)其中被积函数 F 用“匿名函数“来表达,即 F=(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9); 如果
11、直接用 inline 或字符串的形式,则表达式中的未知数有 9 个,分别是e1,e2,e3,n1,n2,n3,x,y,z。而用匿名函数时,已知变量 e1,e2,e3,n1,n2,n3 就会以常数看待,未知数就只有 x,y,z 了。 完整函数程序: function Fn(n1,n2,n3) if n1=0 e1=1; else if n10 e1=2; end end if n2=0 e2=1; else if n20 e2=2; end end if n3=0 e3=1; else if n30 e3=2; end end F=(x,y,z)sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9); x=triplequad(F,-6,6,-5.5,5.5,-4.5,4.5) Fn(1,1,1)x =866.9655 FROM: 58.192.116.*