微积分线性代数知识在matlab中的实现_第1页
微积分线性代数知识在matlab中的实现_第2页
微积分线性代数知识在matlab中的实现_第3页
微积分线性代数知识在matlab中的实现_第4页
微积分线性代数知识在matlab中的实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 微积分、线性代数的基础知识及其在Matlab中的实现1 建模中常用微积分基础知识在Matlab中的实现在数摸问题的计算中,经常要用到极限、导数、微分和积分等基本运算。利用数学软件Matlab可以使复杂的微积分运算变得很容易。本节介绍微积分的基本运算在计算机上如何实现,包括:微分、积分、极限、级数求和、方程求根以及Taylor展开等功能的实现方法。下面是MATLAB中的基本符号运算函数(有关符号运算请参考附录A):x=sym(‘x')功能:创建一个符号变量xsymsxyz功能:创建多个符号变量x,y,zr=collect(S,v)功能:合并同类项,S是符号表达式,v是变量或表达式,R是合并同类项后的结果。factor(S)功能:符号计算的因式分解,X是待分解的符号多项式expand(S)功能:对符号多项式或函数S进行展开r=simple(S)或r=simplify(S)功能:对符号表达式S进行化简subs(S,old,new)功能:把符号变量中的变量old用new代替,new可以是一个符号,也可以是具体的数vpa(S)功能:对符号表达式S计算其任意精度的数值eval(S)功能:计算符号表达式(或字符串)S1.1.1导数、极值和积分、Talyor公式及在Matlab中的实现一、极限运算在MATLAB中,计算极限采用下面的命令:命令功能limit(f,x,a)计算limf(x)xTalimit(f,x,inf)计算limf(x)limit(f,x,a,'right')计算单侧极限limf(x)xTa+limit(f,x,a,'left')计算单侧极限limf(x) x—a一 注意:在左右极限不相等或左右极限有一个不存在时,Matlab的默认状态是求右极限.1.例1求极限1Im(1+4x)x与极限hmxtO xtO解Matlab命令为symsx;yl=(l+4*x)A(l/x); y2=(exp(x)-l)/x;limit(y1,x,0)ans=exp(4)limit(y2,x,0)ans=l例2求极限lim(*x-2一x)xtO+解symsx;y=sqrt(x)-2A(-1/x);limit(y,x,0,'right')ans=0二、求导运算A 、0 f,(x) /(X+AX)-/(X)导数是函数增量与自变量增量之比的极限(AxT°),即/(x)二 AX 。在Matlab中求函数的导数及其他一些类似计算均由diff命令来完成。一元函数的求导命令形式l:diff(f)功能:求函数f的一阶导数,其中f为符号函数。命令形式2:diff(f,n)功能:求函数f的n阶导数,其中f为符号函数。例3求函数3x3+5x+1的二阶导数解Matlab的命令为symsx;f=3*xA3+5*x+1;diff(f,2);ans=18*x例4设y=3x2-2x+1,求y'Ix=1解symsx; y=3*xA2-2*x+1;B=diff(y),x=1;eval(B)运行结果为B=6*x—2ans=4多元函数的偏导数将函数z=/(x,y)中的变量看成常量而对变量的导数称为二元函数/(x,y)对变量的偏导数,记为/(x,y)。若把当作常量而对求导的结果称为函数对的偏导数,记为/(x,y)。求偏导的方法和一元函xy数的求导方法一样,只要把另一个变量看成常量即可。命令形式1:diff(f,)功能:多函数f对变量的一阶偏导。

命令形式2:diff(f,,n)功能:多函数f对变量的n阶偏导。例5求z=x2sin2y关于的偏导数解symsxy;z=xA2*sin(2*y);B=diff(z,'x');运行结果为B=2*x*sin(2*y)全微分、参数方程求导及隐函数求导若函数z二f(x,y)在某点(x0,y0)的两个偏导数存在且连续,则函数在该点的全微分为dZ二f(X0,y0)dX+fy(X0,y0)dyMatlab中求函数全微分的命令为:diff(z,x)+diff(z,y)对参数方程<:=;所确定的函数y=f(X),根据公式dX=,连续两次利用diff(f)命令就可以求出结果。隐函数求导方程f(x,y)方程f(x,y)=0所确定的隐函数y=y(x),则其导数dydXF——XFy方程F(x,y,z)=0确定的隐函数z=z(X,y),Qz其导数为QX=F—XFzF广。在Matlab中按照上述公式,分别求出函数Fz的偏导再相除就可得到隐函数的导数。三、积分运算1.一元函数的不定积分命令形式1:int(f)功能:求函数f对默认变量的不定积分,用于函数中只有一个变量的情况。命令形式2:int(f,v)功能:求符号函数f对变量v的不定积分。例6计算( dxsin2Xcos2X解Matlab命令为symsx;y=1/(sin(x)A2*cos(x)A2);int(y)ans=1/(sin(x)*cos(x))-2*cos(x)/sin(x)pretty(int(y))%把int(y)化简为常用的数学形式的表达式12cosx结果为 一—sinx()cosx() sinx例7求『—2dz1+Z2解Matlab的命令为symsxz;B=int(x/(1+zA2),z);B=x*atan(z)2.一元函数的定积分命令形式:int(f,x,a,b)功能:用微积分基本公式计算定积分(x)dxa例8求J1(1+x-)2dxx2解Matlab的命令为symsx;t=1+x-1/x;y=exp(x+1/x);t=t*y;int(f,x,1/2,2);ans=3/2*exp(5/2)3.多重积分运算注意:对于三重积分的运算和二重积分的形式一致。例9计算A=I11x+1(x2+y2+1)dxdy0x解Matlab的命令为symsxyA=int(int(xA2+yA2+1,y,x,x+1),x,0,1)%求二重积分A=5/2四、函数的Taylor展开命令形式1:taylor(f)功能:将函数f展开成默认变量的6阶麦克劳林公式命令形式2:taylor(f,n)功能:将函数f展开成默认变量的n阶麦克劳林公式命令形式3:taylor(f,n,v,a)功能:将函数f(v)在v=a处展开n阶泰勒公式例10将函数/(x)=xarctanx一In、1+x2展开为的6阶麦克劳林公式。解Matlab命令为symsx;f=x*atan(x)-og(sqrt(1+xA2));taylor(f)ans=1/2*xA2-1/12*xA4例11将函数f(x)-羸展开为关于(x-2)的最高次为4的幂级数。解Matlab命令为symsx;f=1/xA2;taylor(f,4,x,2);pretty(taylor(f,4,x,2));1.1.2 数值积分法及其在Matlab中的实现用定积分的符号解法求定积分有时会失效,此时,可以用数值方法来计算定积分的值。Matlab提供了如下一些计算定积分值的数值方法。一、用数值方法计算定积分复合梯形公式复合梯形公式用小梯形面积代替小曲边梯形的面积,然后求和以获得定积分的近似值。命令形式:trapz(x,y)功能:用复合梯形公式计算定积分,变量x是积分变量在被积区间上的分点向量,y为被积函数在x处对应的函数值向量。复合辛普生公式本方法用抛物线代替小曲边梯形的曲边计算小面积,然后求和以获得定积分的近试值。命令形式1:quad('fun',a,b,tol,trace)命令形式2:quad8('fun',a,b,tol,trace)式中fun式被积函数表达式字符串或者是函数文件名,a,b积分的下限与上限,代表精度,可以缺省;缺省时,tol=°.°°1。仃ace=1时用图形展示积分过程,trace=°时无图形,默认值为。命令形式比命令形式精度高。例11用复合梯形公式和复合辛普生公式求『 dx的积分值。2x2解 Matla命令为symsx;x=2:°.1:5;y=log(x)./(x.2);t=trapz(x,y);ff=inline(‘log(x)./(x.A2)','x');q=quad(ff,2,5);disp([blanks(3)梯形法求积分blanks(3)辛普生法求积分]),[t,d]梯形法求积分梯形法求积分 辛普生法求积分°.3247 °.3247说明:inline表示内联函数

例12设s(x)=Jxy(t)dt,其中y(t)=e-0-8tsintl,求s(10)。0解(1)建立命令文件clfdt=0.1;t=0:dt:10;y=exp(-0.8*t.*abs(sint(t)));st10=trapz(t,y);ff=inline('exp(-0.8*t.*abs(sin(t)))','t');q=quad(ff,0,10);q8=quad8(ff,0,10);disp([blank(6),'trapz',blanks(5),'quad',blanks(5),'quad8'])disp([st10,q,q8])运行结果得quad82.6597quad82.65972.6576 2.6597用数值方法计算二重积分命令形式:dblquad(‘f',xmin,xmax,ymin,ymax)功能:计算二重积分Jxmax/Jymax/(%,y)〃y,其中xmin,,xmax,ymin,ymax表示积分限。xmin ymin例13计算“xydxdy,其中是由y=1,x=4,x=0,y=0所围成的区域。D解(1)建立M函数文件functionz=ff(x,y)z=x*y;(2)Matlab命令为dblquad(ff,0.4,0.1)ans=4例14计算J1dyj1(x2+y)dx00解Matlab命令ff=inline(‘x.A2+y','x','y');dblquad(ff,0,1,0,1)ans=0.83331.1.3 线性方程和非线性方程在Matlab中的各种求解方法一、求多项式方程的根次多项式的一般形式为a+ax+ax2+•••+axn=°,0 1 2 n式中的a0,a「a2,•…,a为常数。理论上已经知道,次多项式方程有个根,且对于n冬4的多项式方程,0 1 2 n它的根可以用公式表示,而次数大于5的多项式方程,它的根一般不能用解析表达式表示。因此,在Matlab中,对于次数n<4的多项式,可以快速求出所有根的准确形式,而对于n>4的多项式方程,求不一定能求出所有根的准确形式,但可以求出所有根的近似形式。求多项式方程的根有如下一些命令:命令形式1:roots(p)功能:求多项式p的所有根,注意这里的p只能是多项式方程。命令形式2:solve(s)功能:对一个方程s的默认变量求解,这里的方程s可以是多项式方程,也可以是一般的任意方程。命令形式3:solve(s,v)功能:对一个方程指定的变量v求解。命令形式4:solve(s1,s2,,sn,v1,v2,,vn)功能:对个方程的指定变量v1,v2,,vn求解。命令形式5:[x1,x2,x3,,xn]=solve(s1,s2,,sn,v1,v2,,vn)功能:将个方程的指定变量v1,v2,,vn求解的结果赋给xl,x2,x3”xn。例15求方程x3-4x2+9x_10二0的所有根。解Matlab的命令为p=[1-49-10];r=roots(p);r=1.0000+2.0000i1.0000-2.0000i2.0000s1=sym('xA3-4*xA2+9*x-10');solve(s1)例16求方程x2一ax一4b=0的所有根,其中a,b为常数。解Matlab的命令为s1=sym(‘xA2-a*x-4*b=0');solve(s1,'x');ams=[1/2*a+1/2*(aA2+16*b)A(1/2)][1/2*a-1/2*(aA2+16*b)A2(1/2)]二、求超越方程的根超越方程是指除了多项式方程之外的函数方程,它通常不容易求得全部根和所有根,而是采用数值方法去求近似根,对方程组情况可能连近似根也求不出,因为非线性方程组的求解还有很多问题没有解决。在Matlab中,求超越方程的根可以用solve命令。例17求方程Psinx二r的根,其中P,丫为常数解Matlab的命令为ff=syms(‘p*sin(x)=r');solve(ff,'x');ans=asin(r/p)solve函数还可以用来求解方程组:例例18解Matlab的命令为[x,y]=solve(‘x+y=1','x-11*y=5','x','y');x=4/3;y=-1/3;求一元函数超越方程的数值解可以用fzero命令:命令形式:z=fzero(‘fname',xO,tol,trace)功能:求一元函数的零点。其中fname是待求零点的函数文件名,或是待求方程。x0是预定待搜索零点的大致位置。tol是精度,可默认为eps,trace表示是否显示迭代步骤,可以默认为不显示。求多元函数的数值解可以使用命令fsolve:命令形式:x=fsolve(fun,x0)功能:求多元函数fun在点x0处的零点,其中x0为一向量。例19求方程x=(COSx)2在i附近的根。解Matlab命令为x=fzero('x-(cos(x))A2',1)x=0.6417或采用M函数的形式:functiony=ff(t)y=t-(cos(t)).A2;x=fzero(‘ff',1);x=0.6417x=y2例19求方程组[ 在(1,2)附近的根y二cox解Matlab命令为fun='[x-yA2,y-cos(x)]';f=fsolve(fun,[1,2])f=0.64170.80111.1.4 Matlab中求和及求极值方法一、求和(1)向量或矩阵的求和命令形式:sum(x)功能:求向量x的和或者是矩阵每一列向量的和例20a=1:5;A=[123;234;789];sum(a)ans=15sum(A)ans=10 13 16(2)级数求和级数求和也是微积分中比较常见的运算,在MATLAB中,采用函数symsum来对符号表达式求和。命令形式:symsum(s,v,a,b)功能:对表达式s的符号变量V从v=a到v=b进行求和。例21例21求£k3k=0解Matlab命令为symskn;f=kA3;symsum(f,k,0,n-l);ans=1/4*"4-1/2*"3+1/4*"2Xk例22求乙77k!k=0解:Matlab的命令为symsxk;symsum(xAk/sym(‘k!'),k,0,inf)ans=exp(x)二、求函数的极值点(1)求一元函数的极值问题命令形式1:fmin(fun,x1,x2)功能:在区间[xl,x2]内求函数fun的极小值点命令形式2:fminbnd(fun,x1,x2)功能:在在区间[xl,x2]内求函数fun的极小值点。两个函数的功能相同,命令1在Matlab早期版本中使用。在命令fmin中函数fun的创建一般有三中方法:1、用字符串创建2、用内联函数命令inline创建3、建立一个M文件命令函数。下面例子中三种方法分别都有说明。例23求f(x)=x+3*(x2+COSx)在区间[-1,1]内的最小值。解(1)建立M函数命令文件funCtiOny=gg2(x)y=3*2.A(5*x).*(x.A2+COs(x))-40;(2)建立M命令文件Clf;x=-2:0.1:2xmin=fmin(‘gg2',-1,1);(3)运行M命令文件得xmin=-2.7756e-017或ff=‘x+3*(xA2+COs(x))'xmin=fmin(ff,-1,1)xmin=-2.7756e-017(2)求多元函数极值问题求多元函数极小值常用的方法有单纯形法和拟牛顿法,主要命令有下面两个:命令形式1:fminsearCh(fun,x0)功能:用单纯形法求多元函数fun在x0附近的极值点命令形式2:fminunC(fun,x0)功能:用拟牛顿法求多元函数fun在x0附近的极值点例24求函数f(Xy)=100(y-x2)2+(1-x)2的极小值点。解Matlab的命令为ff=inline(‘100*(y—xA2)A2+(1—x)A2');xO=[—1.2,1];x=fminunc(ff,x0)x=1.0 1.000 2.0例25求函数f(x,y,z)=x4+siny-cosz在点(0,5,4)附近的函数值解symsxyz;x0二[0,5,4];ff=inline(cxA4+sin(y)-cos(z)');[xmin,fval]=fminsearch(ff,x0);x=-0.0021 4.7124 6.2832fval=-2.0001.2建模中常用的线性代数基础知识在Matlab中的实现线性代数中常用的工具式矩阵、向量和行列式。用这些工具可以简单而准确地把所要研究的问题描述出来,以提高研究的效率。在数学建模中经常用到大量的线性代数知识,用Matlab可以很方便的求出矩阵的对角化、二次型化标准行以及方程组的解。1.2.1Matlab中向量和矩阵的基本运算设A,B为两个矩阵,MATLAB中矩阵的基本运算命令有:命令形式:A+BA-B功能:矩阵的加法和减法。将两个同型矩阵相加或相减命令形式:k*A功能:数乘。将数与矩阵做乘法,其中k为一个数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论