1楼:李快来
解:复杂的不定积分
用积分公式计算
积分是求导的逆运算
有函数,就有不定积分函数。
求助利用matlab进行复杂函数的定积分方法! 详情见补充,多谢了!
2楼:菰晓月寒
只要不是不定积分要求得到积分后的表达式,能实际计算出结果的积分就是定积分了。定积分不就是求函数在某区间或领域下的面积或体积么,所以可以用梯形法之类的方法来近似求解这个面积。比如说步长为h,那么求出f(0),f(h),f(2h),......
f(nh),
则f(x)在0~nh的定积分得到的面积就是h*(f(0)+f(h)+...+f(nh))。
matlab给出的求解积分的函数指令为intf=int(f,v,a,b),表示对f求指定变量v的定积分,积分区间为[a,b]。当v缺省时,由symvar确认变量,当a,b缺省时,则是求f指定变量的不定积分。
3楼:匿名用户
一、符号积分符号积分由函数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时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。
例:求函数x^2+y^2+z^2的三重积分。内积分上下限都是函数,对z积分下限是sqrt(x*y),积分上限是x^2*y;对y积分下限是sqrt(x),积分上限是x^2;对x的积分下限1,上限是2,求解如下:
>>syms x y z %定义符号变量》f2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) %注意定积分的书写格式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,…,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则展现积分过程,取0则不展现,缺省时取trace=0。返回参数i即定积分值,n为被积函数的调用次数。
例:求函数'exp(-x*x)的定积分,积分下限为0,积分上限为1。>>fun=inline('exp(-x.
*x)','x'); %用内联函数定义被积函数fname
>>isim=quad(fun,0,1) %辛普生法isim = 0.746824180726425 il=quadl(fun,0,1) %牛顿-柯特斯法il = 0.746824133988447
三、梯形法求向量积分trapz(x,y)—梯形法沿列方向求函数y关于自变量x的积分(向量形式,数值方法)。>>d=0.001; >>x=0:
d:1; >>s=d*trapz(exp(-x.^2)) s= 0.
7468 或:>>format long g >>x=0:0.
001:1; %x向量,也可以是不等间距》y=exp(-x.^2); %y向量,也可以不是由已知函数生成的向量》s=trapz(x,y); %求向量积分s = 0.
746824071499185 int的积分可以是定积分,也可以是不定积分(即有没有积分上下限都可以积)可以得到解析的解,比如你对x^2积分,得到的结果是1/3*x^3,这是通过解析的方法来解的。如果int(x^2,x,1,2)得到的结果是7/3 quad是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson数值积分来求得的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。如果f=inline('x.
^2');quad(f,1,2)得到的结果是2.333333,这个数并不是7/3 int是符号解,无任何误差,唯一问题是计算速度;quad是数值解,有计算精度限制,优点是总是能有一定的速度,即总能在一定时间内给出一个一定精度的解。[from:
58.192.116.
*] 对于y=exp(-(x.^2+x+1)/(1+x)),被积函数之原函数无"封闭解析表达式",符号计算无法解题,这是符号计算有限性,结果如下:>> syms x >>y=exp(-(x.
^2+x+1)/(1+x)) >>s=int(y,x,0,inf) y = exp((-x^2-x-1)/(1+x))
warning: explicit integral could not be found. >> in sym.
int at 58 s = int(exp((-x^2-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 %所求定积分值或进行编程,积分上限人工输入,程序如下:%表达式保存为函数文件function y=fxy(x) y=exp(-(x.
^2+x+1)./(1+x)); % save fxy.m % main --------主程序clear,clc h=.
001;p=0;a=0; r=input('请输入积分上限,r=') while a0 e1=2; end end if n2==0 e2=1; else if n2>0 e2=2; end end if n3==0 e3=1; else if n3>0 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); 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); 如果直接用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 n1>0 e1=2; end end if n2==0 e2=1; else if n2>0 e2=2; end end if n3==0 e3=1; else if n3>0 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.*]
问几个关于数学微积分方面的问题百思不得其解
1楼 无聊所以无畏 1 能直接看出来的恐怕是高斯在世了吧。如果不相信导数可以试着二项式,像这样 1 1 n 的n 1次幂 1 n 1 n n 1 n 2 1 n 2 n 1 n n 1 3 1 n 3 1 1 n 1 的n 2次幂 1 n 2 n 1 n 2 n 1 2 1 n 1 2 n 2 n ...