版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 符号运算功能6.1 符号表达式的生成符号表达式包括符号函数和符号方程,两者的区别前者不包括等号,后者必须带等号。l 创建符号函数 f=log(x)l 创建符号方程equation=a*x2+b*x+c=0l 创建符号微分方程diffeq=Dy-y=xl sym命令创建f=sym(sin(x) %符号函数f=sym(sin(x)2=0) %符号方程l syms命令syms x %定义符号变量f=sin(x)+cos(x)6.2 符号和数值之间的转换l digits函数digits(D) 函数设置为有效数字个数为D的近似精度l vpa函数格式1:r=vpa(S) 符号表达式S在digits
2、函数设置下的精度的数值解。格式2:r=vpa(S,D) 符号表达式S在digits(D)函数设置下的精度的数值解。S=solve(3*x2-exp(x)解为: -2*lambertw(-1/6*3(1/2) -2*lambertw(-1,-1/6*3(1/2) -2*lambertw(1/6*3(1/2)执行:vpa(S)结果为:(数值解) .91000767248870906066733829676944 %32位小数位数 3.7330790286328142006199640298434 -.46896226763694861469867243243408执行digits(4)vpa(S)
3、结果为:(数值解,精度为4位) .9100 3.734 -.4690l numeric 将不含自由变量的符号表达式转换为数值形式。6.3 符号函数的运算一、复合函数compose(f,g):返回当f=f(x)和g=g(y)时的符合函数f(g(y),其中x和 y均为符号变量。compose(f,g,z):返回复合函数以z为自变量。compose(f,g,x,z):返回复合函数f(g(z),且使x为f的独立变量。compose(f,g,x,y,z):返回复合函数f(g(z),且使x为f的独立变量,y为g的独立变量。举例:syms x y z t u 定义符号变量f=1/(1+x2) 定义符号函数g
4、=sin(y) 定义符号函数h=xt 定义符号函数p=exp(-y/u) 定义符号函数compose(f,g) 用sin(y)代替x,结果为1/(1+sin(y)2)compose(f,g,t) 用sin(y)代替x,t代替y,结果为1/(1+sin(t)2)compose(f,g,x,z) 返回复合函数f(g(z),结果为sin(z)tcompose(h,g,t,z) 结果为xsin(z)compose(h,p,x,y,z) 结果为exp(-z/u)tcompose(h,p,t,u,z) 结果为xexp(-y/z)二、反函数finverse(f) finverse(f,v)举例:syms x
5、 yf=x2+yfinverse(f,y) 结果为:-x2+y6.4 符号矩阵的创立1使用sym函数直接创建2用创建子阵的方法创建符号矩阵3将数值矩阵转化为符号矩阵6.6 符号矩阵的运算一、基本运算1 符号矩阵的四则运算(加、减、乘、除)2 符号矩阵的行列式运算3 符号矩阵的逆4 符号矩阵的秩5 符号矩阵的指数运算二、矩阵分解1 特征值函数x,y=eig(b)2 奇异值分解函数svd(b)3 约当标准型符号矩阵的约当标准型由函数jordan计算得到。4 三角抽取函数diag: 对角线 tril: 上三角 triu: 下三角5 符号矩阵的列空间 符号矩阵的列空间由函数colspace计算得到。6
6、. 符号矩阵的零空间 符号矩阵的零空间由函数null计算得到。三、符号矩阵的简化1 因式分解fact(S)syms xf=x9-1factor(f) 结果为:(x-1)*(x2+x+1)*(x6+x3+1)2 符号矩阵的展开expand(S)举例:expand(x+1)3) 得到: x3+3*x2+3*x+13 同类式合并collect(S,v) 将符号矩阵S中的各元素的V的同幂项系数合并。collect(S) 将符号矩阵S中的各元素的默认变量进行同类项合并。举例:collect(x2*y+y*x-x2-2*x) 合并x的同类项, 得到:(y-1)*x2+(y-2)*x4 符号简化simple
7、(x)simplify(x)5 分式通分:numden 求解符号表达式的分子和分母,格式: N,D= numden(A) 把A的各元素转换为分子和分母都是整数的最佳多项式型6 “秦九卲型”重写horner(P) 将多项式转换为嵌套形式的表达式四、符号极限、微分、积分与差分1 符号极限limit(F,x,a):计算符号表达式F在xa条件下的极限值。limit(F,a): 计算符号表达式中的独立变量趋向于a的极限值。limit(F) 计算在a=0时的极限。limit(F,x,a,right):计算符号表达式F在xa时的极限值。limit(F,x,a,left):计算符号表达式F在xa 时的极限值。
8、举例:syms x a t hlimit(sin(x)/x)结果为:ans =1limit(sin(x)/x,a)结果为:ans =sin(a)/alimit(cos(x)/x,a)结果为:ans =cos(a)/a limit(sin(x)/x,x,0,left)结果为:ans =1 limit(sin(x)/x,x,0,right)结果为:ans =12 符号积分int(x)(1)不定积分在MATLAB中,求不定积分的函数是int,其调用格式为:int(f,x)int函数:求函数f对变量x的不定积分。参数x可以缺省,缺省原则与diff函数相同。int(s):int(s,v):计算符号表达式
9、s对符号自变量v的不定积分。v是一数量符号量。举例1:求不定积分int(sin(x)/x,a)举例2 求不定积分 int(cos(2*x)*cos(3*x) ans =1/2*sin(x)+1/10*sin(5*x)(2)符号函数的定积分定积分在实际工作中有广泛的应用。在MATLAB中,定积分的计算使用函数:int(f,x,a,b)int(s,a,b):计算符号表达式S对默认符号变量从a到b的定积分。a和b为双精度或符号数量。int(s,v,a,b):计算符号表达式对变量v从a到b的定积分。举例1:命令如下:x=sym(x);t=sym(t);int(abs(1-x),1,2) %求定积分(1
10、)f=1/(1+x2);int(f,-inf,inf) %求定积分(2)int(4*t*x,x,2,sin(t) %求定积分(3)f=x3/(x-1)100;I=int(f,2,3) %用符号积分的方法求定积分(4)double(I) %将上述符号结果转换为数值例2 求定积分 eval(int(x2*log(x),1,exp(1)使用函数trapzx=1:0.01:exp(1);y=x.2.*log(x);trapz(x,y)ans = 4.5137例3 求二重积分 使用符号积分 syms x y;f=y2/x2;int(int(f,x,1/2,2),y,1,2)结果: ans =7/2使用数
11、值计算f=(y.2)./(x.2);dblquad(f,1/2,2,1,2)结果:ans = 3.50003 符号微分和差分diff微分和差分函数u diff(s) 对符号表达式S求自变量的微分u diff(s,v) 或diff(s,sym(v) 对以V为自变量的符号S求微分u diff(s,n) n为正整数,对函数表达式求n阶微分u diff(s,v,n) 或diff(s,sym(v),n) 对以V为自变量的符号S求n阶微分举例1syms a b t x y z;f=sqrt(1+exp(x);diff(f) %求(1)。未指定求导变量和阶数,按缺省规则处理f=x*cos(x);diff(f
12、,x,2) %求(2)。求f对x的二阶导数diff(f,x,3) %求(2)。求f对x的三阶导数f1=a*cos(t);f2=b*sin(t);diff(f2)/diff(f1) %求(3)。按参数方程求导公式求y对x的导数(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/(diff(f1)3 %求(3)。求y对x的二阶导数f=x*exp(y)/y2;diff(f,x) %求(4)。z对x的偏导数diff(f,y) %求(4)。z对y的偏导数f=x2+y2+z2-a2;zx=-diff(f,x)/diff(f,z) %求(5)。按隐函数求导公式求z对x的偏导数z
13、y=-diff(f,y)/diff(f,z) %求(5)。按隐函数求导公式求z对y的偏导数举例2:在曲线y=x3+3x-2上哪一点的切线与直线y=4x-1平行。命令如下:x=sym(x); y=x3+3*x-2; %定义曲线函数f=diff(y); %对曲线求导数g=f-4;solve(g) %求方程f-4=0的根,即求曲线何处的导数为46.7 符号代数方程求解1、线性代数方程式的符号解法linsolve可得到方程组的精确解,得到的解析解可由函数vpa转换成浮点近似数值。 x=linsolve(a,b) 只给出特解 例1:对数值方程组用符号函数求解a=sym(10 -1 0;-1 10 -2;
14、0 -2 10) b=sym(9;7;6)linsolve(a,b) 473/476 91/96 376/476vpa(ans)例2:求给定线性方程组的解a=sym(1,1/2,1/3;3 1 1;1 2 1) b=sym(1,2;1/3,1;1,1/7)linsolve(a,b) 例3:求欠定方程组的解a=sym(1 1/2 1/3;3 1 1) b=sym(1;1) x=linsolve(a,b)例4:求符号特征多项式的根 a=sym(1,2,1/3;0 6 0;7 0 a) ca=poly(a)x3-x2*a-6*x2+6*x*a+8/3*x-6*a+36/3ra=solve(ca)ra
15、 = 6 1/2*a+1/2+1/6*(9*a2-18*a+93)(1/2) 1/2*a+1/2-1/6*(9*a2-18*a+93)(1/2)例6:求三元非线性方程组的解s1=x2+sqrt(2)*x+1=0s2=x+3*z=4s3=y*z=-1x,y,z=solve(s1,s2,s3)例6:求解超越方程组 (等号两边至少有一个含有未知数的初等超越函数式的方程。如指数方程、对数方程、三角方程、反三角方程等)x,y=solve(xx=1/7,x/y=3)得到: x =-log(7)/lambertw(-log(7) y =-1/3*log(7)/lambertw(-log(7)lambertw
16、是一个函数,lambertw(x)表示方程wxexp(x)=x的解w例7:求线性方程组AX=b的解。解方程组(1)的命令如下:A=34,8,4;3,34,3;3,6,8;b=4;6;2;X=linsolve(A,b) %调用linsolve函数求(1)的解Ab %用另一种方法求(1)的解解方程组(2)的命令如下:syms a11 a12 a13 a21 a22 a23 a31 a32 a33 b1 b2 b3;A=a11,a12,a13;a21,a22,a23;a31,a32,a33;b=b1;b2;b3;X=linsolve(A,b) %调用linsolve函数求(2)的解XX=Ab %用左
17、除运算求(2)的解2、非线性代数方程式的符号解法(1)求解非线性方程(组)的符号解析解的函数是solve,调用格式为:solve(eqn1,eqn2,eqnN,var1,var2,varN)举例1:解方程。命令如下:x=solve(1/(x+2)+4*x/(x2-4)=1+2/(x-2),x) %解方程(1)f=sym(x-(x3-4*x-7)(1/3)=1);x=solve(f) %解方程(2)x=solve(2*sin(3*x-pi/4)=1) %解方程(3)x=solve(x+x*exp(x)-10,x) %解方程(4)。仅标出方程的左端格式2 x=fsolve(fun,x0)例2:x1
18、-0.7sinx1-0.2cosx2=0 x2-0.7cosx1+0.2cosx2=0 function y=fc(x) y(1) = x(1) - 0.7 * Sin(x(1) - 0.2 * Cos(x(2); y(2) = x(2) - 0.7 * Sin(x(2) - 0.2 * Cos(x(2); y = y(1) y(2); 在命令窗口中输入: x0=0.5 0.5 fsolve(fun,x0)6.8 符号微分方程求解MATLAB的符号运算工具箱中提供了功能强大的求解常微分方程的函数dsolve。该函数的调用格式为:dsolve(eqn1,condition,var)该函数求解微分
19、方程eqn1在初值条件condition下的特解。参数var描述方程中的自变量符号,省略时按缺省原则处理,若没有给出初值条件condition,则求方程的通解。dsolve在求微分方程组时的调用格式为:dsolve(eqn1,eqn2,eqnN,condition1,conditionN,var1,varN)函数求解微分方程组eqn1、eqnN在初值条件conditoion1、conditionN下的解,若不给出初值条件,则求方程组的通解,var1、varN给出求解变量。或者可以表达为:y1,y2,.=dsolve(a1,a2,a12) 说明:(1) a1,a2,a12为输入变量,输入变量包括
20、三部分内容:微分方程、初始条件和指定独立变量,其中微分方程是必不可少的输入内容,后两个内容视具体需要而定。(2) 关于指定独立变量的规定:若指定独立变量,则总是由全部输入变量a1,a2,a12中的最后一个变量定义。若不对独立变量加以专门的定义,则默认为小写的英文字母x或t为独立变量名。(3) 微分方程的记述规定:当y是因变量,用Dny表示“y的n阶导数”,如Dy 表示“y的1阶导数”,D2表示“y的2导数”,默认的变量为x或t。(4) 关于初始条件的规定:初始条件要写成y(a)=b,Dy(c)=d等。(6) 输出变量可有可无(7) 输入变量个数不超过12个。3常微分方程求解举例1:求通解x,y
21、=dsolve(Dx=y,Dy=-x) x =cos(t)*C1+sin(t)*C2 y =-sin(t)*C1+cos(t)*C2其中:t是默认的独立变量;C1和C2为任意常数y=dsolve(Dy-(x2+y2)/x2/2,x) %解(1)。方程的右端为0时可以不写y=dsolve(Dy*x2+2*x*y-exp(x),x) %解(2)y=dsolve(Dy-x/y/sqrt(1-x2),x) %解(3)举例2:求特解f,g=dsolve(Df=3*f+4*g,Dg=-4*f+3*g,f(0)=0,g(0)=1)得到: f =exp(3*t)*sin(4*t)g =exp(3*t)*cos
22、(4*t)y=dsolve(Dy=2*x*y2,y(0)=1,x) y=dsolve(Dy-x2/(1+y2),y(2)=1,x) 举例3:指定变量y=dsolve(D3y=-y,y(0)=1,Dy(0)=0,D2y(0)=0,t)得到:y =1/3*exp(-t)+2/3*exp(1/2*t)*cos(1/2*3(1/2)*t)举例4:计算初值问题:dsolve(Dy=x+y,y(0)=1,x)结果:ans =-x-1+2*exp(x)举例5:常微分方程组求解命令如下:x,y=dsolve(Dx=4*x-2*y,Dy=2*x-y,t) %解方程组(1)x,y=dsolve(D2x-y,D2y
23、+x,t) %解方程组(2)参考网站:/view/0b297800bed5b9f3f90f1c36.html6.9级数展开1、泰勒级数MATLAB中提供了将函数展开为幂级数的函数taylor格式1: taylor(f),taylor(f,n)返回n-1次幂多项式taylor(f,a)返回a点附近的幂多项式近似值taylor(f,x)使用独立变量代替函数findsym(f)例1:求函数 的泰勒展开式,并计算该函数在x=3.42时的近似值。syms x;taylor(sin(x)/x,x,10)ans = 1-1/6*x2+1/120*x4-1/5040*
24、x6+1/362880*x8 x=3.42;eval(ans)ans = -0.0753调用格式2:taylor(f,v,n,a)举例2:求函数在指定点的泰勒展开式。命令如下:x=sym(x);f1=(1+x+x2)/(1-x+x2);f2=sqrt(1-2*x+x3)-(1-3*x+x2)(1/3);taylor(f1,x,5) %求(1)。展开到x的4次幂时,应选择n=5taylor(f2,6) %求(2)。举例3:将多项式表示成x+1的幂的多项式。命令如下:x=sym(x);p=1+3*x+5*x2-2*x3;f=taylor(p,x,-1,4)举例4:应用泰勒公式近似计算 。命令如下:
25、x=sym(x);f=(1-x)(1/12); %定义函数,4000(1/12)=2f(96/212)g=taylor(f,4) %求f的泰勒展开式g,有4000(1/12)2g(96/212)b=96/212;a=1-b/12-11/288*b2-253/10368*b3 %计算g(b)2*a %求4000(1/12)的结果4000(1/12) %用MATLAB的乘方运算直接计算2、傅立叶级数MATLAB 5.x版中,尚未提供求函数傅立叶级数的内部函数。下面提供一个简化的求任意函数的傅立叶级数的函数文件。function mfourier=mfourier(f,n)syms x a b c;
26、mfourier=int(f,-pi,pi)/2; %计算a0for i=1:n a(i)=int(f*cos(i*x),-pi,pi); b(i)=int(f*sin(i*x),-pi,pi); mfourier=mfourier+a(i)*cos(i*x)+b(i)*sin(i*x);endreturn调用该函数时,需给出被展开的符号函数f和展开项数n,不可缺省。应用举例:在-,区间展开函数为傅立叶级数。命令如下:x=sym(x);a=sym(a);f=x;mfourier(f,5) %求f(x)=x的傅立叶级数的前5项f=abs(x);mfourier(f,5) %求f(x)=|x|的傅
27、立叶级数的前5项syms a;f=cos(a*x);mfourier(f,6) %求f(x)=cos(ax)的傅立叶级数的前6项f=sin(a*x);mfourier(f,4) %求f(x)=sin(ax)的傅立叶级数的前4项3、级数的符号求和函数symsum,调用格式为:symsum (s,t,a,b) 功能:求表达式s中的符号变量t从第a项到第b项的级数和 举例:求级数之和。命令如下:n=sym(n);s1=symsum(1/n2,n,1,inf) %求s1s2=symsum(-1)(n+1)/n,1,inf) %求s2。未指定求和变量,缺省为ns3=symsum(n*xn,n,1,inf
28、) %求s3。此处的求和变量n不能省略。s4=symsum(n2,1,100) %求s4。计算有限级数的和6.10傅立叶(Fourier)变换在MATLAB中,进行傅立叶变换的函数是:fourier(fx,x,t) 求函数f(x)的傅立叶像函数F(t)。ifourier(Fw,t,x) 求傅立叶像函数F(t)的原函数f(x)。举例:求函数的傅立叶变换及其逆变换。命令如下:syms x t;y=abs(x);Ft=fourier(y,x,t) %求y的傅立叶变换fx=ifourier(Ft,t,x) %求Ft的傅立叶逆变换6.11 拉普拉斯(Laplace)变换在MATLAB中,进行拉普拉斯变换的函数是:(1)laplace(fx,x,t) 求函数f(x)的拉普拉斯像函数F(t)。(2)ilaplace(Fw,t,x) 求拉普拉斯像函数F(t)的原函数f(x)。举例:计算y=x2的拉普拉斯变换及其逆变换.命令如下:x=sym(x);y=x2;Ft=laplace(y,x,t) %对函数y进行拉普拉斯变换fx=ilaplace(Ft,t,x) %对函数Ft进行拉普拉斯逆变换6.12 Z变换对数列f(n)进行z变换的MATLAB函数是:ztrans(fn,n,z) 求fn的Z变换像函数F(z)iztran
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园办公奖惩制度
- 2026年广西体育高等专科学校单招职业技能测试题库附答案详解(达标题)
- 2026年广州番禺职业技术学院单招职业倾向性测试题库带答案详解(新)
- 2026年广州体育职业技术学院单招职业倾向性考试题库附答案详解(黄金题型)
- 建材店员工奖惩制度
- 建筑财务奖惩制度
- 心理社团奖惩制度
- 急救管理奖惩制度
- 2026年广东省肇庆市单招职业倾向性考试题库附参考答案详解(综合题)
- 手术室运送员奖惩制度
- 洪恩识字1-1300字文档
- 目录页四项样式合集模板
- 工程流体力学名词解释和简答题
- 电工复审培训课件下载
- 空调维修培训课件
- 淬火油日常管理制度
- 统编部编版小学语文三年级下册语文一课一练(答案附后)
- 输血科仪器管理制度
- 教师信教排查情况自查报告
- 肿瘤内科叙事护理实践体系
- 货币银行学教材
评论
0/150
提交评论