找回密码
 注册
关于网站域名变更的通知
查看: 1148|回复: 2
打印 上一主题 下一主题

Matlab 符号表达式和符号函数的操作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-7 06:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
Matlab 符号表达式和符号函数的操作
: R( S* s7 F9 J( Z6 |
- {6 x) ~4 u+ b6 C- V
6.2 符号表达式和符号函数的操作
* G% w; ~; a+ _" d, }8 W$ k6.2.1 符号表达式的操作
5 Q% m+ y' v5 F2 I8 y% [6 K8 g- R; O3 S
【 * 例 6.2.1 -1 】按不同的方式合并同幂项。8 l) ?3 s% G  \% `. b3 \0 d' m
EXPR=sym('(x^2+x*exp(-t)+1)*(x+exp(-t))');
) c4 x7 Z0 W2 d& V' Q& qexpr1=collect(EXPR) % 默认合并 x 同幂项系数& T0 T9 e  g  p/ \* M4 N. z! ]
expr2=collect(EXPR,'exp(-t)') % 合并 exp(-t) 同幂项系数
/ c: ]; @! W) O3 I  s  {expr1 = 7 L7 J) C# n! w, F9 N7 C
x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t)6 I* _$ v% T, j
expr2 =& w1 g- S) {! R( q2 A. G7 M
x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x
% E# l  J8 a! @. z3 [- Z$ }* H
2 }8 x8 F  {" D2 O, a$ k" u【 * 例 6.2.1 -2 】 factor 指令的使用! `" e8 _& i0 E# A
(1)除 x 外不含其它自由变量的情况6 n+ T# H0 A9 u! e
syms a x;f1=x^4-5*x^3+5*x^2+5*x-6;factor(f1) / y, b) D; U+ ]7 i! I" C9 Q
ans = 2 c0 {( q( L& N8 y0 X' }8 E, x
(x-1)*(x-2)*(x-3)*(x+1)0 k7 I$ H: s" L5 q' D, ~+ `) J( g
. ^* t9 G' A: g1 h- G1 A
(2)含其它自由变量的情况之一
5 K( s2 G- Y  [3 k: P6 A& N9 w. @f2=x^2-a^2;factor(f2)
( b; a+ r; P% y, y. m: N* L8 l4 K% u# S" ?+ h$ W  h$ ^2 L
ans =
) g5 U8 ^* N+ n2 w(x-a)*(x+a)+ G" B4 F* ^# ]. J
" G$ r9 n+ U3 K# S& ^1 O
(3)对正整数的质数分解
% {  }# e- w3 c" ~+ w  T, Nfactor(1025)
' d8 v+ U, f" W, z1 ~9 z! Qans =
& H2 `9 _- f2 p5 5 41
( t$ `& C7 [* w8 X  s+ H4 [7 Z. z. Q1 |! A% u* F3 \) J- e7 ?; R
【 * 例 6.2.1 -3 】对多项式进行嵌套型分解/ F0 `4 b* H/ h# D. h7 v
clear;syms a x;f1=x^4-5*x^3+5*x^2+5*x-6;horner(f1) : R: b7 g; S- B/ s! o5 m: H3 K
ans = 8 a' d, A+ F! f9 v: E" k3 ]
-6+(5+(5+(-5+x)*x)*x)*x. s) Y" R3 k; u. |4 |( f

! T6 X6 a) l8 U3 c% ~【 * 例 6.2.1 -4 】写出矩阵各元素的分子、分母多项式
% f, g  e3 n( r7 ?6 n) p% x3 n$ k(1)求矩阵各元素的分子、分母多项式
0 I0 Q1 w' @: J7 ?6 e, isyms x;A=[3/2,(x^2+3)/(2*x-1)+3*x/(x-1);4/x^2,3*x+4];
  K* ]# [7 A% [[n,d]=numden(A)& O1 D1 G% ]( G" r
pretty(simplify(A)) % 为方便阅读而设。请用 simple 代替 simplify 试试。 <3>
3 @# K1 c. ?% |) cn =
* a: g4 @! ]! w7 Q[ 3, x^3+5*x^2-3]
6 n9 |' V5 d; I! J[ 4, 3*x+4]
' Y: S8 R+ Q  h& U3 s0 gd =% w- ^! n: f. m
[ 2, (2*x-1)*(x-1)]
- Q6 |  `$ l4 m% E[ x^2, 1]: u" A7 ]' J$ b, r- `; }
[ 3 2 ]
) O5 [  b) k' s9 Z[ x + 5 x - 3 ]
0 p' [- _) K$ F) p0 B[3/2 -----------------]' v) O6 A8 G2 a9 x! V

' Q  e2 w5 C* Z4 u4 _  U- G& I5 W) M; k+ z

. W. L/ |- [4 B- o4 ]+ T9 i1 o- S
[ (2 x - 1) (x - 1)]5 W, q4 ]7 r! ^, H4 n" U. r3 w3 O
[ ]8 o% C) @. m# h7 ]6 O! V  P
[ 4 ]8 X  f3 v; f3 _2 G
[---- 3 x + 4 ]( y5 d; p1 E; g' Z5 `' _& K
[ 2 ]
1 f; _/ ?2 |4 N& s[ x ]
: W9 F/ d/ ]1 Q- b% K- p: {
3 ?' _" H% b* |  A" R4 m' f! c8 S, ](2)请读者自己运行以下指令,显示结果应与指令 <3> 相同。# }* x8 o: ~4 P  o" x
pretty(simplify(n./d)) % 注意这里用的是“数组除”,而不是“矩阵除”) C6 M5 P  B$ |9 T# a
[ 3 2 ], F4 `' A6 e' z# p
[ x + 5 x - 3 ]
2 I9 ]0 t9 l; K  N) O5 ][3/2 -----------------]. S& N' c; z9 d  m
[ (2 x - 1) (x - 1)]
. w! J0 W  `1 j3 W1 |[ ]/ e3 ^/ F( [% l
[ 4 ]( P* n1 F8 N- a" |+ ]! m- L. P
[---- 3 x + 4 ]
) D7 \) M+ ]( ]  G1 S  s! G5 E1 L[ 2 ]
8 u: }9 d: y4 I% c( D' Z( f: y[ x ]6 v. Q5 @' W  E6 u& B( ?3 s, ]
; p7 H! {5 @0 P' {7 m
, G1 M2 m0 k+ D# x
【 * 例 6.2.1 -5 】简化 8 K8 y* F0 \9 m1 h
(1)运用 simplify 简化(即使多次运用 simplify 也不能得到最简形式。)
% _# w- H* H' q; z& K6 }: Csyms x;f=(1/x^3+6/x^2+12/x+8)^(1/3);
; v. t" A, ?: v4 U1 z' F计算机教程Matlab 符号表达式和符号函数的操作来自www.itwen.comIT WEN计算机教程网
; H6 u, z! t; A, A$ X; _/ H0 B! B- S0 s( P5 d# S1 ]9 m' d" z
sfy1=simplify(f),sfy2=simplify(sfy1)! o, z9 w9 l& q' s
sfy1 = " C: }7 U% L& i! w( C3 B) x) A! c
((2*x+1)^3/x^3)^(1/3)
* z+ w6 D, g% {. c7 K" n3 ?sfy2 =. f# X4 Y7 i9 T- N
((2*x+1)^3/x^3)^(1/3)
# m* u# D. A+ D+ j3 m/ [( C. V$ L0 V, a1 ~: o
(2)运用 simple 简化& d9 E, x3 \$ K- l6 r
g1=simple(f),g2=simple(g1)
0 T9 f6 V" j( R6 j( xg1 =
! P. }" V* w) t2 C  C$ O(2*x+1)/x3 E* x! }+ N! j# c2 Y. Q" P
g2 =
4 }0 y) `5 v4 G3 \4 a! J2+1/x
. W1 t2 k% b! T" B6 p, z$ A) v! H9 G2 L5 C/ M( O2 k
7 j3 W2 k# I& `2 d9 ?8 y3 t+ t
【 * 例 6.2.1 -6 】简化
! Y) q9 W2 H9 e- \& G) ]syms x;ff=cos(x)+sqrt(-sin(x)^2); ) p! o3 R& w& M
ssfy1=simplify(ff),ssfy2=simplify(ssfy1)* s+ f) h7 P3 i! j0 S; x6 |
ssfy1 =
& c5 r5 ?- ?* R8 [* z9 ^cos(x)+(-sin(x)^2)^(1/2)
9 j' |4 E) K8 ?ssfy2 =- K: O9 P) d7 ^( T0 {& A0 N; l
cos(x)+(-sin(x)^2)^(1/2)
9 G6 R: i7 x, @- w$ }: Z( ggg1=simple(ff),gg2=simple(gg1)
( d/ R3 P+ v/ T) d% Y& Dgg1 =
+ w3 p8 _8 O8 V  U+ \$ `5 ]  gcos(x)+i*sin(x)- k  F; Q2 F& o# u
gg2 =
' d' \  T+ a, Q! S1 c9 _5 @2 nexp(i*x)6 a7 X% P& ~% o! b! a

4 h# k3 G) M. k$ y9 O
) h+ h. S) V( x4 t0 X' _6.2.2 符号函数的求反和复合


' ^) b* g6 {/ s6 T

  


5 U* _" ]$ ^, z7 m: w) ~% p

: k1 Z. T6 E0 C/ E/ ?

& T0 C' D% R% ?% ]! |【 * 例 6.2.2 -1 】求 的反函数3 k; i: X) D7 b: }8 ~  Q3 P$ E6 B7 ]1 b; k
syms x;f=x^2;g=finverse(f) + C3 w+ E0 L7 [( X
Warning: finverse(x^2) is not unique.
0 W' |$ V1 N. g5 h/ k3 \, V> In E:\MAT53\toolbox\symbolic\@sym\finverse.m at line 43/ r8 R  L( e! s' K% U0 W- q' G5 w5 Y
g =
  i+ V0 G$ }1 k9 u! ^1 H5 tx^(1/2)
. U7 Z) r! t2 `& @/ W% q# m# s% q+ U: |* T; P" \
fg=simple(compose(g,f)) % 验算 g(f(x)) 是否等于 x
: L+ x$ Q4 p$ _; c" {! tfg = $ i" ]( \+ A5 c! M2 h2 W; r
x
* m/ F, Y; |; T4 h3 K4 d4 x
1 r: t& A9 @: ?1 I【 * 例 6.2.2 -2 】求 的复合函数3 s; J+ d( x: P1 A( M! l3 T7 g
& d* J# |2 Q; T% Q8 a1 q/ e
(1)自变量由机器确定
; A' n8 S; g3 j2 B  csyms x y u fai t;f=x/(1+u^2);g=cos(y+fai);fg1=compose(f,g) . g1 v+ K: p1 p* ]4 ^% t
fg1 =
' L6 c) X, n+ G* |# acos(y+fai)/(1+u^2)
6 l% I' J9 @2 U
7 |' m$ W2 }% E0 ?; V(2)指定自变量
$ V0 U. S0 a8 o7 z9 ?6 J" a) A& H2 F+ Y8 K5 a( o
fg2=compose(f,g,u,fai,t)
+ P# S, B- M) K. {1 s, R$ xfg2 =
) j8 H3 f+ y. q! F3 |6 nx/(1+cos(y+t)^2)0 x1 Q/ }, R1 A, Q" a1 t, u/ K5 z
5 ^' Y9 _* s& ~7 A0 ]
. @8 `% o9 F" Q& [
6.2.3 置换及其应用
! T5 [$ g6 v5 L8 X6.2.3.1 自动执行的子表达式置换指令: @' r8 X" K( p  Z/ O7 ?2 ^  D

7 g/ |' i$ g6 X& z* I8 l【 * 例 6.2.3 .1-1 】演示子表达式的置换表示。5 C" A! \4 \; W! G- m
clear all,syms a b c d W;[V,D]=eig([a b;c d]);
# F* ]: d7 G# w4 [3 n! s8 }3 n+ ?1 M3 q[RVD,W]=subexpr([V;D],W) %<2>
5 m! a6 Q1 {- f. DRVD =& C/ K) D+ N- g
[ -(1/2*d-1/2*a-1/2*W)/c, -(1/2*d-1/2*a+1/2*W)/c]' i4 [9 N% T. f6 J$ s' W
[ 1, 1]
* X: b/ e% z% @- G  L[ 1/2*d+1/2*a+1/2*W, 0]. v, L$ _0 k; o" A2 W* T/ K  Q
[ 0, 1/2*d+1/2*a-1/2*W]
; c$ h( p9 M, E& i% A% W+ iW =7 R% S  d. ]/ D8 W7 u
(d^2-2*a*d+a^2+4*b*c)^(1/2)
$ {# b- h5 z6 \! z7 X7 I
: y4 ^% \) G6 s" U. r7 b: k0 u5 A' D6 \8 @' d3 ]% W& P3 [
6.2.3.2 通用置换指令' n7 ]( Z- @7 `" H- Y
/ W& G. A4 y+ ?1 w
【 * 例 6.2.3 .2-1 】用简单算例演示 subs 的置换规则。$ o: b- ]$ [# f, N; A
(1)产生符号函数) [, R2 K0 y5 M6 h
syms a x;f=a*sin(x)+5;
* p4 h, V( I) ]
' Y) q1 Q- @; ^- M0 k(2)符号变量置换2 Y% b) `" h; O* O4 l2 a6 J
f1=subs(f,'sin(x)',sym('y')) %<2>   


) C8 z' c! o, ~; Z


+ m( |% e/ m& O$ H- x# Ef1 =
1 \7 `) j  Y9 J# G' @1 da*y+5
1 F6 U3 j/ q$ r2 G; t) R. r, u3 z2 h' H) B
(3)符号常数置换/ O. ]4 W8 {7 u8 w
f2=subs(f,{a,x},{2,sym(pi/3)}) %<3>
8 i7 H7 }8 j8 v3 Zf2 = - ?5 z0 Q- @* W" f8 R
3^(1/2)+5
3 A8 C$ Z7 m9 W1 m
' U2 W4 E! M3 v+ H0 o" A(4)双精度数值置换(即所有自由变量被双精度数值取代。取 a=2 , x=pi/3 )# l9 h4 v& L8 ?8 C5 y
f3=subs(f,{a,x},{2,pi/3}) %<4>
* s% L- @  I: w. Z, d. h6 C4 Af3 = - _+ J' q0 r* q% _7 D) p
6.7321 % G. Q( o; Q% s2 `

5 {, L# O: Q8 L. T7 k7 l5 N! D: E( q(5)数值数组置换之一(取 a=2 , x=0:pi/6:pi )
6 a5 \' `7 \# o2 Y. L. [f4=subs(subs(f,a,2),x,0:pi/6:pi) %<5> " E, X6 t, h6 r2 V
f4 = ; X/ W. x& K' ~% ~( }
5.0000 6.0000 6.7321 7.0000 6.7321 6.0000 5.0000
  J& P* G7 [. l& }, L+ b) t+ u  l! I- z9 v! ~* ~8 m0 h
(6)数值数组置换之二(取 a=0:6 , x=0:pi/6:pi )4 ]& f2 ?8 g, a; \# q
f5=subs(f,{a,x},{0:6,0:pi/6:pi}) %<6>
) L  P/ S5 s2 J$ O5 D1 P8 ef5 =
# ]; R- d. \: z( T5.0000 5.5000 6.7321 8.0000 8.4641 7.5000 5.0000" z9 E4 Q8 G4 R7 P

/ b; }; E# T4 M, U( W; f# b2 \
4 p( J: {: d! X/ R7 y6 m$ o6.2.4 符号数值精度控制和任意精度计算
8 ~# g3 }- u) K6.2.4.2 任意精度的符号数值6 x# o2 ?' x6 m7 j8 v" t; o

( k4 Q' K/ A0 h2 k8 l: j【 * 例 6.2.4 .2-1 】指令使用演示。
. m" C  Z$ y6 G, ndigits % 显示省缺符号数值计算相对精度( n$ y, n) H2 b
Digits = 32
( g0 K! X/ _# G; t" bp0=sym('(1+sqrt(5))/2'); %p0 为 (1+sqrt(5))/2 准确值
# O8 E9 d% y# L  x* ^& d4 a8 }, Cp1=sym((1+sqrt(5))/2) %p1 是 (1+sqrt(5))/2 在数值环境下的近似值9 v- ]7 o* i0 L1 o3 T
e01=vpa(abs(p0-p1)) % 在符号环境 32 位省缺精度下,观察 p0, p1 间误差/ ~- G  h- k0 l! F4 ]' V% m9 H
p1 =
5 ?  \. j% t, Z* L% D2 |5 b7286977268806824*2^(-52)& V1 L$ A) |) j( y5 s
e01 =1 l  U) Z! F1 {# L
.543211520368250e-16/ l* f3 k4 X# w3 ^1 S
p2=vpa(p0) %p2 是 p0 在 32 位相对精度下的近似
1 K+ f8 a$ g. Pe02=vpa(abs(p0-p2),64) % 在 64 位相对精度下,观察 p0, p2 间的误差. G& \( Z1 }) C
p2 = ' ^: K0 T; G8 m) o( v* m( @; {
1.61803398874989484820458683436573 q( _* ]: ~; {8 U
e02 =
) l. x) U1 ]6 g8 ?.61882279690820194237137864551377e-31: g: q# |0 x/ g0 E3 ~- q: E
digits % 验证 vpa 变精度计算不影响全局的符号数值计算精度9 R4 V; ?. t2 X( Q; M/ W
Digits = 32 * M3 i( S5 G6 T$ C2 k
* c& s+ J' T" r5 }8 T+ E0 z
0 ^1 e3 z2 J7 l; N' g  C
6.2.5 符号对象与其它数据对象间的转换
2 ^6 P, o, R2 E9 a; @0 S1 S$ a6 F1 g  n


: V2 x0 Z2 S7 M【 * 例 6.2.5 -1 】符号、数值间的转换。" `1 l0 o$ K; _8 b. F  t
phi=sym((1+sqrt(5))/2) % 把数值对象转换成符号常数0 [4 \/ o* k$ O* x! e! K+ n
double(phi) % 把符号常数转换为双精度存储的数值. X+ X  E1 v4 Y) ]! f. a7 y( L1 A
phi =
& y, D/ ~  L6 e6 M* v7 K7286977268806824*2^(-52)  O' A( A) T1 N& s1 t; p* m
ans =  m1 ^7 h% O; F: J* _: m# E; C5 k
1.6180
' |: m8 O; d( I) [( ~6 m* W% U2 e
0 U" A8 h; p/ M  N! N5 q0 A" h【 * 例 6.2.5 -2 】各种多项式表示形式之间的转换
6 `' g3 i% p# ?( E' ~# asyms x;f=x^3+2*x^2-3*x+5; % 生成符号多项式& I5 G' J2 Y) S
sy2p=sym2poly(f) % 由符号多项式产生数值系数行向量
. H3 w/ E! ^! vp2st=poly2str(sy2p,'x') % 把系数行向量变成易读表示式" M7 z8 i; m' i. l
p2sy=poly2sym(sy2p) % 把数值系数行向量再转换为符号多项式9 W2 Y5 R$ P$ X% W  a
pretty(f,'x') % 显示符号多项式的易读表示形式
0 w+ b4 x* q( G1 ?- u  Dsy2p = ( p4 u- M* O% M6 P5 D: ?4 b5 I
1 2 -3 55 D6 b7 B. H/ y* U8 R* b* a" p/ {
p2st =6 _. _7 \( s0 h; G1 @4 t. p. q
x^3 + 2 x^2 - 3 x + 56 `; u- Z: U9 C  @4 j& L& U
p2sy =
# |+ |$ {. G6 sx^3+2*x^2-3*x+5
& c: ]0 a5 V+ n3 2" P7 d2 w4 L+ u: N* X3 Y# y
x + 2 x - 3 x + 5

8 ~  G/ c' R* M1 _. \
  J$ u1 t6 k/ t) c
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-2 21:51 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表