机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4173|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单9 T0 L5 \& @' L8 q: e
* r$ b  l5 x. h7 g
>> syms t r a b q
* U0 `0 k/ k, S1 l% u; y>> x=r*cos(t)+a;$ D! I0 z4 D# F/ o% g) |
>> y=r*sin(t)+b;
9 z0 g* F% i( L$ _>> X=-x*cos(q)-y*sin(q);+ b  L, R+ G* E
>> simplify(X), R+ R  j! c8 }" i* O
4 c! P5 \8 c2 m$ p; C9 I6 J, E9 L
ans =' Z: \% e* ~: f

1 }& l: W5 @' b0 m1 ]8 n- a*cos(q) - b*sin(q) - r*cos(q - t)    3 j$ B. e, ?, M

# {" Z; K* t1 y复杂点   就不化简了+ {2 K# j: l1 S* ^& a
>> syms t r a b k q A+ [0 k3 a8 b" x  Y* ^
>>  x=r*cos(t)+a;1 t3 B3 _  g* q; {, I
>> y=r*sin(t)+b;, R# F6 ~+ ~7 g3 ^; n
>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];
+ U0 a* C4 U+ @>> M=[x;y;A];
( T2 E% j2 Z: J# {% y' v8 _>> NM=N*M
5 \' \  M& u; o1 q5 z
) g$ b  ^  Y% n5 l7 mNM =
4 q+ M2 Q6 t- v+ V2 n. j9 [: T ( B- [2 ]0 E6 k  i: j; Y* ?
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))
; o+ b4 h" b# I$ K cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)9 C9 x+ L7 P3 m2 q- @& X
9 U( U% y+ f) o- l
>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));" e5 W& z2 e" ~$ z# H% D
>> simplify(x1). _! b/ e( g# X& r; S' ]0 T9 U
. n) V$ h( e) Q3 [( S' m% u2 Z
ans =
$ N! M. c3 @, f# e* N # P0 [! j4 \) K3 m5 j/ Q/ `# ^
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  

  D3 M* D+ c! l. R- |8 M: d
  f5 W! }: ^5 R- b. u( W
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)5 M, ]7 p+ z' r& j
6 F8 K# i  l: G
>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);5 S0 h8 a4 b+ Z; E
>> simplify(y1)
2 O; G% D" s/ g# W( N0 N: R9 N* W # c5 v8 k* s% p' z: ^$ }2 U/ f" E2 d
ans =
- H+ G1 G$ U6 R5 F' K
5 N) T; Q- C( y/ ]cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

0 C' u/ A% \1 x; _7 E
& I: C0 ?; L* ]; J8 Z3 h
回复

使用道具 举报

发表于 2016-2-20 18:27:03 | 显示全部楼层
simplifty函数要有控制参数才会按照你想像的运算。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27 6 ~  D! a+ G2 T1 ^
simplifty函数要有控制参数才会按照你想像的运算。
% b) z& h7 o1 v! `
大侠   能举个例子吗   我这个不懂
回复 支持 反对

使用道具 举报

发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33
! O$ x' R1 v3 Y) K: x- A6 }大侠   能举个例子吗   我这个不懂
# s0 j0 s: C2 U, Y& O* J% k% j
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
+ L. {- w9 Q, S( \$ F6 ]% a) Y/ s: s5 V+ Y& e
3.带有附加条件的化简

0 C3 P: H1 J" T! Q. z3 y; Y>simplify(expr,{x*y=1});
* c1 ^: x' {+ E# C>siderel:=x^2+y^2=1;. t$ a- X- i" r2 X# @
>simplify(expr,{siderel},[y,x]);
' D  h6 m) I  p  m: @4 `#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了" U9 t7 D- |% \& d
4.展开与组合
# F( K# ?! F% _& l; Y7 z2 Qexpand &combine) ]/ g8 H5 ^% j# F9 B- A4 @
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起$ t# m2 `* b0 X

8 z# U" j% x9 R  y- T3 A( Z% N, v+ d

6 q3 ^3 P, x- w+ _0 o: {matlab是用的maple的符号运算内核,使用规则一样。
0 S2 f2 X% [. V6 `* Y0 f

& u& W" g' I  A4 A' M4 O
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
' ~: ?: {7 w. I: n% P  G: I4 X: R6 khttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
6 M' i" p4 Q" X$ W9 e" Q
' ]* G  Z) X: z; ?) I% B3.带有附加条件的化简

1 W0 R4 ]$ F5 F2 ?: o多谢了   等下去试试/ H8 M4 V. J. C: W  ?- s
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
6 e+ m. g  \8 O) E  thttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
2 d) L# x5 V* u- [$ Z, O
: u4 [0 I  L: f3.带有附加条件的化简

/ G2 @& \( J; E1 F9 F试了下还是不行   可能matlab和maple 使用不一样+ D8 ?! P, B: Y" |2 m9 x
>> syms x
# X5 b1 _- c5 r1 e>> combine(sin(x)^2+cos(x)^2)    & }" |$ P. W" X" E. |% K7 V0 L5 I

# [* @$ b: X1 i! @
ans =
& h4 `4 p# p& G9 i3 m* u4 o 3 z% ]6 C6 v3 M  E8 b3 @! a* v* L: u
cos(x)^2 + sin(x)^2          这个不化简单
' ~7 l% L7 |8 R
) N$ H" u6 I. w, n0 W9 e>> simplify(sin(x)^2+cos(x)^2), B/ l" l/ {# d2 V$ c

/ d5 [) w9 q* P* Ians =; H+ b. M* F$ c5 E

/ H4 p) j0 o: ?" A4 g8 P/ N* i' G1* `! t; k: [3 f
! W' F; y8 V- c& [/ E  P& j& N
5 a8 ~' o/ U7 h% p8 H
>> syms x# [, {6 q. I7 u* S9 Q7 o8 Z
>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')
5 I, ?8 l2 g- i7 p8 G' Z
4 k0 u! o! a2 w+ Q' Q! XA =, [" Y2 f0 s9 Y0 ~4 A' e& m
& K9 V4 R7 F4 _: H+ e
log(3*x) + cos(x)^2 + sin(x)^2
& \2 }# O: r9 L2 y) p# _' C   f/ Z- S- y( E  E% g1 v
>> simplify(A)! u+ a0 [- F$ V9 f- Y" }: `' S* U

+ k1 c0 n0 T& l1 c- Qans =7 b$ {& `% t+ K& b5 \

7 u9 Q! b6 A" E2 k: H( ?' Q' M; Llog(3*x) + 1$ i1 k) j) D" p$ _
/ l' p; K- \1 |# H4 O  v2 i

. K5 {- a( J/ P1 T3 Q5 _3 z+ |% w

, w6 P8 E$ b& o>> simplify(A,x)8 A5 B" N+ x% w$ Z9 ?2 c. U0 |6 F
错误使用 sym/simplify (line 99). ?5 A: s* @- R7 m- u- _9 ~
Too many input arguments.8 Z$ {* E3 z- a) S) ~! K4 G4 x3 b
9 ^+ w  G; o1 m; t- ?, P) F' R

点评

那就不清楚了。  发表于 2016-2-20 19:38
回复 支持 反对

使用道具 举报

发表于 2016-2-20 19:28:09 | 显示全部楼层
matlab大学里学完了,我就在也没有用过了,已经看不懂了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1)
) u/ x' o. l+ A7 b% H8 Kans =
" Q. u. Q5 I* T3 F7 l3 r& kA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t). [" ~, P9 D! U+ f- f
>> KMM=sym('A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)')
( _! I& _' L. {: I% OKMM =1 c1 ?4 }. ]" s7 z* E2 p: }/ |
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
* \2 W5 j7 {2 a2 c, K; A5 s  `- q>> simplify(KMM). _/ h# m, B$ |* x; B  Z9 F
ans =7 X+ X+ S( ?" [# `; B6 y
A*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)
; {% L) ^, q. g" W3 s7 `+ Z+ q3 q6 ^! h' j
要先展开然后合并
. Y0 u8 B' J) o+ Q8 L$ E+ y7 t. i
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-4-27 15:29 , Processed in 0.061778 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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