《数学实验 第4版》课件 1.5 MATLAB符号计算_第1页
《数学实验 第4版》课件 1.5 MATLAB符号计算_第2页
《数学实验 第4版》课件 1.5 MATLAB符号计算_第3页
《数学实验 第4版》课件 1.5 MATLAB符号计算_第4页
《数学实验 第4版》课件 1.5 MATLAB符号计算_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1第一章准备实验实验1.1MATLAB的基本用法实验1.2矩阵的运算实验1.4MATLAB绘图实验1.3M文件与程序设计实验1.5MATLAB符号运算实验1.5MATLAB符号计算一、MATLAB的符号功能二、求极限三、求导数四、求积分五、级数的和六、泰勒多项式七、解方程八、其他一、MATLAB的符号功能什么是符号运算 特点:运算对象可以是没赋值的符号变量※

数值运算中必须先对变量赋值,然后才能参与运算。与数值运算的区别实验1.5

MATLAB符号计算※

符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。可以获得任意精度的解2.建立符号对象的函数——syms进行符号运算时需要先定义符号变量,一般用syms命令来定义符号变量symsabtxyf=a*(2*x-t)^3+b*sin(4*y)↙f=b*sin(4*y)-a*(t-2*x)^3实验1.5

MATLAB符号计算二、求极限——limitlimit(f)当符号变量x(或最接近字母x)→0时函数f的极限limit(f,t,a)当符号变量t→a时函数f的极限limit(f,t,a,“left”);limit(f,t,a,“right”)指左右极限例1

求下列极限symsxat;limit(sin(x)/x)↙ans=1实验1.5

MATLAB符号计算limit((1+2*t/x)^(3*x),x,inf)↙limit(1/x,x,0,“right”)↙v=[(1+a/x)^x,exp(-x)];limit(v,x,+inf)↙ans=exp(6*t)ans=

Infans=[exp(a),0]实验1.5

MATLAB符号计算例2应用实例——连续复利问题复利,即利滚利,不仅是一个经济问题,而且是一个古老又现代的社会问题。随着商品经济的发展,复利计算将日益普遍,同时复利的期限将日益变短,即不仅用年息、月息,而且用旬息、日息、半日息表示利息。

连续复利,是一种理论上的付息方式,指银行连续不断地向顾客付利息,即在期数趋于无限大的极限情况下得到的利率,此时不同期之间的间隔很短,可以看作是无穷小量。

某顾客向银行存入本金p元,n年后他在银行的存款额是本金及利息之和.设银行规定年复利率为r,试计算连续复利情况下顾客的最终存款额.若银行一年活期年利率为0.03,储户存10万元的人民币,连续复利比按年一次性结算会多多少利息?实验1.5

MATLAB符号计算某顾客向银行存入本金p元,年利率为r,计算n年后的本利和。我们先假设每年结算m次,此时复利率为.n年共结算mn次,将n年后顾客的存款额记为,则在连续复利的情况下,顾客最终的存款额为:实验1.5

MATLAB符号计算symsna=limit(100000*(1+0.03/n)^n,n,inf)formatshort,100000*exp(3/100)下面计算10万元在连续复利情况下一年后的本利和a=100000*exp(3/100)ans=1.0305e+05

由此可见,一年后本息总和将稳定在103050元,比按年一次性结算多50元利息,只要年利率不大,复利利息和按季、月、天连续计算所得结果相差不大。注:当利率增加时,二者之差会快速增长,因此对待高利息、小周期的“校园贷”等贷款,大家一定要避而远之。实验1.5

MATLAB符号计算三、求导数——diffdiff(f)函数f对符号变量x或(字母表上)最接近字母x的符号变量求(偏)导数diff(f,’t’)函数f对符号变量t求导数diff(f,n)求n阶导数symsaxf=sin(a*x)↙例如t=-x^2*sin(a*x)f=sin(a*x)g=diff(f)↙g=a*cos(a*x)h=diff(f,'a')↙h=x*cos(a*x)t=diff(f,'a',2)↙实验1.5

MATLAB符号计算e=diff(f,2)↙

e=-a^2*sin(a*x)int(f)函数f对符号变量x或最接近字母x的符号变量求不定积分int(f,’t’)函数f对符号变量t求不定积分int(f,a,b)函数f对符号变量x或最接近字母x的符号变量求从a到b的定积分int(f,’t’,a,b)函数f对符号变量t求从a到b的定积分四、求积分——int实验1.5

MATLAB符号计算g1=-cos(a*x)/a例如symsaxf1=sin(a*x);g=int(f1)↙h1=int(f1,'a')↙h1=-cos(a*x)/x实验1.5

MATLAB符号计算f2=exp(-x^2)f2=exp(-x^2)↙g2=int(f2)↙g2=(pi^(1/2)*erf(x))/2其中因为我们知道这个积分无解析表达式.,因此上面根本没有计算出积分,c=(pi^(1/2)*erf(1))/2c=int(f2,0,1)↙当积分无解析式时,可用double计算定积分的值ans=0.7468double(c)↙实验1.5

MATLAB符号计算a=int(f1,0,1)↙a=-(cos(a)-1)/ab=int(f1,'a',0,1)↙b=-(cos(x)-1)/x对于二重积分,MATLAB中没有相应的命令,但由于二重积分可以化成二次积分来进行计算,因此只要确定出积分区域,就可以反复使用int命令来计算二重积分.例1

计算二重积分,其中D是由直线所围成的区域.解

该积分可以写成或按第一种形式用MATLAB求解如下:实验1.5

MATLAB符号计算即symsxyI1=int(x^2*exp(-y^2),x,0,y)↙I1=(y^3*exp(-y^2))/3I=int(I1,y,0,1)↙I=1/6-exp(-1)/3实验1.5

MATLAB符号计算

如果采用第二种形式,手工无法计算,而用MATLAB却照样可以算出结果,求解如下:I=1/6-exp(-1)/3symsxyI1=int(x^2*exp(-y^2),y,x,1)↙I1=(x^2*pi^(1/2)*(erf(1)-erf(x)))/2

I=int(I1,x,0,1)↙实验1.5

MATLAB符号计算symsum(s,t,a,b):表达式s中的符号变量t从a到b的级数和(t缺省时,设定为x或最接近x的字母)五、级数的和symsum(k,0,n)↙例如:ans=(n*(n+1))/2symsknsymsum(k)↙

ans=k^2/2-k/2

实验1.5

MATLAB符号计算symsum(k^2,0,n)↙ans=(n*(2*n+1)*(n+1))/6symsum(k^2,0,10)↙ans=385symsum(1/k^2,1,inf)↙ans=pi^2/6symsum(k^4,0,n)↙ans=(n*(2*n+1)*(n+1)*(3*n^2+3*n-1))/30实验1.5

MATLAB符号计算六、泰勒多项式taylor(f,x,a):函数f对符号变量x在a点的5阶泰勒多项式taylor(f,x,a,’Order’,n):求函数f对符号变量x在a点的n-1阶泰勒多项式(a缺省时设定为0)symsxt;taylor(exp(-x),x)↙

ans=-x^5/120+x^4/24-x^3/6+x^2/2-x+1taylor(sin(x),x,pi/2,'Order',8)↙ans=

(x-pi/2)^4/24-(x-pi/2)^2/2-(x-pi/2)^6/720+1实验1.5

MATLAB符号计算七、解代数方程(组)解代数方程(组)的基本命令是:实验1.5

MATLAB符号计算solve(eqn,var)solve(eqn,var,name,value)solve(eqns,vars)solve(eqns,vars,name,value)symspxreqn=p*sin(x)==r;s=solve(eqn)↙%x为未知数,p,r为参数s=asin(r/p)pi-asin(r/p)x=13y=1-3/2

%以x,y为未知数的方程组symsxyeqn1=x^2+x*y+y==3;eqn2=x^2-4*x+3==0;[x,y]=solve(eqn1,eqn2)↙实验1.5

MATLAB符号计算s=

包含以下字段的struct:x:[2×1sym]y:[2×1sym]%对于多元方程组,如果输出参数只有一个的话,只给出解的结构symsxyeqn1=x^2+x*y+y==3;eqn2=x^2-4*x+3==0;s=solve(eqn1,eqn2)↙

u=1-(a+(-a)^(1/2))/(a+1)1-(a-(-a)^(1/2))/(a+1)v=-(a+(-a)^(1/2))/(a+1)-(a-(-a)^(1/2))/(a+1)%u,v为未知数,a为参数symsuvaeqn1=a*u^2+v^2==0;eqn2=u-v==1;[u,v]=solve(eqn1,eqn2,[u,v])

↙实验1.5

MATLAB符号计算%a,u,v为未知数eqn3=a^2-5*a+6==0[a,u,v]=solve(eqn1,eqn2,eqn3)↙a=2233u=1/3-(2^(1/2)*1i)/3(2^(1/2)*1i)/3+1/31/4-(3^(1/2)*1i)/4(3^(1/2)*1i)/4+1/4v=-(2^(1/2)*1i)/3-2/3(2^(1/2)*1i)/3-2/3-(3^(1/2)*1i)/4-3/4(3^(1/2)*1i)/4-3/4实验1.5

MATLAB符号计算x=-0.66870120500236202933135901833637y=-1.5528386984283889912797441811191注:无代数解时,只能给出数值解symsxyeqns=[sin(x+y)-exp(x)*y==0,x^2-y==2];[x,y]=solve(eqns,[x,y])↙实验1.5

MATLAB符号计算roots:

输入多项式的系数(按降幂排列),输出其全部根.poly:输入多项式全部根,输出其系数fzero(fun,x0):给出函数“fun”在x0附近的根如果求方程的数值解,则有以下命令:ans=

32例如%的全部根roots([1,-5,6])↙实验1.5

MATLAB符号计算ans=1-56poly([2,3])↙ans=3.1416%sinx=0在3附近的解fzero('sin',3)↙实验1.5

MATLAB符号计算ans=-0.1999fzero('x^5+5*x+1',0)↙%在0附近的解ans=

0.7528+0.7105i0.7528-0.7105i-0.6530+0.7130i-0.6530-0.7130i-0.1997+0.0000iroots([5,0,0,0,5,1])↙但用roots求数值解时误差校大注:当

y是因变量,t是自变量时,用diff(y,t,n)表示“y对t的n阶导数”八、解常微分方程(组)求解常微分方程(组)的一般命令是dsolve(eqn),dsolve(eqn,cond),

其中eqn为待解的方程,如果有多个,则为求解方程组;cond为初始条件,如果没有给出初始条件,则求出微分方程(组)的通解.比如:diff(y,t)表示一阶导数diff(y,x,2)表示二阶导数实验1.5

MATLAB符号计算例4

求微分方程的通解.symsy(x)eqn=2*diff(y,x,2)+diff(y,x)-y==2*exp(x);y=dsolve(eqn)↙y=exp(x)+C1*exp(-x)+C2*exp(x/2)解例5

求微分方程的通解和满足初始条件和的特解.解symsy(t)eqn=diff(y,t,4)==y;y=dsolve(eqn)↙y=C3*cos(t)+C2*exp(t)-C4*sin(t)+C1*exp(-t)实验1.5

MATLAB符号计算symsy(t)eqn=diff(y,t,4)==y;Dy=diff(y,t);D2y=diff(y,t,2);D3y=diff(y,t,3);cond1=y(0)==2;cond2=Dy(0)==2;cond3=D2y(0)==1;cond4=D3y(0)==1;cond=[cond1cond2cond3cond4];y=dsolve(eqn,cond)↙

y=cos(t)/2+(3*exp(t))/2+sin(t)/2即所求特解为:实验1.5

MATLAB符号计算例6

求微分方程组的通解.解symsx(t)y(t)eqns=[diff(x,t)+diff(y,t)==-x+y+3,diff(x,t)-diff(y,t)==x+y-3];[x,y]=dsolve(eqns)↙

x=cos(t)*(C1+3*cos(t))+sin(t)*(C2+3*sin(t))y=cos(t)*(C2+3*sin(t))-sin(t)*(C1+3*cos(t))实验1.5

MATLAB符号计算例7求微分方程组的特解.解symsx(t)y(t)eqns=[2*diff(x,t)-4*x+diff(y,t)-y==exp(t),diff(x,t)+3

温馨提示

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

评论

0/150

提交评论