Matlab数值积分函数.docx

上传人:b****4 文档编号:5462581 上传时间:2023-05-08 格式:DOCX 页数:13 大小:20.53KB
下载 相关 举报
Matlab数值积分函数.docx_第1页
第1页 / 共13页
Matlab数值积分函数.docx_第2页
第2页 / 共13页
Matlab数值积分函数.docx_第3页
第3页 / 共13页
Matlab数值积分函数.docx_第4页
第4页 / 共13页
Matlab数值积分函数.docx_第5页
第5页 / 共13页
Matlab数值积分函数.docx_第6页
第6页 / 共13页
Matlab数值积分函数.docx_第7页
第7页 / 共13页
Matlab数值积分函数.docx_第8页
第8页 / 共13页
Matlab数值积分函数.docx_第9页
第9页 / 共13页
Matlab数值积分函数.docx_第10页
第10页 / 共13页
Matlab数值积分函数.docx_第11页
第11页 / 共13页
Matlab数值积分函数.docx_第12页
第12页 / 共13页
Matlab数值积分函数.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Matlab数值积分函数.docx

《Matlab数值积分函数.docx》由会员分享,可在线阅读,更多相关《Matlab数值积分函数.docx(13页珍藏版)》请在冰点文库上搜索。

Matlab数值积分函数.docx

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],0

  注意:

被积函数于x=0无义,在x-->1^-处为负无穷

  本例演示:

用特殊函数表示的积分结果,如何用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)数值计算解法

dt=0.05;          %采样间隔      

t=0:

dt:

4;           %数值计算适合于有限区间上,取有限个采样点       

Ft=exp(-sin(t));    

Sx=dt*cumtrapz(Ft);      %计算区间内曲线下图形面积,为小矩形面积累加得

Sx(end)        %所求定积分值

                %图示

plot(t,Ft,'*r','MarkerSize',4)

holdon

plot(t,Sx,'.k','MarkerSize',15)

holdoff

xlabel('x')

legend('Ft','Sx')

>>ans=

3.0632

  例4:

绘制积分图形,y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);积分s(x)=int(y,t,0,x)于[0,4*pi]上

symsttao

y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);  

s=subs(int(y,t,0,tao),tao,t);  %获得积分函数      

subplot(2,1,1)              

                      %

ezplot(y,[0,4*pi]),ylim([-0.2,0.7]) %单变量符号函数可视化,多变量用ezsurf

gridon                  

subplot(2,1,2)              

ezplot(s,[0,4*pi])

gridon

title('s=inty(t)dt')

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

%%符号变量与符号表达式

%%%%%%%%%%%%%%%%%%%%%%%%%%%

%1.符号变量与符号表达式

%%%%%%%%%%%%%%%%%%%%%%%%%%%

clearall;

clc;

closeall;

%f=sym('sin(x)+5x')

%f——符号变量名

%sin(x)+5x——符号表达式

%''——符号标识

%符号表达式一定要用''单引号括起来matlab才能识别

%''的内容可以是符号表达式,也可以是符号方程。

%例:

 

%f1=sym('a*x^2+b*x+c')——二次三项式

%f2=sym('a*x^2+b*x+c=0')——方程

%f3=sym('Dy+y^2=1')——微分方程

%符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算

%syms命令用来建立多个符号量,一般调用格式为:

%syms变量1变量2...变量n 

%%符号矩阵的创建

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%2.符号矩阵的创建

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%数值矩阵A=[1,2;3,4]

%A=[a,b;c,d]——不识别

%@1.用matlab函数sym创建矩阵(symbolic的缩写)

%命令格式:

A=sym('[]') 

%※符号矩阵内容同数值矩阵

%※需用sym指令定义

%※需用''标识

%例如:

A=sym('[a,2*b;3*a,0]')

%A=

%[a,2*b]

%[3*a,0]

%这就完成了一个符号矩阵的创建。

%注意:

符号矩阵的每一行的两端都有方括号,这是与matlab数值矩阵的一个重要区别。

%@2.用字符串直接创建矩阵(这种方法创建的没有什么用处)

%※模仿matlab数值矩阵的创建方法

%※需保证同一列中各元素字符串有相同的长度。

%例:

A=['[a,2*b]';'[3*a,0]'] 

%A=

%[a,2*b]

%[3*a,0]

%@3.符号矩阵的修改

%a.直接修改

%可用光标键找到所要修改的矩阵,直接修改

%b.指令修改

%※用A1=sym(A,*,*,'new')来修改。

这个经过测试,不能运行

%※用A1=subs(A,'new','old')来修改

%%例如:

A=[a,2*b]

%[3*a,0]

A=sym('[a,2*b;3*a,0]')

%A1=sym(A,2,2,'4*b')%%等效于A(2,2)='4*b';

%A1=[a,2*b]

%[3*a,4*b]  

A1=subs(A,'0','4*b')

A2=subs(A1,'c','b')  

%A2=[a,2*c] 

%[3*a,4*c] 

%@4.符号矩阵与数值矩阵的转换

%※将数值矩阵转化为符号矩阵

%函数调用格式:

sym(A)

A=[1/3,2.5;1/0.7,2/5]

%A=

%0.33332.5000

%1.42860.4000

B=sym(A)

%ans=

%[1/3,5/2]

%[10/7,2/5]

%※将符号矩阵转化为数值矩阵

%函数调用格式:

numeric(A)

%B=

%[1/3,5/2]

%[10/7,2/5]

%numeric(B)这个函数不存在了

VPA(B,4)%发现这个函数可用

%R=VPA(S)numericallyevaluateseachelementofthedoublematrix

%SusingvariableprecisionfloatingpointarithmeticwithDdecimal 

%digitaccuracy,whereDisthecurrentsettingofDIGITS. 

%TheresultingRisaSYM.

%  

%VPA(S,D)usesDdigits,insteadofthecurrentsettingofDIGITS.

%DisanintegerortheSYMrepresentationofanumber.

%ans= 

%[.3333,2.500]

%[1.429,.4000]

%%符号运算

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%3.符号运算

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%例1:

f=sym('2*x^2+3*x-5');g=sym('x^2+x-7');

h=f+g

%h= 

%3*x^2+4*x-12

%例2:

f=sym('cos(x)');g=sym('sin(2*x)');

f/g+f*g

%ans=

%cos(x)/sin(2*x)+cos(x)*sin(2*x)

%%查找符号变量

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%4.查找符号变量

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%findsym(expr)按字母顺序列出符号表达式expr中的所有符号变量

%%findsym(expr,N)列出expr中离x最近的N个符号变量

%若表达式中有两个符号变量与x的距离相等,则ASCII码大者优先。

%※常量pi,i,j不作为符号变量

%例:

f=sym('2*w-3*y+z^2+5*a');

findsym(f)

%ans=

%a,w,y,z

findsym(f,3)

%ans=

%y,w,z

findsym(f,1)

%ans=

%y

%%计算极限

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%5.计算极限

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%limit(f,x,a):

计算f(x)当x趋向于a的极限

%limit(f,a):

当默认变量趋向于a时的极限

%limit(f):

计算a=0时的极限

%limit(f,x,a,'right'):

计算右极限

%limit(f,x,a,'left'):

计算左极限

%例:

计算

symsxhn; 

L=limit((log(x+h)-log(x))/h,h,0)

%L= 

%1/x

M=limit((1-x/n)^n,n,inf)

%M= 

%exp(-x)

%%计算导数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%6.计算导数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%g=diff(f,v):

求符号表达式f关于v的导数

%g=diff(f):

求符号表达式f关于默认变量的导数

%g=diff(f,v,n):

求f关于v的n阶导数

symsx;

f=sin(x)+3*x^2; 

g=diff(f,x)

%g= 

%cos(x)+6*x

%%计算积分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%7.计算积分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%int(f,v,a,b):

计算定积分f(v)从a到b

%int(f,a,b):

计算关于默认变量的定积分

%int(f,v):

计算不定积分f(v)

%int(f):

计算关于默认变量的不定积分

f=(x^2+1)/(x^2-2*x+2)^2;

I=int(f,x)

%I= 

%3/2*atan(x-1)+1/4*(2*x-6)/(x^2-2*x+2)

K=int(exp(-x^2),x,0,inf)

%K= 

%1/2*pi^(1/2)

%%函数运算

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%8.函数运算

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%1.合并、化简、展开等函数

%collect函数:

将表达式中相同幂次的项合并;

%factor函数:

将表达式因式分解;

%simplify函数:

利用代数中的函数规则对表达式进行化简;

%numden函数:

将表示式从有理数形式转变成分子与分母形式。

%2.反函数

%finverse(f,v)对指定自变量为v的函数f(v)求反函数

%3.复合函数

%compose(f,g)求f=f(x)和g=g(y)的复合函数f(g(y))

%compose(f,g,z)求f=f(x)和g=g(y)的复合函数f(g(z))

%4.表达式替换函数(前面讲到了)

%subs(s)用赋值语句中给定值替换表达式中所有同名变量  

%subs(s,old,new)用符号或数值变量new替换s中的符号变量old

%%

%mtaylor(f,n)——泰勒级数展开

%ztrans(f)——Z变换

%Invztrans(f)——反Z变换

%Laplace(f)——拉氏变换

%Invlaplace(f)——反拉氏变换

%fourier(f)——付氏变换

%Invfourier(f)——反付氏变换

%%

clear

f1=sym('(exp(x)+x)*(x+2)');

f2=sym('a^3-1');

f3=sym('1/a^4+2/a^3+3/a^2+4/a+5');

f4=sym('sin(x)^2+cos(x)^2');

 collect(f1)

%ans=

%x^2+(exp(x)+2)*x+2*exp(x)

expand(f1)

%ans= 

%exp(x)*x+2*exp(x)+x^2+2*x

factor(f2)

%ans= 

%(a-1)*(a^2+a+1)

[m,n]=numden(f3)

%m为分子,n为分母

%m=

%1+2*a+3*a^2+4*a^3+5*a^4

%n=

%a^4

 simplify(f4)

%ans=

%1

clear

symsxy

finverse(1/tan(x))%求反函数,自变量为x

%ans=

%atan(1/x)

f=x^2+y;

finverse(f,y)%求反函数,自变量为y

%ans=

%-x^2+y 

clear

symsxyztu;

f=1/(1+x^2);g=sin(y);h=x^t;p=exp(-y/u);

compose(f,g)%求f=f(x)和g=g(y)的复合函数f(g(y))

%ans=

%1/(1+sin(y)^2) 

clear

symsab

subs(a+b,a,4)%用4替代a+b中的a

%ans=

%4+b

subs(cos(a)+sin(b),{a,b},{sym('alpha'),2})%多重替换

%ans=

%cos(alpha)+sin

(2) 

 f=sym('x^2+3*x+2')

%f=

%x^2+3*x+2

 subs(f,'x',2)%求解f当x=2时的值

%ans=

%12

%%方程求解

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%9.方程求解

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%1代数方程

%代数方程的求解由函数solve实现:

%solve(f)求解符号方程式f 

%solve(f1,…,fn)求解由f1,…,fn组成的代数方程组 

%2常微分方程

%使用函数dsolve来求解常微分方程:

%dsolve('eq1,eq2,...','cond1,cond2,...','v')

clear

symsabcx

f=sym('a*x*x+b*x+c=0')

solve(f)

%ans=

%[1/2/a*(-b+(b^2-4*c*a)^(1/2))]

%[1/2/a*(-b-(b^2-4*c*a)^(1/2))]

 solve('1+x=sin(x)')  

%ans=

%-1.9345632107520242675632614537689

dsolve('Dy=x','x')%求微分方程y'=x的通解,指定x为自变量。

%ans=

%1/2*x^2+C1

dsolve('D2y=1+Dy','y(0)=1','Dy(0)=0')%求微分方程y''=1+y'的解,加初始条件

%ans= 

%-t+exp(t)

[x,y]=dsolve('Dx=y+x,Dy=2*x')%微分方程组的通解

%x=

%-1/2*C1*exp(-t)+C2*exp(2*t) 

%y= 

%C1*exp(-t)+C2*exp(2*t)

%ezplot(y)方程解y(t)的时间曲线图

%%funtool

 funtool%该命令将生成三个图形窗口,FigureNo.1用于显示函数f的图形,

%FigureNo.2用于显示函数g的图形,

%FigureNo.3为一可视化的、可操作与显示一元函数的计算器界面。

%在该界面上由许多按钮,可以显示两个由用户输入的函数的计算结果:

%加、乘、微分等。

funtool还有一函数存储器,允许用户将函数存入,

%以便后面调用。

在开始时,

%funtool显示两个函数f(x)=x与g(x)=1在区间[-2*pi,2*pi]上的图形。

%Funtool同时在下面显示一控制面板,

%允许用户对函数f、g进行保存、更正、重新输入、联合与转换等操作。

%%taylortool%该命令生成一图形用户界面,显示缺省函数f=x*cos(x)

%在区间[-2*pi,2*pi]内的图形,同时显示函数f

%的前N=7项的Taylor多项式级数和(在a=0附近的)图形,

%通过更改f(x)项可得不同的函数图形。

%taylortool('f')%对指定的函数f,用图形用户界面显示出Taylor展开式

%%maple内核访问函数

%可以访问maple内核的matlab函数:

%maple———访问maple内核函数

%mapleinit——maple函数初始化

%mpa————maple函数定义

%mhelp———maple函数帮助命令

%procread——maple函数程序安装

%具体的操作参看相关说明

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2