机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5081|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单
# J$ z+ k: x; N* K$ r/ i
. A4 ~+ p! m% O: Z: ~2 }9 {/ j
>> syms t r a b q
4 Y+ u% `$ b) }, `) q6 I>> x=r*cos(t)+a;
* M+ B- m& y7 w4 C7 m>> y=r*sin(t)+b;
$ c' B- k/ Q8 j>> X=-x*cos(q)-y*sin(q);
% |% [5 E  ?" y+ J& Q3 w: P, \>> simplify(X)8 E0 T" m( w3 `* ]
8 S/ f) z+ S/ V2 R
ans =
6 d" A+ a5 Q8 B, h3 E & z6 I# z$ ~0 q& ]3 L! b
- a*cos(q) - b*sin(q) - r*cos(q - t)   
' S+ ^9 d7 n) T. }) H9 |6 Y- _4 p) e9 W' t) \2 K- N
复杂点   就不化简了
# c5 U6 I% @$ W2 V
>> syms t r a b k q A
+ B% V  u( b* n  [7 @' K- _" a6 P>>  x=r*cos(t)+a;+ C8 `4 d, f- }8 x' D- W
>> y=r*sin(t)+b;" g6 A0 k1 J* Y
>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];
; h! V( q' |6 Z>> M=[x;y;A];
- W2 K( M' u6 P4 V2 q>> NM=N*M9 J) h5 ?# G1 g5 f- e3 f5 D7 ^* s
  n! i& S0 \  f
NM =) |2 f! Y$ U& z. g- u/ l
1 a- |2 X8 V* ]6 j$ L, C
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))
* c  j4 G  e3 f# x) U8 p6 ^* D cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)6 `; ?' P8 \2 m1 ^. I

; K1 w+ a7 b9 `; k+ Z2 v! U>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));- {! x3 y. I) w% z
>> simplify(x1)3 q) ?* b5 Z0 l

7 h6 E' J, T  v; ^6 N0 f* ]6 c! p; yans =
, m% i* L6 ^' K8 E0 ^5 w6 e8 A
. p2 ?% _3 f* ~; GA*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  
% r# o9 @$ ~* I
; o: y; I1 p4 H
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)
# D; E( E+ A% n- w
; T9 i9 k, h3 Q. K$ }# m- W+ w" i0 o>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);
: w3 a& E) p5 m8 j' O>> simplify(y1)# E) A0 ^; A" t+ r# i

! c/ f' y! K1 \1 [  W3 Pans =
; z/ A) q" ^* a8 z% k+ p* u
. v. _5 V  ^  Lcos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
$ @( Y8 T0 x, I" b
# A6 ?) j  i3 }$ y; B( {# g( m0 V
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27
* z3 v2 p0 W# a) s6 \" Y- U3 tsimplifty函数要有控制参数才会按照你想像的运算。
" b1 A0 X. J+ p! M9 s8 y. S
大侠   能举个例子吗   我这个不懂
回复 支持 反对

使用道具 举报

发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33 ! [) s- A  r) ~" q+ ]: E" R
大侠   能举个例子吗   我这个不懂

, O' d) ?/ ]5 e1 I6 Khttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html, @; F9 M/ l& }; T, U. j
. I6 P, U: G; Z! L( a
3.带有附加条件的化简

4 Y. t1 k& ?: i0 F% u>simplify(expr,{x*y=1});
1 |; Q  S9 C% _. d6 ~>siderel:=x^2+y^2=1;
7 t9 `2 W# w, |( z5 g6 s+ X>simplify(expr,{siderel},[y,x]);
5 b6 X6 E# j3 I% ]/ z5 B2 t#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了
6 n! J% ?# U4 r& H# n( b' K; L5 a4.展开与组合( q9 H7 ]7 e2 u5 E; ?* ]
expand &combine
6 b8 V" f4 p, xcombine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起% k3 p1 f# j! K5 M& G# I
- l3 x9 K2 {; S' f' g9 c1 T1 {2 b

. i) J$ p7 `5 f5 P3 s  O2 B! M: A+ ^, D7 N2 |3 x- t1 W
matlab是用的maple的符号运算内核,使用规则一样。

, t4 z7 l7 m4 a8 t+ Z

0 d, Q9 _% F8 w2 }" _- A& B" J+ Y
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
6 O' n7 v8 k- J4 Vhttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html$ N% x& c+ b; |) @7 {

* }# x4 _' {. _2 d3.带有附加条件的化简
0 H4 x7 r% {. \# G3 ^
多谢了   等下去试试
8 g) V- y2 t4 K. o
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38 % ~% K! Y1 ]4 I- s( d
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
# c: f/ C) G/ N2 v! u5 O7 }
2 p0 K/ I* J! @! e3.带有附加条件的化简

5 n# d6 j, n3 k! v$ F试了下还是不行   可能matlab和maple 使用不一样
8 X. ?+ t+ U/ B# R
>> syms x4 d- U# P# L6 y; g, u; a
>> combine(sin(x)^2+cos(x)^2)   
, P9 H& w; b3 Q: R: T3 d5 _" M
# q( J$ X& R4 `! a) o
ans =
  Y$ [# d0 a: A1 v- ^ + L. Q. A/ \3 F6 b+ q
cos(x)^2 + sin(x)^2          这个不化简单$ j9 ]; D) n$ H  T+ d8 T
) y" E" P7 E5 c4 ]4 g
>> simplify(sin(x)^2+cos(x)^2)) U. L  D" c$ Z, `  l
, k, X( H6 [- {* {% a9 O
ans =/ v6 L# M( p5 _4 D) @
* F# a2 T2 T" i) I* l+ C3 o$ U: x
1
* Q/ U- v& Q/ L3 d( J' X
. i! d+ S% @* }5 ?2 {  ^8 C  V+ r. R8 Z4 U$ S9 h
>> syms x
" G8 e! t/ Y3 t/ x( d- F* ]3 y>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')" `# k3 V' O. Q) ^+ ]5 ?
2 W. c7 J6 t' e& U
A =
" a  `5 u' D4 D1 T# A/ q# n1 G
) _) ]& p# _; b6 Llog(3*x) + cos(x)^2 + sin(x)^2
( r5 k& m/ r  C
! R# \( U$ [- G6 p6 w>> simplify(A)" s# H2 z& W0 V+ @4 }, K
0 y: f# V4 S, [3 _  C
ans =
" Z) `# |- `0 c" T$ [
( d: x: A% _8 j0 ~log(3*x) + 1' f8 _( N) K) D! j8 b, J
+ L/ H% V9 |0 ^' }2 K
7 q4 C) R0 T. s. P
5 l2 {8 {/ b. k" J
>> simplify(A,x)
  R3 u9 V+ v& D错误使用 sym/simplify (line 99)% ]+ j, T) E& {* }5 E
Too many input arguments.
8 O) I. f* W( u% w) ]: ?9 d- @, k7 r; R9 m# @; d( _" h

点评

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1)+ G) g. M9 {7 F) X
ans =7 J; C7 D2 I0 v$ h
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)* D) h* o$ O2 D% x5 t+ L+ ~
>> 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)')
" U2 h! o! W/ l4 ]9 s) aKMM =
$ C  U/ L, L! d5 a" wA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
% R9 G) {# B( u  s  _' C' f0 P>> simplify(KMM)6 r9 v+ b. }6 N7 N( A
ans =
  y* F8 R# Q  u$ r( B' I. M! kA*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)* m  O8 Z% f' u  J5 M

5 X  ~9 y* z- }. K9 |" S要先展开然后合并

- o( ~( w9 f0 ^1 D, T
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-3 11:31 , Processed in 0.064052 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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