机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5083|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单% N0 B0 v/ {/ O5 b  C, t
$ C5 q* {# E, S" u7 h& h) e' I
>> syms t r a b q . n. U- \8 |  i4 R
>> x=r*cos(t)+a;& m$ @- }0 E/ ?9 g) \
>> y=r*sin(t)+b;# }2 h1 K; G* j( X. {
>> X=-x*cos(q)-y*sin(q);
- s' M1 Q" t( ~) U) I>> simplify(X)
: x" L, g9 c+ l" W7 Q5 Q
+ V/ t( U0 P1 c: rans =
* L8 v7 ^5 y  y/ Z) g9 L
1 O" o. D" W" d7 l& x. x- u; F- f- a*cos(q) - b*sin(q) - r*cos(q - t)   
+ @  z& @" s) c5 A* b
; R" M  F2 h: s  K1 l( ]1 \复杂点   就不化简了
- Z( B! E5 P5 p+ |$ O$ _- g& J% F
>> syms t r a b k q A
! j& E- X) Y# b: ^# S: b2 I" x8 w>>  x=r*cos(t)+a;
2 ?9 r' V3 e7 {  t! f# ~- F$ Z>> y=r*sin(t)+b;
3 e8 E; W, j+ ?3 Q* R) }! F>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];+ ^8 n! N5 g! P4 Y" S2 V
>> M=[x;y;A];" ]* Y+ S$ }5 N( O) F& T  i
>> NM=N*M
& j% K+ A6 H& [- E, E1 u* r ! p% ~" X" Z- j8 \% L! w8 Y; `
NM =
" a: r( H* H( M6 E
9 ^2 J0 h' I: ?/ m) Y A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))/ ?1 ]& J: [2 O# w4 v& S5 P
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
6 N4 `- w3 p, F4 v( w, |
8 @  @6 P* v( E' ]1 M$ s& H>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));) N" e: P2 Y- I7 a% [9 M5 ^
>> simplify(x1)
- M  I3 Y/ ]4 L0 k
$ [4 @( F8 j2 y$ D7 Q9 P- tans =
4 U5 B& \/ ?- H 9 e* i+ m: p1 a$ S" r
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  
( B+ ^$ `. d& @* `2 `
' c! Y! ?6 w2 x) K( q
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t); `5 L4 [  w( m3 O. \

6 _. b, y7 ?# h5 _>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);. P8 y' K* ^9 C/ g7 X# _+ e  ?
>> simplify(y1)
$ U$ U+ W* n9 d
, F/ I) q' w+ q+ m8 wans =
$ D( V2 q9 r+ y& a1 R/ ]' f , G& a) I6 X! N! b: j
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

/ O; Y4 e4 K# a# ^1 ]" y1 C, H+ a  H  x
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27
3 F0 A, c, z/ q2 ]simplifty函数要有控制参数才会按照你想像的运算。
: ]; M+ C8 b0 s" }% V! N0 ^
大侠   能举个例子吗   我这个不懂
回复 支持 反对

使用道具 举报

发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33
/ o: n! I0 |; C4 ~# \$ ?+ e: |大侠   能举个例子吗   我这个不懂
! }' w; o; p7 x: }% h& y
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html" j3 {5 x5 y  [: w: ?" Y

! F7 h5 a1 w8 E/ I' @+ G2 b7 ^; r3.带有附加条件的化简
! r& @+ b( V. d- o$ d$ H1 A
>simplify(expr,{x*y=1});5 C. {' |0 w: I" }, M  Y  e3 d
>siderel:=x^2+y^2=1;$ b, ]. n  B/ W2 k2 S
>simplify(expr,{siderel},[y,x]);
5 P) w' E% ?/ {& }& Q4 h; y* Y* y#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了
' ^& P' z& |6 J! A* g4.展开与组合
# A' O3 |( s0 B8 g$ H( S' g, |expand &combine: X8 d5 W, |7 v) |* m
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起6 Y' n5 j' H; S( L% @( j# H8 q: n
8 [' E9 s9 H' g/ A) W: j$ W
$ B* K* o$ p3 \( D
( @8 q0 Q3 J5 D- J* \
matlab是用的maple的符号运算内核,使用规则一样。

) f9 k8 B, ?0 K8 L5 W1 l$ c

5 i& N: K; W, W# l- F
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38 ! i+ ~  z* n( }; E3 H% d
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html3 m' k/ G; U4 Y0 L  m+ U& b# i5 C
$ ~1 z, h+ i& b* q4 G
3.带有附加条件的化简
6 w# q& K- \4 X) Z5 r! _
多谢了   等下去试试
4 `: i' t* T3 z2 ]- J, y
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
2 D; V- O# G+ z  D- G& Fhttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html- v5 H9 F5 h5 q5 o4 U+ z( K& c  e

0 a+ P6 q5 T8 F3.带有附加条件的化简

0 s! L; E& n( U/ C5 C6 K试了下还是不行   可能matlab和maple 使用不一样4 [) D7 ~/ h! b7 B. }+ R8 G
>> syms x
  K. q  w2 `0 `* F! G& b>> combine(sin(x)^2+cos(x)^2)   
/ V# G# ]( e0 u1 s' [  V; P. J8 I
ans =
$ k/ C1 m+ ~/ k; P" x4 B# R ) e  X4 i* |" p6 M
cos(x)^2 + sin(x)^2          这个不化简单
: o9 W! Y' B- J5 J2 z# i
# a* i4 g) J: {8 p% a>> simplify(sin(x)^2+cos(x)^2)8 K, @/ W' Y* U) r0 x

: g6 ]$ Q; k4 _7 `ans =% S/ u. ^4 `+ K# G( |! W% J% h

; D# n" }/ A% J3 F9 b- ]. I' I1* H! {+ e' N3 h

' j! e8 n  e/ P5 l- v1 O; \) o) _1 J
>> syms x& P- K2 Q8 K, J
>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')2 Q0 w$ u/ |' t: x

1 {! Z5 i0 k7 ?- fA =
2 i+ U, o2 T" b: [
# m* R' ?8 ^& u3 Xlog(3*x) + cos(x)^2 + sin(x)^2$ t1 k; q9 _, d. s4 {9 r  F

1 E! {3 g1 Q6 @% a>> simplify(A)
8 I9 b3 M6 {6 t
, \4 n2 D% z3 L0 ?9 V2 b* ^( Tans =* p- s, @+ o# s/ i

4 O8 U- u+ @7 ilog(3*x) + 1
" ^8 p- R% j/ Y% k7 D8 ~) ]% B- M" e
. T9 U, n! a6 y, @+ Y! v# \8 }/ \( L4 |2 F& N

7 d* V0 a: x2 I  C>> simplify(A,x)8 b0 ]* z5 [0 n; i! \4 h
错误使用 sym/simplify (line 99)( L+ w9 x4 A1 E% m' C7 a! @& p9 v' w% Y
Too many input arguments.
. V6 a% @& \/ p, u0 A4 |4 _& q- f& S% c2 @: g  E8 D! {

点评

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1)
/ J$ B! a1 _* D+ Oans =
- q8 ~, \0 B5 I, d+ M9 GA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
0 f2 J4 y% j6 ^0 r>> 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)')
! d* W3 X2 I2 IKMM =
( L' {+ ^9 l! T/ p. E- G6 A9 p( VA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
" x9 Y& c& J4 ~; r) p/ Y>> simplify(KMM)
7 v) W  U, L, `. ians =
- L% y. e$ R, o, n3 e( bA*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)4 _1 M6 o2 f; {
4 g: b1 \' T- c$ w& _
要先展开然后合并
. h" V0 c: A" z* e5 @) u) P; g
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-4 19:13 , Processed in 0.063891 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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