《2022年完整word版,MATLAB符号运算 .pdf》由会员分享,可在线阅读,更多相关《2022年完整word版,MATLAB符号运算 .pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. . 符号运算科学计算包括数值计算和符号计算两种计算,数值计算是近似计算;而符号计算则是绝对精确的计算。符号变量的生成和使用1、符号变量、符号表达式和符号方程的生成(1) 、使用 sym 函数定义符号变量和符号表达式单个符号变量sqrt(2) sym(sqrt(2) %显示精确结果a=sqrt(sym(2) %显示精确结果double(a) sym(2)/sym(3) %显示精确结果2/5+1/3 sym(2/5+1/3) %显示精确结果sym(2)/sym(5)+sym(1)/sym(3) %显示精确结果sym 函数定义符号表达式:单个变量定义法,整体定义法单个变量定义法a=sym(a)
2、b=sym(b) c=sym(c) x=sym(x) f=a*x2+b*x+c 整体定义法f=sym(a*x2+b*x+c) g=f2+4*f-2 (2) 、使用 syms 函数定义符号变量和符号表达式一次可以创建任意多个符号变量syms var1 var2 var3syms a b c x f=a*x2+b*x+c g=f2+4*f-2 (3) 、符号方程的生成函数:数字和变量组陈的代数式方程:函数和等号组成的等式用 sym 函数生成符号方程:equation1=sym(sin(x)+cos(x)=1) 2、符号变量的基本操作(1) 、findsym 函数用于寻找符号变量findsym(f)
3、 :找出 f 表达式中的符号变量findsym(s,n):找出表达式s 中 n 个与 x 接近的变量syms a alpha b x1 y findsym(alpha+a+b) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - . . findsym(cos(alpha)*b*x1+14*y,2) %x1,y findsym(y*(4+3i)+6j) findsym(cos(alpha)*b*x1+14*y,1) %x1 fin
4、dsym(cos(alpha)*b*x1+14*y,3) %x1,y,b (2) 、任意精确度的符号表达式digits 函数设定所用数值的精度digits:在 command window 显示当前设定的数值精度digits(D):设置数值的精度为D D=digits:在 command window 中返回当前设定数值精度digits digits(100) D=digits vpa 函数进行可控精度运算R=vpa(S) :显示符号表达式S在当前精度D 下的值, D 是使用 digits 函数设置的数值精度vpa(S,D):显示符号表达式S在精度 D 下的值, D 不是当前精度值,只是临时设
5、置的r=vpa(pi) r=vpa(pi,1000) q=vpa(hilb(2) q=vpa(hilb(2),6) (3) 、数值型变量与符号型变量的转换形式数值型变量t 转换成符号型变量有理数形式: sym(t)或 sym(t, r) 浮点数形式: sym(t, f ) 指数形式: sym(t,e) 指数精度形式:sym(t,d) t=0.1 sym(t) sym(t,r) sym(t,f) sym(t,e) sym(t,d) 可以通过digits 函数改变精度digits(7) sym(t,d) 也可以用于矩阵,但是矩阵只能转换为有理数形式A=hilb(4) A=sym(A) A=sym(
6、A,d) %报错A=sym(A,e) %报错A=sym(A,f) %报错3、符号表达式(符号函数)的操作(1) 、四则运算(与通常算术式一样)syms x y a b fun1=sin(x)+cos(y) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - . . fun2=a+b fun1+fun2 (2) 、合并同类项collect(S,v):将符号矩阵S中所有同类项合并,并以v 为符号变量输出collect(S):使用 fi
7、ndsym 函数规定的默认变量,代替上式的v syms x y collect(x2*y+y*x-x2-2*x) f=-1/4*x*exp(-2*x)+3/16*exp(-2*x) collect(f) (3) 、因式分解horner(P):将表达式P进行因式分解syms x fun1=2*x3+2*x2-32*x+40 horner(fun1) fun2=x3-6*x2+11*x-6 horner(fun2) (4) 、简化simplify(S):将表达式 S中的每个元素都进行简化,即便使用多次simplify 也不一定能得到最简形式syms x fun1=(1/x+7/x2+12/x+8)
8、(1/3) sfy1=simplify(fun1) sfy2=simplify(sfy1) simplify(sin(x)2+cos(x)2) simple(S):使用多种代数方法对S进行简化,显其中最简单的结果R,how=simple(S):R为最简结果, how 为简化方法的字符串s=2*cos(x)2-sin(x)2 simple(s) R how=simple(s) simple(f) (5) 、subs 函数用于替换求值subs 函数可以将符号表达式的符号变量替换为数值变量subs(S) :将 S中自由符号变量用调用函数中的值或是MATLAB工作区间值替换subs(S,new):将
9、S中自由符号变量用数值型变量或表达式new 替换subs(S,old,new):将 S中符号变量old 用 数值型变量或表达式new 替换syms x y f=x2*y+5*x*sqrt(y) subs(f) subs(f,x,3) subs(f,y,3) subs(f,3) %与 subs(f,x,3)结果相同用户没指定被替换的符号变量,对单个字母的变量,MATLAB选择在字母表中与x 接近的字母,若有两个变量离x 一样近,则选择字母表中靠后的那个findsym(f,1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
10、心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - . . syms s t g=s+t findsym(g,1) %找到 t subs(g,1) %替换为 s+1 多个变量替换syms a b subs(cos(a)+sin(b),a,b,sym(alpha),2) 用矩阵替换syms t x y subs(exp(a*t),a,-magic(2) subs(x*y,x,y,0 1;-1 -1,1 -1;-2 1) (6) 、反函数g=finverse(f):求函数 f 的反函数,返回g 也是符号函数g=finverse(f,v):设定 f 的自
11、变量是v,当 f 包括不止一个变量时最好使用该命令syms x y f=x2+y finverse(f,y) finverse(f) %由于没指明自变量,给出警告syms x f=x2 g=finverse(f) %x2 的反函数不唯一,默认给出正值fg=simple(compose(g,f) %验证反函数正确性(7) 、复合函数compose(f,g):返回 f=f(x),g=g(y)的复合函数f(g(y),x 是 findsym 定义的 f 的符号变量,y 是findsym 定义的 g 的符号变量compose(f,g,z):返回 f=f(x),g=g(y)的复合函数f(g(z),返回函数
12、以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=sin(y) h=xt p=exp(-y/u) compose(f,g) compose(f,g,t) compose(h,g,x,z) compose(h,g,t,z) compose(h,p,x,y,z) compose(h,p,t,u,z) 符号矩阵的生成和运算1、符号矩阵的生成(1) 、使用 sym 函数直接生成符号矩阵a1=
13、sym(1/3 2/3 5/7;9/11 11/13 13/17;17/19 19/23 23/29) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - . . a1=sym(1/3,0.2+sqrt(2),pi;2/7,sin(x),cos(x),log(x);sin(x)2,sin(22*x),exp(x) %长 度 不 一致的行补 0 (2) 、用生成子矩阵的方法生成符号矩阵与字符串矩阵的直接输入法类似,同一列元素长度须相
14、同(不同补0)a=100,cos(x);1/s,x (3) 、由数值矩阵转换为符号矩阵系统首先将自动在MATLAB工作区间将数值型变量转换为符号型变量,用户也可以用sym 函数进行转换M=30 1 1 1;6 1 5 9;9 8 25 4;32 45 62 0 S=sym(M) M1=0.3 0.33 0.333 1/3;3.14 3.142 3.1416 pi;log(2) log(3) log(5) log(7);sin(1) cos(1) tan(1) atan(1) S1=sym(M1) 2、符号矩阵及符号数组的运算(1) 、符号矩阵的四则运算A+B和 A-B同型矩阵可以分别对对应分量
15、进行加减,若 A 与 B 至少有一个为标量,则把标量扩大为与另一个同型的阵列A*B 为线性代数中定义的矩阵乘法AB 实现左除, X=AB 为符号线性方程组A*X=B 的解, AB 近似等于inv(A)*B,X不存在或不唯一,则产生警告,A 可以是非方阵,要求方程组必须是相容的A/B 实现右除, X=B/A 为符号线性方程组X*A=B 的解, B/A 近似等于B*inv(A) ,X 不存在或不唯一,则产生警告,A 可以是非方阵,要求方程组必须是相容的m=sym(x,x2,x*2,1/x) n=sym(2*x,y,x,x2) m+n m-n m*n %出错mn m/n %出错(2) 、符号数组的四
16、则运算若有标量,则扩展为同型阵列.*乘法./右除左除q=sym(3 4 9 6;x y z w;a b c d) p=sym(x 1/x x2 x3;a b c d;5 2 3 6) q.*p q./p q.p r=q*p %矩阵行列不匹配,出错(3) 、矩阵和数组的逆运算A 实现矩阵的Hermition 转置,若 A为复数矩阵,则A 为共轭转置q=sym(3 4 9 6;x y z w;a b c d) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - -
17、- - - - - - - . . q %符号变量具体值不知,只能用conj 给出q. %普通转置(4) 、矩阵和数组的幂运算AB 实现矩阵幂运算,若A 为标量 B 为方阵, AB 用方阵 B 的特征值与特征向量计算数值。若 A、B均为矩阵,则返回错误A.B 实现数组幂运算,若A 与 B 为同型矩阵,则按对应分量进行计算。若A 与 B 中至少有一个为标量,则现将标量扩大为另一个同型的阵列p=sym(x 1/x x2 x3;a b c d;5 2 3 6) q=sym(3 4 9 6;x y z w;a b c d;1 3 5 7) q2 p2 %p 矩阵不为方阵,报错q.2 p.2 (5) 、
18、符号矩阵的秩rank(A):求出方阵A 的线性不相关的独立行和列的个数rank(A,tol):求出比 tol 值大的值的个数,在上个命令中默认tol=max(size(A)*norm(A)*eps a=sym(1 1/x x2;xin(x) cos(x) tan(x);log(x) 2 9) rank(a) (6) 、符号矩阵的逆和行列式运算inv(X):求方阵X的逆,当 X奇异或者范数很小时,系统给出一个出错信息det(X):求方阵X的行列式h=sym(hilb(4) inv(h) det(h) b=sym(1 x x2;0 0 sin(x);0 0 log(x) inv(b) %b 矩阵行
19、列式为0,不存在逆,返回FAIL b=sym(1,x;x;x2) inv(b) %矩阵不是方阵,报错符号微积分1、符号极限limit(F,x,a):计算符号表达式当x趋于 a 时 F=F(x)的极限值limit(F,a):x 默认为 findsym(F) limit(F) :a 默认为 0 limit(F,x,a,right ) 或 Limit(F,x,a,left ):计算右极限和左极限limit(sin(x)/x) limit(x-2)/(x2-4),2) limit(1-2*1/x)(3*x),x,inf) limit(1/x,x,0,left) limit(1/x,x,0,right)
20、 limit(sin(x+h)-sin(x)/h,h,0) 2、符号微分和求导(1) 、diff 函数的使用diff(x):根据 findsym(x)命令返回的自变量v,求表达式x 的一阶导数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - . . diff(x,n) :根据 findsym(x)命令返回的自变量v,求表达式x的 n 阶导数diff(x,v )或 diff(x,sym( v ):对 v 求 x 的一阶导数diff
21、(x, v,n):对 v 求 x 的 n 阶导数syms x y diff(x3+3*x2+2*x+5) diff(sin(x3),6) diff(sin(x3),x,6) diff(sin(x3),v,6) %对 v 求 x 的 6 阶导数,结果为0 diff(x*y+y2+sin(x)+cos(y),y) diff(x*y+y2+sin(x)+cos(y),y,3) (2) 、jacobian 函数的使用jacobian(f,v):计算数量或向量f 对向量v 的 jacobi 矩阵,所得矩阵的第i 行第 j 列的数是df(i)/dv(j) ,当 f 为数量的时候, 该命令返回的是f 的梯度
22、,若此时 v 也是数量, 则 jacobian(f,v)等价于 diff(f,v) syms x y z a=x2+x*y;sin(x)*cos(y) jacobian(a,x,y) 3、符号积分int(S):根据由findsym(S)命令返回的自变量v,求 S的不定积分,其中S为符号矩阵或符号数量int(S,v):求 S对 v 的不定积分int(S,a,b):求 a 到 b 的定积分int(S,v,a,b):求 a 到 b 的定积分syms x x1 alpha u t; A=cos(x*t) sin(x*t);-sin(x*t) cos(x*t) int(1/(1+x2) int(sin(
23、alpha*u),alpha) int(besselj(1,x),x) int(x1*log(1+x1),0,1) int(4*x*t,x,2,sin(t) int(exp(t) exp(alpha*t) int(A,t) 符号积分变换1、Fourier 变换及其逆变换(1) 、Fourier 变换F=fourier(f) :以 x 为默认独立变量,返回w 的函数,若f 是 w 的函数,则返回的F是 t 的函数F=fourier(f,v):返回的 F以 v 为自变量fourier(f,u,v) :返回的函数以v 为自变量, f 以 u 为自变量fourier(1/t) fourier(exp(
24、-x2),x,t) fourier(exp(-t)*sym(Heaviside(t),v) fourier(diff(sym(F(x),x,w) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - . . (2) 、Fourier 反变换f=ifourier(F) :以 w 为默认独立变量,默认的返回函数是以x 为自变量的函数,若F以 x为变量,返回函数以t 为自变量f=ifourier(F,u) :返回的函数f 以 u 为自变量
25、f=ifourier(F,v,u):返回的函数f 以 u 为自变量, F以 v 为自变量syms t u v w x ifourier(w*exp(-3*w)*sym(Heaviside(w) ifourier(1/(1+w2),u) ifourier(v/(1+w2),v,u) ifourier(sym(fourier(f(x),x,w),w,x) 2、Laplace 变换及其逆变换(1) 、Laplace 变换L=laplace(F):F以 t 为独立自变量,返回函数L以 s 为变量,若F以 s 为自变量,则L以 t 为自变量L=laplace(F,t) :返回函数以t 为自变量L-lap
26、lace(F,w,z) :返回函数L 以 z 为自变量, F以 w 为自变量syms a s t w x laplace(t5) laplace(exp(a*s) laplace(sin(w*x),t) laplace(cos(w*x),w,t) laplace(xsym(3/2),t) laplace(diff(sym(F(t) (2) 、Laplace 反变换F=ilaplace(L):L 以 s为独立自变量,返回函数以t 为自变量,若L 以 t 为自变量,返回函数以 x 为自变量F=ilaplace(L,x):返回函数以x 为自变量F=ilaplace(L,y,x):返回函数以x 为自变
27、量, L 以 y 为自变量syms s t w x y ilaplace(1/(s-1) ilaplace(1/(t2-1) ilaplace(tsym(5/2),x) ilaplace(y/(y2+w2),y,x) ilaplace(sym(laplace(F(x),x,s),s,x) 3、Z 变换及其反变换(1) 、Z变换F=ztrans(f):返回函数以z 为自变量, f 以 n 为独立自变量,若f 以 z 为自变量,返回函数以w 为自变量F=ztrans(f,w) F=ztrans(f,k,w) syms k n w z ztrans(2n) ztrans(sin(k*n),w) zt
28、rans(cos(k*n),k,z) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - . . ztrans(cos(k*n),n,w) ztrans(sym(f(n+1) (2) 、Z反变换f=iztrans(F): F以 z 为独立自变量,f 以 n 为自变量,若F 以 n 为自变量, f 以 k 为自变量f=iztrans(F,k) f=iztrans(F,w,k) syms x z k iztrans(z/(z-2) i
29、ztrans(exp(x/z),z,k) 符号代数方程的求解1、符号线性方程组的求解X=linsolve(A,B):求解 AX=B的解a=rand(4) b=1;2;3;4 linsolve(a,b) 2、符号非线性方程组的求解F(X)=0 X=fsolve(fun,X0):以 X0为初始矩阵来求解方程fun,fun 接受输入并返回一个向量,使得F=fun(X) %求解方程组%3*x(1)2-x(2)2=0 %3*x(1)*x(2)2-x(1)2-1=0 建立 myfun2.m 文件function y=myfun2(x) y(1)=3*x(1)2-x(2)2; y(2)=3*x(1)*x(2
30、)2-x(1)2-1; 运行代码x=0.8 0.4 x=fsolve(myfun2,x) 3、一般符号代数方程组的求解solve( eqn1,eqn2,eqnN ) solve( eqn1,eqn2,eqnN, var1,var2,varN ) solve( eqn1,eqn2,eqnN, var1, var2, ,varN ) eqns 是一些具体方程的符号表达式或字符串,而vars 是一些未知的符号变量或未知额的字符串solve(p*sin(x)=r) x y=solve(x2+x*y+y=3,x2-4*x+3=0) S=solve(x2*y2-2*x-1=0,x2-y2-1=0) %S是
31、一个结构体u v=solve(a*u2+v2=0,u-v=1) %a 被作为参数求解关于u 和 v 的方程组S=solve(a*u2+v2=0,u-v=1,a,u) %v 作为参数a u v=solve(a*u2+v2=0,u-v=1,a2-5*a+6) x y=solve(sin(x+y)-exp(x)*y=0,x2-y=2) %系统无法给出符号解,只给出数值解名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - . . 符号微分
32、方程的求解dsolve(eqn1,eqn2,eqn3, ):求符号解,初始条件,边界条件也可以算作eqns,默认输出函数的自变量为t,D 表示对 x 一阶微分, D2 表示对 x 二阶微分,以此类推dsolve(Dx = -a*x) x = dsolve(Dx = -a*x,x(0) = 1,s) dsolve(D2y = -a2*y, y(0) = 1, Dy(pi/a) = 0) 图示化符号函数计算器1、单变量符号函数计算器使用 funtool 函数来调用图示化单变量符号函数计算器(1) 、输入框功能f=显示代表函数f 的符号表达式,按Enter 显示图像(图形窗口1)g=显示代表函数g
33、的符号表达式,按Enter 显示图像(图形窗口2)x=显示用于函数f 与 g 的绘制区间,按Enter 改变图像a=显示一个用于改变函数f 的常量因子(2) 、控制按钮的功能运算操作按钮的功能df/dx :函数 f 的导数int f:函数 f 的积分simple f:化简函数f num f:函数 f 的分子den f:函数 f 的分母1/f :函数 f 的倒数finv:函数 f 的反函数f+a:用 f(x)+a 代替函数 f(x) f-a:用 f(x)-a 代替函数 f(x) f*a :用 f(x)*a 代替函数 f(x) f/a :用 f(x)/a 代替函数 f(x) fa:用 f(x)a
34、代替函数 f(x) f(x+a):用 f(x+a)代替函数 f(x) f(x*a) :用 f(x*a)代替函数 f(x) f+g:用 f(x)+g(x)代替函数 f(x) f-g:用 f(x)-g(x)代替函数 f(x) f*g :用 f(x)*g(x) 代替函数 f(x) f/g :用 f(x)/g(x) 代替函数 f(x) g=f: f*g :用 f(x)代替函数 g(x) swap:函数 f(x)与 g(x)互换系统操作按钮的功能Insert;将函数f(x)保存到函数内存列表中的最后Cycle:用内存函数列表中的第二项代替函数f(x) Delete:从内存函数列表中删除函数f(x) Re
35、set:重新设计计算器为初始状态Help:显示在线的关于计算器的帮助Demo:运行该计算器的演示程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - . . Close:关闭计算器的三个窗口2、泰勒级数逼近计算器使用 taylortool 函数来调用图示化泰勒级数逼近计算器绘制函数f 的前 N 阶泰勒级数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
36、理 - - - - - - - 第 11 页,共 13 页 - - - - - - - - - . . 利用 Maple 的深层符号计算资源MATLAB2010a已经不再支持maple 内核名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - . . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -