6 Q, M" K! Y z
[ (2 x - 1) (x - 1)]
[ ]) S, f, ^( D' T4 K
[ 4 ]" b o( {/ s/ W+ G& u J- h
[---- 3 x + 4 ]5 j/ l* [% e9 c/ s8 | |
[ 2 ]
[ x ]+ M6 b1 m1 K* d7 C' B9 o% I% t$ U
s- z" C6 ~8 S/ W
(2)请读者自己运行以下指令,显示结果应与指令 <3> 相同。2 f! ` d6 X1 S; d
pretty(simplify(n./d)) % 注意这里用的是“数组除”,而不是“矩阵除”
[ 3 2 ]
[ x + 5 x - 3 ]; m! E2 x b6 d& T$ w5 b/ i' ~; z
[3/2 -----------------]" k% M, [/ x( _; ?
[ (2 x - 1) (x - 1)]6 F6 U$ c8 P1 k
[ ]
[ 4 ]6 K. V+ s6 t2 Y/ F9 x
[---- 3 x + 4 ]
[ 2 ]% H: y+ I3 X2 @) k- N
[ x ]
【 * 例 6.2.1 -5 】简化 4 V( A9 U7 c3 e' u- x
(1)运用 simplify 简化(即使多次运用 simplify 也不能得到最简形式。)! D o- A- k# n% M* j& s3 [. n) M- y
syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3); - c* e) f0 \0 h2 |, Z. j
计算机教程Matlab 符号表达式和符号函数的操作来自www.itwen.comIT WEN计算机教程网
sfy1=simplify(f),sfy2=simplify(sfy1)
sfy1 = % k- L& Z' M F; {
((2*x+1)^3/x^3)^(1/3)' }$ C; I/ t" O" f
sfy2 =
((2*x+1)^3/x^3)^(1/3)
(2)运用 simple 简化7 {! n3 _7 [ A9 g. A( ^- F
g1=simple(f),g2=simple(g1) 2 _: l9 J, L9 Q9 m( P% o; j* I* X
g1 = ! G. v* m/ Y; ~% s: g; W/ ~4 B; h, H
(2*x+1)/x$ `8 D- E8 ?/ n {% k( ]; R3 x5 T6 g
g2 =
2+1/x
% y9 t& L5 G' J( n$ ~% |
8 O7 r. N( `+ u8 i7 e; X
【 * 例 6.2.1 -6 】简化
syms x;ff=cos(x)+sqrt(-sin(x)^2); - q' m! ~* K9 |* y
ssfy1=simplify(ff),ssfy2=simplify(ssfy1)
ssfy1 =
cos(x)+(-sin(x)^2)^(1/2)
ssfy2 =
cos(x)+(-sin(x)^2)^(1/2)5 f$ c7 ?' |& a$ g
gg1=simple(ff),gg2=simple(gg1) 5 S1 o( K5 d5 M1 o4 k0 Q
gg1 =
cos(x)+i*sin(x)
gg2 =+ A- Z) Q. H5 z e, R! W- M z
exp(i*x)
6.2.2 符号函数的求反和复合
9 ~& L# L' _2 ^+ k- x. u# f+ O9 C
【 * 例 6.2.2 -1 】求 的反函数
syms x;f=x^2;g=finverse(f)
Warning: finverse(x^2) is not unique. 4 Q% h) t0 x; Y; @: R
> In E:\MAT53\toolbox\symbolic\@sym\finverse.m at line 43
g =
x^(1/2)
' r, S0 Z) H. n; O
fg=simple(compose(g,f)) % 验算 g(f(x)) 是否等于 x
fg = 1 w& \4 }8 r& Z- b1 d
x ] j- A6 [, ^9 T7 D
【 * 例 6.2.2 -2 】求 的复合函数
(1)自变量由机器确定
syms x y u fai t;f=x/(1+u^2);g=cos(y+fai);fg1=compose(f,g)
fg1 =
cos(y+fai)/(1+u^2): N" l" w d" c1 s$ s' y
' f8 q, `) j4 a6 x
(2)指定自变量: T1 Y0 A' A; _! X
fg2=compose(f,g,u,fai,t) ! I( H% u# \. J6 b
fg2 =
x/(1+cos(y+t)^2)
6.2.3 置换及其应用0 ?( K( [, }5 B8 W+ y& I7 c
6.2.3.1 自动执行的子表达式置换指令
7 f( X5 F i5 d; [. e* H
【 * 例 6.2.3 .1-1 】演示子表达式的置换表示。
clear all,syms a b c d W;[V,D]=eig([a b;c d]);
[RVD,W]=subexpr([V;D],W) %<2>% e, ^+ [7 N4 g2 L9 s
RVD =
[ -(1/2*d-1/2*a-1/2*W)/c, -(1/2*d-1/2*a+1/2*W)/c], {7 ?' R. t/ u; y
[ 1, 1]
[ 1/2*d+1/2*a+1/2*W, 0]5 y/ z2 o3 {& z6 a( f4 e L
[ 0, 1/2*d+1/2*a-1/2*W]
W =
(d^2-2*a*d+a^2+4*b*c)^(1/2)
; x$ i. }3 A4 u# o8 C- a
0 Y9 C- J0 a4 F7 s& e- ~
6.2.3.2 通用置换指令
【 * 例 6.2.3 .2-1 】用简单算例演示 subs 的置换规则。$ M0 i) F, I; |" V
(1)产生符号函数
syms a x;f=a*sin(x)+5; & L( b) F* ~: Q7 P8 Z/ u+ I6 V
(2)符号变量置换
f1=subs(f,'sin(x)',sym('y')) %<2>
f1 =
a*y+5 U6 j. D: c& q' {
/ b2 q4 s5 X* N4 U! i
(3)符号常数置换" m z8 k% Z3 O' ?7 O
f2=subs(f,{a,x},{2,sym(pi/3)}) %<3>
f2 = 9 W/ e% F; @' G
3^(1/2)+5
(4)双精度数值置换(即所有自由变量被双精度数值取代。取 a=2 , x=pi/3 )# u) ]6 X6 r2 H' b9 {! r6 C
f3=subs(f,{a,x},{2,pi/3}) %<4> 7 `( M, E! g& u- S
f3 = , [7 O$ r5 V$ C t. M
6.7321
(5)数值数组置换之一(取 a=2 , x=0:pi/6:pi )
f4=subs(subs(f,a,2),x,0:pi/6:pi) %<5> . d! [4 }8 w, _6 O
f4 =
5.0000 6.0000 6.7321 7.0000 6.7321 6.0000 5.0000 / Z" Y9 o. [5 X# h1 {3 m6 p, U
(6)数值数组置换之二(取 a=0:6 , x=0:pi/6:pi )
f5=subs(f,{a,x},{0:6,0:pi/6:pi}) %<6> - a+ o* w0 s. ~/ ]5 n5 o2 K
f5 = % Q. n7 b' A; ~* Q! f0 {6 [% b
5.0000 5.5000 6.7321 8.0000 8.4641 7.5000 5.00002 m$ \1 G. q4 m6 _3 N1 G/ k# }9 c1 ]
; P9 ~4 m4 K4 ?
6.2.4 符号数值精度控制和任意精度计算
6.2.4.2 任意精度的符号数值
' v# J. j, t% {' A- T# h$ E5 v
【 * 例 6.2.4 .2-1 】指令使用演示。
digits % 显示省缺符号数值计算相对精度 v6 R" _4 z$ I$ S- ?: G+ _5 Q( N
Digits = 32
p0=sym('(1+sqrt(5))/2'); %p0 为 (1+sqrt(5))/2 准确值/ ]# b/ M: E$ a
p1=sym((1+sqrt(5))/2) %p1 是 (1+sqrt(5))/2 在数值环境下的近似值: }4 [! N/ B: k* P, y+ V
e01=vpa(abs(p0-p1)) % 在符号环境 32 位省缺精度下,观察 p0, p1 间误差
p1 = : u) ?1 O- X- p# N" V9 P# m/ R
7286977268806824*2^(-52)
e01 =
.543211520368250e-16
p2=vpa(p0) %p2 是 p0 在 32 位相对精度下的近似' p* e" R: H0 |# z' T4 B
e02=vpa(abs(p0-p2),64) % 在 64 位相对精度下,观察 p0, p2 间的误差
p2 = : o; T5 T; s- A8 {
1.6180339887498948482045868343657
e02 =, I3 G2 K' k% p, G& ` \ S
.61882279690820194237137864551377e-319 G+ G7 n2 D. T! F9 a
digits % 验证 vpa 变精度计算不影响全局的符号数值计算精度8 _7 A" ^9 S' e8 _$ I
Digits = 32 ; L( r6 L5 }. l7 A
9 v& i8 D; z# o
4 L2 ~& d4 J- k+ T6 v
6.2.5 符号对象与其它数据对象间的转换/ Y4 F4 t6 {7 e9 R& y- r2 k# b
1 ?$ P4 h- H4 @; }
【 * 例 6.2.5 -1 】符号、数值间的转换。
phi=sym((1+sqrt(5))/2) % 把数值对象转换成符号常数
double(phi) % 把符号常数转换为双精度存储的数值
phi = ( Z r0 A% T5 r9 y" T; c8 n) T: f& w/ o# P
7286977268806824*2^(-52)
ans =, P2 r G% D1 J
1.6180- G" d' I) l0 t6 C0 u3 V
7 R+ ? M% S1 i8 ^- S( q
【 * 例 6.2.5 -2 】各种多项式表示形式之间的转换
syms x;f=x^3+2*x^2-3*x+5; % 生成符号多项式
sy2p=sym2poly(f) % 由符号多项式产生数值系数行向量
p2st=poly2str(sy2p,'x') % 把系数行向量变成易读表示式9 C) }) [: d1 D
p2sy=poly2sym(sy2p) % 把数值系数行向量再转换为符号多项式
pretty(f,'x') % 显示符号多项式的易读表示形式7 p3 M; R. S y5 c
sy2p = ' N6 M2 H9 k3 l' v' i1 f$ J1 P
1 2 -3 5
p2st =5 g+ q& g' Y- m: B; ]1 }6 h
x^3 + 2 x^2 - 3 x + 58 v8 s7 H5 m, v7 y- d |, e0 x
p2sy =. K* j3 n) K8 M8 K
x^3+2*x^2-3*x+5$ X0 e; V' ?* O
3 2
x + 2 x - 3 x + 5
欢迎光临 EDA365电子论坛网 (https://www.eda365.com/) | Powered by Discuz! X3.2 |