[ (2 x - 1) (x - 1)]
[ ]
[ 4 ]
[---- 3 x + 4 ]
[ 2 ]
[ x ]2 E3 b1 }" y9 Q/ R7 d# p6 B
(2)请读者自己运行以下指令,显示结果应与指令 <3> 相同。
pretty(simplify(n./d)) % 注意这里用的是“数组除”,而不是“矩阵除”
[ 3 2 ]
[ x + 5 x - 3 ]
[3/2 -----------------]
[ (2 x - 1) (x - 1)]) ?% r: k( J u0 J4 x+ L# Z
[ ]
[ 4 ]
[---- 3 x + 4 ]. h; B6 d. W+ T" c2 T$ F
[ 2 ], [6 G. n( q6 e0 z( ]% Z2 G2 g
[ x ]
0 C( O3 ~/ m$ e( Z' H! ~
【 * 例 6.2.1 -5 】简化 4 k9 x; _# C' ]9 J, ]3 h& U
(1)运用 simplify 简化(即使多次运用 simplify 也不能得到最简形式。)
syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3);
计算机教程Matlab 符号表达式和符号函数的操作来自www.itwen.comIT WEN计算机教程网 & q# x( d- D3 I% U9 {9 g
sfy1=simplify(f),sfy2=simplify(sfy1)
sfy1 = : v6 Y5 V& J7 q# c$ |- D$ f" Q& w8 u
((2*x+1)^3/x^3)^(1/3)
sfy2 =7 A) v0 \% s' Z9 n0 f% i9 l
((2*x+1)^3/x^3)^(1/3)1 b h. [7 S* I7 r
2 m- Y5 j: R4 y! N# V( N D
(2)运用 simple 简化1 U) W5 O3 v# Z' {) I) |
g1=simple(f),g2=simple(g1)
g1 =
(2*x+1)/x2 w7 g9 M8 D8 l( ~; B6 N! ?
g2 =
2+1/x$ z* v- z' Z9 B
【 * 例 6.2.1 -6 】简化
syms x;ff=cos(x)+sqrt(-sin(x)^2); ' A& B9 ?) L) v3 [( Z& m
ssfy1=simplify(ff),ssfy2=simplify(ssfy1)9 l9 T) x y3 X, W. [9 J/ E7 t
ssfy1 = , ^4 J1 l3 z# g6 g! I
cos(x)+(-sin(x)^2)^(1/2)
ssfy2 =) v3 z v7 [; }" G
cos(x)+(-sin(x)^2)^(1/2)3 `$ r8 i. i7 x( G
gg1=simple(ff),gg2=simple(gg1)
gg1 = 5 g& [& ?/ ` x% d9 q) F% V
cos(x)+i*sin(x)
gg2 =& V$ G* }5 V( E( W
exp(i*x)' S: \2 [- w6 h) e
+ }, r* w2 @6 D, L
6.2.2 符号函数的求反和复合
/ R5 K5 J7 F% j/ N. c" a0 J
5 `; t7 k) P( a
【 * 例 6.2.2 -1 】求 的反函数
syms x;f=x^2;g=finverse(f)
Warning: finverse(x^2) is not unique.
> In E:\MAT53\toolbox\symbolic\@sym\finverse.m at line 43, q$ \/ F2 \ D8 r8 E! q5 C* e
g =
x^(1/2) : G; ?% F* k. A% N6 v; |% w3 p
4 n) o7 q2 w R) g/ g! C6 f
fg=simple(compose(g,f)) % 验算 g(f(x)) 是否等于 x+ S8 t. G9 H5 ~* a! v
fg =
x
【 * 例 6.2.2 -2 】求 的复合函数
, h3 N4 K1 Q$ A" u! n
(1)自变量由机器确定6 x6 @. H7 \" Q' r: v0 U
syms x y u fai t;f=x/(1+u^2);g=cos(y+fai);fg1=compose(f,g) 5 P* Z# f9 N) u% ]( R0 y, N2 L
fg1 = ! Q7 z3 `! c$ `- u
cos(y+fai)/(1+u^2)& L3 H# P. K+ W! Y5 v! O- a
" @% x3 X/ D/ L6 M8 M
(2)指定自变量4 T5 \0 R7 e1 L- k
# C9 h8 y$ v, l1 {( X5 X* x
fg2=compose(f,g,u,fai,t) 8 X# j1 c+ T! |( y/ [6 |
fg2 =
x/(1+cos(y+t)^2)
6.2.3 置换及其应用
6.2.3.1 自动执行的子表达式置换指令2 J/ ~2 r5 Y4 `9 @6 a2 P" }
【 * 例 6.2.3 .1-1 】演示子表达式的置换表示。0 m8 d) S7 ^) B
clear all,syms a b c d W;[V,D]=eig([a b;c d]); 5 r- {, j0 Q4 [/ @ k) R
[RVD,W]=subexpr([V;D],W) %<2>" B* P8 \7 a' z8 V+ D
RVD =4 b8 [+ H( m" c7 s$ B. O, p; P
[ -(1/2*d-1/2*a-1/2*W)/c, -(1/2*d-1/2*a+1/2*W)/c]9 _, D9 x# D+ c
[ 1, 1]/ V6 [; s4 ^( H* S
[ 1/2*d+1/2*a+1/2*W, 0]8 j9 T1 e& C) _- V6 C
[ 0, 1/2*d+1/2*a-1/2*W]8 A& G* A \4 c3 E. {6 q) \2 l4 c
W =
(d^2-2*a*d+a^2+4*b*c)^(1/2)
; H$ U% Z: U0 y* M: o T( |! ?) r Q
6.2.3.2 通用置换指令
% F0 g( L8 b' d" g/ v3 M
【 * 例 6.2.3 .2-1 】用简单算例演示 subs 的置换规则。4 n6 Z+ E; d0 a2 Y: ^
(1)产生符号函数
syms a x;f=a*sin(x)+5; - w% M- ~, }" C0 q# k
+ \2 e. U2 D4 R9 j
(2)符号变量置换& J& j# G9 K" T9 D6 j
f1=subs(f,'sin(x)',sym('y')) %<2>
f1 = : d0 f9 @* o2 `
a*y+55 D& [3 E) E8 _, z3 c# |
5 ~% [" L' F* m- o# h
(3)符号常数置换
f2=subs(f,{a,x},{2,sym(pi/3)}) %<3>
f2 = 8 S k( ]9 f4 S: z
3^(1/2)+5 q3 D: I6 x% O) S
; b# |& \0 A( P2 {, }
(4)双精度数值置换(即所有自由变量被双精度数值取代。取 a=2 , x=pi/3 )1 o2 z2 ?* `% x2 _: H) ^3 y
f3=subs(f,{a,x},{2,pi/3}) %<4> ) ?' X3 h% {0 m, n4 a$ ~
f3 = 7 |1 z) N% n! W9 K
6.7321 + s, A6 n0 k6 }. C7 D
(5)数值数组置换之一(取 a=2 , x=0:pi/6:pi )
f4=subs(subs(f,a,2),x,0:pi/6:pi) %<5> 7 @4 {6 y0 u2 X; ?- B% q
f4 = 6 e8 k1 P& w# D2 z4 h# w
5.0000 6.0000 6.7321 7.0000 6.7321 6.0000 5.0000 # J; ~0 q w& F& P0 x+ o
(6)数值数组置换之二(取 a=0:6 , x=0:pi/6:pi ): T3 W2 J. C2 x! ]
f5=subs(f,{a,x},{0:6,0:pi/6:pi}) %<6>
f5 = 8 y& s7 F2 {0 f6 f7 M: [( i5 I
5.0000 5.5000 6.7321 8.0000 8.4641 7.5000 5.0000
1 m6 p" V! Q8 t$ [ I5 z4 h k
6.2.4 符号数值精度控制和任意精度计算% q% ~- D6 u7 }
6.2.4.2 任意精度的符号数值
. w/ E( t8 v: s9 s) K- f
【 * 例 6.2.4 .2-1 】指令使用演示。5 K1 |' n! M. H. k8 ]+ K6 ~/ |
digits % 显示省缺符号数值计算相对精度
Digits = 32 $ r2 K2 x. }; _( [; o6 v
p0=sym('(1+sqrt(5))/2'); %p0 为 (1+sqrt(5))/2 准确值
p1=sym((1+sqrt(5))/2) %p1 是 (1+sqrt(5))/2 在数值环境下的近似值
e01=vpa(abs(p0-p1)) % 在符号环境 32 位省缺精度下,观察 p0, p1 间误差7 k) p& U. I' r# Z
p1 =
7286977268806824*2^(-52)# @" O3 ?! P5 a {1 ]
e01 =
.543211520368250e-16
p2=vpa(p0) %p2 是 p0 在 32 位相对精度下的近似
e02=vpa(abs(p0-p2),64) % 在 64 位相对精度下,观察 p0, p2 间的误差
p2 = 1 w, l! F0 u3 {/ h
1.6180339887498948482045868343657
e02 =
.61882279690820194237137864551377e-31
digits % 验证 vpa 变精度计算不影响全局的符号数值计算精度
Digits = 32 " ~# m2 n/ p4 w" U/ M) |. P# q" z# [; M
6.2.5 符号对象与其它数据对象间的转换* @9 N4 M4 Z3 [0 p
+ R: K6 g9 J3 E' D; a6 U
【 * 例 6.2.5 -1 】符号、数值间的转换。
phi=sym((1+sqrt(5))/2) % 把数值对象转换成符号常数0 z, p+ k7 t% n. U) c
double(phi) % 把符号常数转换为双精度存储的数值
phi =
7286977268806824*2^(-52)
ans =
1.6180% _. o+ m @7 `% Q! J
+ \0 e* O+ @5 o
【 * 例 6.2.5 -2 】各种多项式表示形式之间的转换
syms x;f=x^3+2*x^2-3*x+5; % 生成符号多项式, @: a L1 N: B! E ^- E4 u- A- i
sy2p=sym2poly(f) % 由符号多项式产生数值系数行向量# R; D- h8 ?8 |
p2st=poly2str(sy2p,'x') % 把系数行向量变成易读表示式
p2sy=poly2sym(sy2p) % 把数值系数行向量再转换为符号多项式
pretty(f,'x') % 显示符号多项式的易读表示形式- | n9 R f7 C& t1 G
sy2p = . A7 L& a" z: N0 b, f3 O
1 2 -3 5# D( r$ J6 ^2 q2 ?" s
p2st =4 A, a- k5 W: b8 |2 W3 o& ?9 _. B
x^3 + 2 x^2 - 3 x + 5
p2sy =
x^3+2*x^2-3*x+5
3 26 A4 M% t5 q; D: b: ^1 }# B
x + 2 x - 3 x + 5
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) | Powered by Discuz! X3.2 |