当前位置:文档之家› matlab符号计算实例

matlab符号计算实例


例题 1:
f
=3
1 x3
+
6 x2
+ 12 + 8 x
syms x f=(1/x^3+6/x^2+12/x+8)^(1/3) g1=simple(f) pretty(f) 例题 2: 公因子法简化表达 clear A=sym('[a b;c d]') [V,D]=eig(A) subexpr([V;D])%提取公因式默认 sigma Dw=subexpr(D,'w')%提取公因式 记为 w [RVD,w]=subexpr([V;D],'w') %与上相同 例题 3: 通用置换指令 (1) clear syms a b x; f=a*sin(x)+b (2)RES=subs(RS,old,new)或者 RES=subs(RS,new) f1=subs(f,sin(x),'log(y)') (3)数值代替 若其中还存在符号变量,表达式仍为符号 f2=subs(f,a,3.11) class(f2) (4)胞元代替 f3=subs(f,{a,b,x},{2,5,sym('pi/3')}) class(f3) (7)数组代替 t=0:pi/10:2*pi; f6=subs(f,{a,b,x},{2,3,t}) plot(t,f6) (8)两次替代
y2=subs(y(2),'C3',k); ezplot(y2,[-6,6,-4,8],1) end hold off box on legend('奇解','通解','Location','Best') ylabel('y') title(['\fontsize{14}微分方程',' (y '')^2 – xy '' + y = 0 ','的解']) 例题 13: 代数方程 S=solve('eq1','eq2',…,'eqn','v1','v2',…,'vn') 或者 S=solve(eq1,eq2,…,eqn,v1,v2,…,vn) 慎用要注意顺序 (1)符号解 eq1=sym('d+n/2+p/2-q'); eq2=sym('d+n-p+q-10'); eq3=sym('d-n/4-p+q'); eq4=sym('-8*d-n+p+q-1'); S=solve(eq1,eq2,eq3,eq4,'d','n','p','q'); disp([' d',' n',' p',' q']) disp([S.d,S.n,S.p,S.q]) (2)数值解 A=sym([1 1/2 1/2 -1;1 1 -1 1;1 -1/4 -1 1;-8 -1 1 1]); b=sym([0;10;0;1]); X1=A\b %X1=inv(A)*b (3)注意,无解析解则给出近视解 clear all,syms x; s=solve('(x+2)^x=2','x') xs=(s+2)^s
例题 12: 微分方程奇解和通解,注意既无显示解又无隐式解则会警告 S 为 空
clear all y=dsolve('(Dy)^2-x*Dy+y=0','x') clf,hold on hy1=ezplot(y(1),[-6,6,-4,8],1); set(hy1,'Color','r','LineWidth',5) for k=-2:0.5:2
(3)
dydx=solve(dgdx1,'dydx'2,….xn)=0, ∂xi ∂x j
=
∂ − ∂x j
∂ ∂ xi
f ( x1, x2 ,..., xn ) f ( x1, x2 ,..., xn )
syms x y;f=(x^2-2*x)*exp(-x^2-y^2-x*y) DyDX=-diff(f,x)/diff(f,y)
(1) clear all reset(symengine) Da=1.2;Dw=1/3; syms sa sw sx sy sz syms A B positive syms C real (2) evalin(symengine,'anames(Properties)') (3) clear A syms (4) evalin(symengine,'anames(Properties)') (5) syms B clear syms (6) evalin(symengine,'anames(Properties)')
4. 符号对象的清除: clear x clear all syms x clear 撤销假设 evalin(symengine,’getprop(x)’) 查看假设
evalin(symengine,’anames(Properties)’) 列出 MuPAD 假设 reset(symengine)
5. 符号数字的精度 digits 默认 32 位 digits(n)或 digits n xs=vpa(x) xs=vpa(x,n) 6. 符号表达式的操作 collect 合并同类项 expand 对指定项展开 factor 因式分解 numden 提取公因式 simplify 恒等式简化
pretty 习惯方式 coeffs 多项式系数 7. 例题
例题 6: 偏导 jacobian(f,v)
syms x1 x2; f=[x1*exp(x2) x2 cos(x1)*sin(x2)]; v=[x1;x2]; Jf=jacobian(f,v) 例题 7: 隐函数求导 (1) syms x g=sym('cos(x+sin(y(x)))=sin(y(x))') dgdx=diff(g,x) % (2) dgdx1=subs(dgdx,'diff(y(x),x)','dydx') % 替换
例题 5: 求导 diff(f,v,n) 默认一阶 r s t u v w x y z 先后关系,x,y,w,z... syms a t x; f=[a,t^3;t*cos(x),log(x)]; df=diff(f,t) dfdt2=diff(f,t,2)%2 阶导 dfdxdt=diff(diff(f,t),t)%2 阶导
符号计算实例
1. 符号计算的优点: 所谓符号计算是指解算数学表达式、方程时,不是在离散化的数值点上进行 的,而是凭借一系列的恒等式和数学定理,通过推理和演算获得的解析结果。这 种计算建立在数值完全准确表达和严格推演的基础之上,因而所得结果完全准 确。当然,也存在者不足,后文将会提到。 符号变量的优点是,使用符号变量运算得到的只是一个解析解,例如, 在符号变量运算过程中 pi 就用 pi 表示,而不是具体的近似数值 3.14 或 3.14159。使用符号变量进行运算能最大限度减少运算过程中因舍入造成的 误差。符号变量也便于进行运算过程的演示。 2. 符号对象的创建: 2.1 单个符号变量 S = sym(A)将非符号对象(如,数字,表达式,变量等)A 转换为符号 对象,并存储在符号变量 S 中。 x = sym('x') 创建符号变量 x,其名字是'x'。示例:alpha = sym('alpha') x = sym('x', 'real') 这 里 假 设 x 是 实 数 , 因 此 有 x 的 共 轭 conj(x)等 于 x。 示 例 : r = sym('Rho','real') k = sym('k', 'positive') %09 版不能用这个方法实现 这里创建一个正的(实数)符号变量。 x = sym('x', 'clear') 创建一个没有额外属性的纯形式上的符号变量 x(例如,创建符号变量 x,但是并没指定它是正的或它是一个实数)。为了兼容旧的 MATLAB 版本, x = sym('x','unreal')的功能和 x = sym('x', 'clear')一样。 S = sym(A, flag) 把一个数值标量或矩阵转换为符号型的对象。这里 flag 参数的值可以 是:'r', 'd', 'e', or 'f',它指定了对浮点数进行转换时的规则: 'f':表示“floating-point”。这样,所有的数值都用 N*2^e 或-N*2^e 这种形 式表示。N 和 e 都为整数,且 N 不小于 0。例如,sym(1/10, 'f')被转换为 3602879701896397/36028797018963968。 'r ': 表 示 “r ati o nal ”( 有 理 数 形 式 )。 'e':表示“estimate error”。这种形式会在'r'的基础上添加一个由包含 eps
例题 8: taylor(f,n,v,a) 得到最高是 n-1 阶 求 8 阶展开 syms x r=taylor(x*exp(x),9,x,0) pretty(r) 例题 9: 级数求和 s=symsum(f,v,a,b)
相关主题