机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4683|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单0 n2 s& O3 A) U% m
  W" N6 I. w# W0 d0 z& {
>> syms t r a b q : E9 b2 n9 O! ~' Y0 h* d
>> x=r*cos(t)+a;
$ I+ V- F" e6 q2 f>> y=r*sin(t)+b;
1 T- M, m# z; N3 f7 I0 l5 o% k1 k>> X=-x*cos(q)-y*sin(q);
' ~7 O- ?/ u; R>> simplify(X)7 C. y- s) e* D# e

) ?/ D( l( U/ G: p* qans =
' w1 D0 k0 x( E! N5 ?
& V% H+ d( D, ^, n- M- a*cos(q) - b*sin(q) - r*cos(q - t)    ; F, Q0 ~3 ^5 m6 }" f

" W3 q' ~+ t$ k! r0 c& Y复杂点   就不化简了, ?; w" y) A& ], t
>> syms t r a b k q A
2 T: D' n! F( N$ B: l>>  x=r*cos(t)+a;3 ]. I/ Z/ k+ H) Y4 v, f
>> y=r*sin(t)+b;
/ ?- K1 g7 |( }  Y( k6 U>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];# \& S  J- X9 u3 s. e, F: y5 F
>> M=[x;y;A];+ J) j9 {+ m8 I9 H) K+ @3 p. W
>> NM=N*M
) m; a( P; y0 [& K9 ] 3 v2 D* J% G) z
NM =4 J) m& c$ R. m2 U2 b

/ x9 t! b. C% e* S5 C: y A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))
( f' }2 c  z+ {! v% p8 } cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
, A! A  S. |; G 1 x# ^) X2 L; v3 d: n' C9 v
>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));
# \) H3 D, E( D6 D0 p7 `  w6 l# u>> simplify(x1)
' T1 D) n# Y9 K. M
& J/ R9 C  ~8 i; a  y/ pans =
4 c1 `  B* {& L. u0 y) e/ Q: h2 m- ^ % {  B/ }2 i' A5 v
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  

  H% s# n( ], b& j2 _1 z- R
6 z# m0 {5 {1 x2 l! L
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)
) G' r1 f! }: R  _7 `! [  r" `; T4 V % ]: D' G# d5 ?; a' r- z) C! W
>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);+ ~! @1 [* E& y2 e+ @
>> simplify(y1)
" Y' P* ~0 P: C, }8 A5 H1 P/ ]% A
8 |" L+ H' ^* i$ _ans =3 l8 o, c2 z( b1 }5 Y, p* l
  f# r3 [! W4 K+ ]' x( c
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

0 O1 I( ?7 r1 i' @- M
2 h6 s- T  q% o1 D. d
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27
8 j' n$ O+ |1 `; f6 f. C2 u) lsimplifty函数要有控制参数才会按照你想像的运算。
1 c$ I- C3 O, I6 Q/ r- N5 r0 p! a
大侠   能举个例子吗   我这个不懂
回复 支持 反对

使用道具 举报

发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33 % i: h1 @- E3 ?0 f5 F; B$ e
大侠   能举个例子吗   我这个不懂
8 E- S3 g: W1 U7 a
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html" X4 S/ @; ?* l' b
; ^; o9 t- S) a+ K3 x
3.带有附加条件的化简
: M& [/ K- l2 `* `0 L" U
>simplify(expr,{x*y=1});
/ N8 n5 W3 ~4 R>siderel:=x^2+y^2=1;& p% _% W9 Q& @
>simplify(expr,{siderel},[y,x]);# ~* |" l; N7 ]2 m4 ]) G' ^
#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了: u: D- `1 C9 s6 W% K
4.展开与组合! W9 M% I: w/ b  S$ b5 q
expand &combine! x  B. t1 j  f; Z% }7 b3 Q, W
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起
1 i5 S6 F) M9 P5 o0 y/ q' v9 G
5 U  Q( W& z. ]: |5 n( N/ n
9 y; a- k+ }+ D" X  h3 h5 T; m$ P$ F1 f2 h
matlab是用的maple的符号运算内核,使用规则一样。
. p+ j/ t- y# a& _
8 J! I1 Q! j/ T
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
7 t% ~4 M) I, H9 ihttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
$ w- n& k2 h- [# U( E
  W; c" t- t# W7 I7 f# ?+ U3.带有附加条件的化简

$ C  }4 y  [2 a6 e' \2 F5 H多谢了   等下去试试
3 @) A- f. V, J- ^' F! D1 V) h
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38 7 e* Y  V! o1 ~; v" B
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
6 x  U  `( u0 r$ W) U1 [6 N! y! [' s
( t, i" ]- C( u8 e1 K# ?' r; x3.带有附加条件的化简

8 V3 E1 j. Z1 U试了下还是不行   可能matlab和maple 使用不一样  n+ d8 p8 Q6 x- Q+ v
>> syms x
. |) K1 e7 I% g) v; p>> combine(sin(x)^2+cos(x)^2)   
: m0 e8 p% n/ b) c* C  i2 p1 Q4 L8 V
0 F' M% `/ G6 ^6 U  J6 q8 K( w. m2 k
ans =
& h7 t* U2 K( x5 G. a; _ ! h6 x9 r. c( J$ r
cos(x)^2 + sin(x)^2          这个不化简单. _( B$ X6 r  A# @2 k

9 Z7 R! ^5 u6 O& R7 C! q>> simplify(sin(x)^2+cos(x)^2)
- t7 `6 u" v6 y; k  K2 C0 V  k - P8 E( _4 C! @6 O% c4 G; B  B
ans =
8 Y: \1 g* o- ?7 A! R
' K3 T1 k7 f4 E8 M% r8 Z  \6 a1 u1# _, {# j' @8 n  g- l% W
# l* L' F, H; Y3 w  y: D' [% l  ]8 ~
$ Z) q- H4 S) w6 I' |  n3 O
>> syms x
+ ]0 D( k4 ~- P  Y>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')/ q3 ^9 `/ d, Z4 O& g8 x1 u/ Q

) s) @: `* N1 @2 p7 o/ O$ hA =
2 U' }8 [  \! v$ |' B # i* N' C/ `# N2 b- _
log(3*x) + cos(x)^2 + sin(x)^2
3 g/ @' k6 q% W( y7 W, Y
, x7 @0 S* i  x0 h( }% y2 e2 _; ^>> simplify(A)& `. o& H0 A3 ^2 y* |

$ R: B$ X% P; |* d3 a) d0 q& N' I' ~ans =
, ^8 f0 S" O: a$ O* @
( o" ?7 k5 V. R( clog(3*x) + 1
# {  w+ S2 e) y5 U- O8 p, K: S- w " O7 ]+ ^6 p5 G$ F2 t1 B2 u
& C1 V" L% ?8 n/ u& h

* _; s* {! L1 r4 B* S# W>> simplify(A,x)
; M1 H4 `* k* c# h! f6 u错误使用 sym/simplify (line 99)2 g3 A" \) D0 N( ?; }& {
Too many input arguments.' a% Y9 b1 J$ Q2 u; @( N
9 n7 h1 F6 O2 s1 a9 L

点评

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1), `# p! V6 `. s0 R& Q  D$ z
ans =: Q, W- r% B+ Q5 R% j
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
& n- J4 ]/ x0 c' a; ~>> 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)')
/ Y) ~) o! j4 B5 T$ S) |" vKMM =
9 j5 p* F8 D5 |9 wA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)$ }/ h; B! T% C* U/ J& w( x
>> simplify(KMM)- }3 ~: e* N' Y% D0 I9 W
ans =* x- W# O; k& O) P  S9 G: T& m% k
A*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)  l; m- i8 b# |, U- \

- H: {2 y% m6 [; [% U要先展开然后合并
& V) q9 R  i" g; E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 19:49 , Processed in 0.058962 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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