当前位置:文档之家› matlab求定积分之实例说明

matlab求定积分之实例说明

matlab求定积分之实例说明
matlab求定积分之实例说明

一、符号积分

符号积分由函数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 a

p=p+(fxy(a)+fxy(a+h))*h/2;

a=a+h;

end

p=vpa(p,10)

运行主程序后得到结果:

请输入积分上限,R=1000

R =

1000

p =

.5641346055

其它结果如下:

0-1: int=.3067601686

0-2: int=.4599633159

0-5: int=.5583068217

0-10: int=.5640928975

0-100: int=.5641346055

0-1000: int=.5641346055

[FROM: 211.65.33.*]

在积分函数中,

sqrt(e1*e2*e3)*cos(n1*pi*x/12).*cos(n2*pi*y/11).*cos(n3*pi*z/9);已知变量e1,e2,e3,n1,n2,n3通过函数参数输入,如果直接用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);

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.*]

用递推公式计算定积分(matlab版)

用递推公式计算定积分 实验目的: 1.充分理解不稳定的计算方法会造成误差的积累,在计算过程中会导致误差的迅速增加,从而使结果产生较大的误差。 2.在选择数值计算公式来进行近似计算时,应学会选用那些在计算过程中不会导致误差迅速增长的计算公式。 3.理解不稳定的计算公式造成误差积累的来源及具体过程; 4.掌握简单的matlab语言进行数值计算的方法。 实验题目: 对n=0,1,2,…,20,计算定积分: 实验原理: 由于y(n)= = – 在计算时有两种迭代方法,如下: 方法一: y(n)=– 5*y(n-1),n=1,2,3, (20) 取y(0)= = ln6-ln5 ≈ 0.182322 方法二: 利用递推公式:y(n-1)=-*y(n),n=20,19, (1) 而且,由 = * ≤≤* =

可取:y(20)≈*()≈0.008730. 实验容: 对算法一,程序代码如下: function [y,n]=funa() syms k n t; t=0.182322; n=0; y=zeros(1,20); y(1)=t; for k=2:20 y(k)=1/k-5*y(k-1); n=n+1; end y(1:6) y(7:11) 对算法二,程序代码如下: %计算定积分; %n--表示迭代次数; %y用来存储结果; function [y,n]=f(); syms k y_20;

y=zeros(21,1); n=1; y_20=(1/105+1/126)/2; y(21)=y_20; for k=21:-1:2 y(k-1)=1/(5*(k-1))-y(k)/5; n=n+1; end 实验结果: 由于计算过程中,前11个数字太小,后9个数字比较大,造成前面几个数字只显示0.0000的现象,所以先输出前6个,再输出7—11个,这样就能全部显示出来了。 算法一结果: [y,n]=funa %先显示一y(1)—y(6) ans = 0.1823 -0.4116 2.3914 -11.7069 58.7346

数值积分算法与MATLAB实现陈悦5133201讲解

东北大学秦皇岛分校 数值计算课程设计报告 数值积分算法及MATLAB实现 学院数学与统计学院 专业信息与计算科学 学号5133201 姓名陈悦 指导教师姜玉山张建波 成绩 教师评语: 指导教师签字: 2015年07月14日

1 绪论 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值检索方其理论与软件的实现.而数值分析主要研究数值计算. 现科学技术的发展与进步提出了越来越多的复杂的数值计算问题,这些问题的圆满解决已远人工手算所能胜任,必须依靠电子计算机快速准确的数据处理能力.这种用计算机处理数值问题的方法,成为科学计算.今天,科学计算的应用范围非常广泛,天气预报、工程设计、流体计算、经济规划和预测以及国防尖端的一些科研项目,如核武器的研制、导弹和火箭的发射等,始终是科学计算最为活跃的领域. 1.1 数值积分介绍 数值积分是数值分析的重要环节,实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相联系. 求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的.另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解.由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题.对微积分学做出杰出贡献的数学大师,如I.牛顿、L.欧拉、C.F.高斯、拉格朗日等人都在数值积分这个领域作出了各自的贡献,并奠定了这个分支的理论基础. 构造数值积分公式最通常的方法是用积分区间上的n 次插值多项式代替被积函数,由此导出的求积公式称为插值型求积公式.特别在节点分布等距的情形称为牛顿-科特斯公式,例如梯形公式(Trapezoidal Approximations)与抛物线公式(Approximations Using Parabolas)就是最基本的近似公式.但它们的精度较差.龙贝格算法是在区间逐次分半过程中,对梯形公式的近似值进行加权平均获得准确程度较高的积分近似值的一种方法,它具有公式简练、计算结果准确、使用方便、稳定性好等优点,因此在等距情形宜采用龙贝格求积公式(Rhomberg Integration).当用不等距节点进行计算时,常用高斯型求积公式计算,它在节点数目相同情况下,准确程度较高,稳定性好,而且还可以计算无穷积分.数值积分还是微分方程数值解法的重要依据.许多重要公式都可以用数值积分方程导出.现探讨数值积分算法以及运用MATLAB软件的具体实现

matlab求定积分之实例说明

一、符号积分 符号积分由函数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

用MATLAB算多元函数积分

用MATLAB 计算多元函数的积分 三重积分的计算最终是化成累次积分来完成的,因此只要能正确的得出各累次积分的积分限,便可在MA TLAB 中通过多次使用int 命令来求得计算结果。但三重积分的积分域Ω是一个三维空间区域,当其形状较复杂时,要确定各累次积分的积分限会遇到一定困难,此时,可以借助MATLAB 的三维绘图命令,先在屏幕上绘出Ω的三维立体图,然后执行命令 rotate3d on ↙ 便可拖动鼠标使Ω的图形在屏幕上作任意的三维旋转,并且可用下述命令将Ω的图形向三个坐标平面进行投影: view(0,0),向XOZ 平面投影; view(90,0),向YOZ 平面投影; view(0,90),向XOY 平面投影. 综合运用上述方法,一般应能正确得出各累次积分的积分限。 例11.6.1计算zdv Ω ???,其中Ω是由圆锥曲面222z x y =+与平面z=1围成的闭区域 解 首先用MA TLAB 来绘制Ω的三维图形,画圆锥曲面的命令可以是: syms x y z ↙ z=sqrt(x^2+y^2); ↙ ezsurf(z,[-1.5,1.5]) ↙ 画第二个曲面之前,为保持先画的图形不会被清除,需要执行命令 hold on ↙ 然后用下述命令就可以将平面z=1与圆锥面的图形画在一个图形窗口内: [x1,y1]=meshgrid(-1.5:1/4:1.5); ↙ z1=ones(size(x1)); ↙ surf(x1,y1,z1) ↙ 于是得到Ω的三维图形如图:

由该图很容易将原三重积分化成累次积分: 111zdv dy -Ω=???? 于是可用下述命令求解此三重积分: clear all ↙ syms x y z ↙ f=z; ↙ f1=int(f,z.,sqrt(x^2+ y^2),1); ↙ f2=int(f1,x,-sqrt(1- y^2), sqrt(1- y^2)); ↙ int(f2,y,-1,1) ↙ ans= 1/4*pi 计算结果为4 π 对于第一类曲线积分和第一类曲面积分,其计算都归结为求解特定形式的定积分和二重积分,因此可完全类似的使用int 命令进行计算,并可用diff 命令求解中间所需的各偏导数。 例11.6.2用MATLAB 求解教材例11.3.1 解 求解过程如下 syms a b t ↙ x=a*cos(t); ↙ y=a*sin(t); ↙ z=b*t; ↙ f=x^2 +y^2+z^2; ↙ xt=diff(x,t); ↙ yt=diff(y,t); ↙ zt=diff(z,t); ↙ int(f*sqrt(xt^2 +yt^2+zt^2),t,0,2*pi) ↙ ans= 2/3*( a^2 +b^2)^1/2*a^2*pi+8/3*( a^2 +b^2)^1/2*b^2*pi^3 对此结果可用factor 命令进行合并化简: factor (ans ) ans= 2/3*( a^2 +b^2)^1/2*pi*(3* a^2 +4*b^2*pi^2) 例11.6.3用MATLAB 求解教材例11.4.1 解 求解过程如下 syms x y z1 z2↙ f= x^2 +y^2; ↙ z1=sqrt(x^2 +y^2); ↙ z2=1; ↙ z1x=diff(z1,x); ↙ z1y=diff(z1,y); ↙ z2x=diff(z2,x); ↙ z2y=diff(z2,y); ↙

详解Matlab求积分的各种方法

详解Matlab求积分的各种方法 一、符号积分由函数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 =57/-

/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4) %给出有理数 解>>VF2=vpa(F2) %给出默认精度的数值解VF2 = 224.9 232805二、数值积分 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.0 01。 trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace= 0。

数值积分的matlab实现

实验10 数值积分 实验目的: 1.了解数值积分的基本原理; 2.熟练掌握数值积分的MATLAB 实现; 3.会用数值积分方法解决一些实际问题。 实验内容: 积分是数学中的一个基本概念,在实际问题中也有很广泛的应用。同微分一样,在《微积分》中,它也是通过极限定义的,由于实际问题中遇到的函数一般都以列表形式给出,所以常常不能用来直接进行积分。此外有些函数虽然有解析式,但其原函数不是初等函数,所以仍然得不到积分的精确值,如不定积分?1 0 d sin x x x 。这时我们一般考虑用数值方法计算其 近似值,称为数值积分。 10.1 数值微分简介 设函数()y f x =在* x 可导,则其导数为 h x f h x f x f h ) ()(lim )(**0* -+='→ (10.1) 如果函数()y f x =以列表形式给出(见表10-1),则其精确值无法求得,但可由下式求得其近似值 h x f h x f x f ) ()()(*** -+≈' (10.2) 表 10-1 一般的,步长h 越小,所得结果越精确。(10.2)式右端项的分子称为函数()y f x =在 *x 的差分,分母称为自变量在*x 的差分,所以右端项又称为差商。数值微分即用差商近似 代替微商。常用的差商公式为: 000()() ()2f x h f x h f x h +--'≈ (10.3) h y y y x f 243)(2 100-+-≈ ' (10.4)

h y y y x f n n n n 234)(12+-≈ '-- (10.5) 其误差均为2 ()O h ,称为统称三点公式。 10.2 数值微分的MATLAB 实现 MATLAB 提供了一个指令求解一阶向前差分,其使用格式为: dx=diff(x) 其中x 是n 维数组,dx 为1n -维数组[]21321,, ,n x x x x x x ---,这样基于两点的数值导 数可通过指令diff(x)/h 实现。对于三点公式,读者可参考例1的M 函数文件diff3.m 。 例1 用三点公式计算()y f x =在=x 1.0,1.2,1.4处的导数值,()f x 的值由下表给 解:建立三点公式的M 函数文件diff3.m 如下: function f=diff3(x,y) n=length(x);h=x(2)-x(1); f(1)=(-3*y(1)+4*y(2)-y(3))/(2*h); for j=2:n-1 f(j)=(y(j+1)-y(j-1))/(2*h); end f(n)=(y(n-2)-4*y(n-1)+3*y(n))/(2*h); 在MATLAB 指令窗中输入指令: x=[1.0,1.1,1.2,1.3,1.4];y=[0.2500,0.2268,0.2066,0.1890,0.1736];diff3(x,y) 运行得各点的导数值为:-0.2470,-0.2170,-0.1890,-0.1650,-0.0014。所以()y f x =在=x 1.0,1.2,1.4处的导数值分别为-0.2470,-0.1890和-0.0014。 对于高阶导数,MATLAB 提供了几个指令借助于样条函数进行求导,详细使用步骤如下: step1:对给定数据点(x,y ),利用指令pp=spline(x,y),获得三次样条函数数据pp ,供后面ppval 等指令使用。其中,pp 是一个分段多项式所对应的行向量,它包含此多项式的阶数、段数、节点的横坐标值和各段多项式的系数。 step2:对于上面所求的数据向量pp ,利用指令[breaks,coefs,m,n]=unmkpp(pp)进行处理,生成几个有序的分段多项式pp 。 step3:对各个分段多项式pp 的系数,利用函数ppval 生成其相应导数分段多项式的系数,再利用指令mkpp 生成相应的导数分段多项式 step4:将待求点xx 代入此导数多项式,即得样条导数值。 上述过程可建立M 函数文件ppd.m 实现如下: function dy=ppd(pp) [breaks,coefs,m]=unmkpp(pp);

MATLAB计算积分

函数的积分和椭圆的周长 1.正弦函数的积分 [问题]求正弦函数从0到π的积分 y = sin x 当x = 0时,积分为0,画出积分的函数曲线。 [数学模型] 定积分的结果为 ππ00 sin d cos 2S x x x ==-=? 不定积分的结果为 sin d cos I x x x C ==-+? 其中C 是积分常量,由初始条件决定。当x = 0时,积分为I = 0,必有C = 1。结果为 I = -cos x + 1 [算法]根据积分的基本概念,将积分区域分为多份,用矩形法求曲线下的近似面积表示积分的近似值 1()n i i S f x x ==?∑ 矩形法的函数是sum(f)。 用梯形法求曲线下的近似面积表示积分的近似值 1 101[()()]2 n i i i S f x f x x -+==+?∑ 梯形法的函数是trapz(f)。 用数值积分的函数是quad 和quadl ,常用使用格式是 S = quad(f,a,b) 其中,f 表示被积函数,a 表示积分的下限,b 表示积分的下限。 用符号的函数是int ,常用使用格式是 S = int(f,a,b) [程序]zqy4_1.m 如下。 %正弦函数的积分 clear %清除变量 x=linspace(0,pi); %自变量向量 dx=x(2); %间隔 y=sin(x); %被积函数 s1=sum(y)*dx %矩形法积分 s2=trapz(y)*dx %梯形法积分 f=inline('sin(x)'); %被积的内线函数 s3=quad(f,0,pi) %数值定积分

s4=int('sin(x)',0,pi) %符号积分 sc1=cumsum(y)*dx; %矩形法累积积分(精度稍差) sc2=cumtrapz(y)*dx; %梯形法累积积分 figure %创建图形窗口 plot(x,-cos(x)+1,x,sc1,'.',x,sc2,'o') %画解析式和矩阵法以及梯形法积分曲线 s=int('sin(x)') %符号积分 sc3=subs(s,'x',x); %替换数值求符号积分的值 C=-sc3(1) %求积分常数 hold on %保持图像 plot(x,sc3+C,'c*') %画符号法积分曲线 grid on %加网格 fs=16; %字体大小 xlabel('\itx','FontSize',fs) %横坐标 ylabel('\intsin\itx\rmd\itx','FontSize',fs)%纵坐标 title('正弦函数的积分','FontSize',fs) %标题 legend('解析解','矩形法','梯形法','符号法')%图例 zqy4.1图 zqy4.2图 2.三角函数和指数的积分 [问题]求如下函数的积分 y = e ax sin bx 其中a = 0.5,b = 2。积分下限为0。画出积分的函数曲线。 [数学模型] 设 11e sin d sin de {e sin e cos d }ax ax ax ax I bx x bx bx b bx x a a == =-??? 11{e sin cos de }{e sin [e cos e sin d ]}ax ax ax ax ax b b bx bx bx bx b bx x a a a a =-=-+?? 因此不定积分为 221e (sin cos )ax I a bx b bx C a b =-++ 当x = 0时,I 应该为零,所以 22b C a b =+

MATLAB实验三-定积分的近似计算

实验三定积分的近似计算 一、问题背景与实验目的 利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分. 本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用. 二、相关函数(命令)及简介 1.sum(a):求数组a的和. 2.format long:长格式,即屏幕显示15位有效数字. (注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值. 4.quad():抛物线法求数值积分. 格式: quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即 .*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2); 5.trapz():梯形法求数值积分. 格式:trapz(x,y) 其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun) 例:计算 0sin()d x x π ? x=0:pi/100:pi;y=sin(x); trapz(x,y) 6.dblquad():抛物线法求二重数值积分. 格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递. 例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi) 顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法. Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi)例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi) 这时必须存在一个函数文件integrnd.m:

[整理]Matlab积分.

一.数值积分的实现方法 1.变步长辛普生法 基于变步长辛普生法,MA TLAB给出了quad函数来求定积分。该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace) 其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分精度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。 例8-1 求定积分。 (1) 建立被积函数文件fesin.m。 function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数quad求定积分。 [S,n]=quad('fesin',0,3*pi) S = 0.9008 n = 77 2.牛顿-柯特斯法 基于牛顿-柯特斯法,MA TLAB给出了quad8函数来求定积分。该函数的调用格式为:[I,n]=quad8('fname',a,b,tol,trace) 其中参数的含义和quad函数相似,只是tol的缺省值取10-6。?该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。 (1) 被积函数文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x)); (2) 调用函数quad8求定积分。 I=quad8('fx',0,pi) I = 2.4674 分别用quad函数和quad8函数求定积分的近似值,并在相同的积分精度下,比较函数的调用次数。 调用函数quad求定积分: format long; fx=inline('exp(-x)'); [I,n]=quad(fx,1,2.5,1e-10) I = 0.28579444254766 n = 65 调用函数quad8求定积分: format long; fx=inline('exp(-x)'); [I,n]=quad8(fx,1,2.5,1e-10) I = 0.28579444254754 n = 33

最新matlab求定积分之实例说明

m a t l a b求定积分之实 例说明

一、符号积分 符号积分由函数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)法等都是经常采用的方法。它们的基本思想都是将

用MATLAB算多元函数积分

用MATLAB算多元函数积分

————————————————————————————————作者:————————————————————————————————日期:

用MATLAB 计算多元函数的积分 三重积分的计算最终是化成累次积分来完成的,因此只要能正确的得出各累次积分的积分限,便可在MA TLAB 中通过多次使用int 命令来求得计算结果。但三重积分的积分域Ω是一个三维空间区域,当其形状较复杂时,要确定各累次积分的积分限会遇到一定困难,此时,可以借助MATLAB 的三维绘图命令,先在屏幕上绘出Ω的三维立体图,然后执行命令 rotate3d on ↙ 便可拖动鼠标使Ω的图形在屏幕上作任意的三维旋转,并且可用下述命令将Ω的图形向三个坐标平面进行投影: view(0,0),向XOZ 平面投影; view(90,0),向YOZ 平面投影; view(0,90),向XOY 平面投影. 综合运用上述方法,一般应能正确得出各累次积分的积分限。 例11.6.1计算zdv Ω ???,其中Ω是由圆锥曲面222z x y =+与平面z=1围成的闭区域 解 首先用MA TLAB 来绘制Ω的三维图形,画圆锥曲面的命令可以是: syms x y z ↙ z=sqrt(x^2+y^2); ↙ ezsurf(z,[-1.5,1.5]) ↙ 画第二个曲面之前,为保持先画的图形不会被清除,需要执行命令 hold on ↙ 然后用下述命令就可以将平面z=1与圆锥面的图形画在一个图形窗口内: [x1,y1]=meshgrid(-1.5:1/4:1.5); ↙ z1=ones(size(x1)); ↙ surf(x1,y1,z1) ↙ 于是得到Ω的三维图形如图:

MATLAB复化梯形法与龙贝格法计算定积分

姓名:樊元君学号:2012200902 日期:2012.11.06 1.实验目的: 掌握复化梯形法与龙贝格法计算定积分。 2.实验内容: 分别写出变步长梯形法与龙贝格法计算定积分的算法,编写程序上机调试出结果,要求所编程序适用于任何类型的定积分,即能解决这一类问题,而不是某一个问题。实验中以下列数据验证程序的正确 性。求。

3.程序流程图: ●变步长梯形法流程图:

●龙贝格法流程图: 4.源程序: ●变步长梯形法: function [ y ] =BTX(a,b,e) a=input('a='); b=input('b='); e=input('e='); h=(b-a); t1=((f(a)+f(b))*h)/2; t2=0; %准备初值%

while abs(t2-t1)>e %while语句控制计算精度以及控制计算时长if t2~=0 %按照变步长梯形法 h=h/2; %递推公式求二分后积分值 t1=t2; end s=0; x=a+h/2; while x

实验四 用matlab计算积分

实验四 用matlab 计算积分 4.1积分的有关理论 定积分:积分是微分的无限和,函数)(x f 在区间],[b a 上的积分定义为 ∑ ? =→??= = n i i i x b a x f dx x f I i 1 )max()(lim )(ξ 其中 . ,,2,1),,(,,1110n i x x x x x b x x x a i i i i i i n =∈-=?=<<<=--ξ从几何意义上说,对 于],[b a 上非负函数)(x f ,记分值I 是曲线)(x f y =与直线b x a x ==,及x 轴所围的曲边梯形的面积。有界连续(或几何处处连续)函数的积分总是存在的。 微积分基本定理(Newton-Leibniz 公式):)(x f 在],[b a 上连续,且 ],[),()('b a x x f x F ∈=,则有 ) ()()(a F b F dx x f b a -=? 这个公式表明导数与积分是一对互逆运算,它也提供了求积分的解析方法:为了求)(x f 的定积分,需要找到一个函数)(x F ,使)(x F 的导数正好是)(x f ,我们称)(x F 是)(x f 的原函数或不定积分。不定积分的求法有学多数学技巧,常用的有换元积分和分部积分法。从理论上讲,可积函数的原函数总是存在的,但很多被积函数的原函数不能用初等函数表示,也就是说这些积分不能用解析方法求解,需用数值积分法解决。 在应用问题中,常常是利用微分进行分析,而问题最终归结为微分的和(即积分)。一些更复杂的问题是含微分的方程,不能直接积分求解。 多元函数的积分称为多重积分。二重积分的定义为 ∑∑ ?? ??= →?+?i j j i j i y x G y x f dxdy y x f i i ),(lim ),(0 )max(2 2 ηξ 当),(y x f 非负时,积分值表示曲顶柱体的体积。二重积分的计算主要是转换为两次单积分来解决,无论是解析方法还是数值方法,如何实现这种转换,是解决问题的关键。 4.2积分的数值方法 梯形法:将],[b a 划分为若干小区间 ,. 10b x x x a n =<<<= 则 ∑? ? =-= = n i x x b a i i dx x f dx x f I 1 1 )()( 在每一小区间 ] ,[1i i x x -上)(x f 近似为一直线,用弦代替,有 )) ()((2 )(11 1 i i i i x x x f x f x x dx x f i i +-≈ --? -

matlab实验报告--定积分的近似计算 -

数学实验报告 实验序号:2 日期:2013 年11 月30日班级应数二班姓名丁慧娜学号1101114088 实验名称定积分的近似计算 实验所用软件及版本MATLAB R2012b 问题背景描述: 利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分. 实验目的: 1、本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、 抛物线法。 2、加深理解积分运算中分割、近似、求和、取极限的思想方法。 3、学习fulu2sum.m的程序设计方法,尝试用函数sum 改写附录1和 附录3的程序,避免for 循环。 实验原理与数学模型: 1.矩形法 根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即

在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度. 针对不同的取法,计算结果会有不同。 (1)左点法:对等分区间 ,在区间上取左端点,即取。 (2)右点法:同(1)中划分区间,在区间上取右端点,即取。 (3)中点法:同(1)中划分区间,在区间上取中点,即取。2.梯形法 等分区间 , 相应函数值为(). 曲线上相应的点为() 将曲线的每一段弧用过点,的弦(线性函数)来代替,这使得

每个上的曲边梯形成为真正的梯形,其面积为 ,. 于是各个小梯形面积之和就是曲边梯形面积的近似值, , 即, 称此式为梯形公式。 3.抛物线法 将积分区间作等分,分点依次为 ,,对应函数值为 (), 曲线上相应点为 (). 现把区间上的曲线段用通过三点,,的抛物线

Matlab数值积分函数

一.相关函数: %符号积分 int(f,v) int(f,v,a,b) %数值积分 trapz(x,y)%梯形法沿列方向求函数Y关于自变量X的积分 cumtrapz(x,y)%梯形法沿列方向求函数Y关于自变量X的累计积分 quad(fun,a,b,tol)%采用递推自适应Simpson法计算积分 quad1(fun,a,b,tol)%采用递推自适应Lobatto法求数值积分 dbquad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%二重(闭型)数值积分指令triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%三重(闭型)数值积分指令 二.示例: 例1:计算f(t)=exp(-t^2)在[0,1]上的定积分 本例演示:计算定积分常用方法 >>symsx int(exp(-x^2),0,1) ans= 1/2*erf(1)*pi^(1/2) %erf为误差函数 >>vpa(int(exp(-x^2),0,1)) ans= .7468241328124270 >>d=0.001;x=0:d:1;d*trapz(exp(-x.^2)) ans= 0.7468 >>quad('exp(-x.^2)',0,1,1e-8) ans= 0.7468 例2:计算f(t)=1/log(t)在[0,x],01^-处为负无穷 本例演示:用特殊函数表示的积分结果,如何用mfun指令

(1) symstx ft=1/log(t); sx=int(ft,t,0,x) sx= -Ei(1,-log(x)) %完全椭圆函数 (2) x=0.5:0.1:0.9 sx_n=-mfun('Ei',1,-log(x)) x= 0.5000 0.6000 0.7000 0.8000 0.9000 sx_n= -0.3787 -0.5469 -0.7809 -1.1340 -1.7758 (3)%图示被函数和积分函数 clf ezplot('1/log(t)',[0.1,0.9]) gridon holdon plot(x,sx_n,'LineWidth',3) Char1='1/ln(t)'; Char2='{int_0^x}1/ln(t)dt'; title([Char1,' and ',Char2]) legend(Char1,Char2,'Location','SouthWest') 例3:计算f(t)=exp(-sin(t))在[0,4]上的定积分 注意:本题被函数之原函数无"封闭解析表达式",符号计算无法解题! 本例演示:符号计算有限性 (1)符号计算解法 symstx ft=exp(-sin(t)) sx=int(ft,t,0,4) ft=exp(-sin(t)) Warning:Explicitintegralcouldnotbefound. >Insym.intat58 sx= int(exp(-sin(t)),t=0..4) (2)数值计算解法

相关主题
文本预览
相关文档 最新文档