机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5143|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单
0 m1 f6 Y5 k6 L: G" }& I( q
% W) ]* ~; e$ i
>> syms t r a b q
: ]# [. a7 n* r( a: W>> x=r*cos(t)+a;* j8 g- }3 H0 c- Z5 K
>> y=r*sin(t)+b;
9 I6 M: P7 w% M7 f+ {6 Z" V>> X=-x*cos(q)-y*sin(q);
  B6 `6 g# ?: D( q>> simplify(X)
% b' X. a! L& s2 V! O) p 7 x& J) _3 u  t5 q" l8 N3 O
ans =
4 O. a, D2 C7 Q  x9 n. J. ^2 a * P" p3 p" `; X4 m) x1 L
- a*cos(q) - b*sin(q) - r*cos(q - t)    - c' Y+ Z5 c# r, O3 j) o( ?

* F3 j# ^! o& D/ k: s$ ~' ^: M复杂点   就不化简了
0 q- L7 i0 W0 s" F
>> syms t r a b k q A
2 g# E" B- |) t: x: t>>  x=r*cos(t)+a;- n/ R: \5 a4 U* }' l: P
>> y=r*sin(t)+b;3 U% S2 Q, L# z5 b$ R0 U7 q2 \& |
>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];% k* V; }6 b8 |8 G
>> M=[x;y;A];$ U& \/ p7 ?; o
>> NM=N*M
- a& O! l- z6 I) d" T, T5 o . W6 u2 G! E; l  {  v6 e2 ?  D" M
NM =: Y- a1 G" f" z  R$ I% N2 P; m
( d; n5 p# K& L  w. f% x) p
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))8 {1 `6 v/ C1 k/ q+ G/ L
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
' {' t" `! H; x0 K$ I& U* \ ! ]5 i7 C+ H: [8 p
>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));9 K4 H8 h3 I. ~9 w6 ?# {# p
>> simplify(x1)
  p* E* }  {  h- ?8 y 8 M# c( v" {: D+ |6 W
ans =
- |0 R5 c( B# q
! U, f( q: j3 q" jA*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  

) `5 i* r, c+ K. R
5 c0 d8 w6 c$ X
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)
) h) P$ A; l+ m. ^0 o; ^
) S7 j  G0 B# |7 Q1 p# B>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);3 y$ S8 \" a$ U3 |" C5 }, M& r% V1 ~
>> simplify(y1)
2 j: J3 {2 V  a7 {
. l% E% u, }" k7 lans =
) s5 h: [. u% r6 V  u
* A) T: f0 u) W4 g0 kcos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

1 n; g5 Z+ Z1 N6 R. U0 A& q5 x# ^" K3 ^6 ^& i
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27 : r; z! t( ]4 L" w5 L7 v
simplifty函数要有控制参数才会按照你想像的运算。

5 a7 q( L: |+ ^大侠   能举个例子吗   我这个不懂
回复 支持 反对

使用道具 举报

发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33 ( e6 Z, {5 v  \, k, t3 t! {; m
大侠   能举个例子吗   我这个不懂
. _* }! }% u# Q* p
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
6 Q# S& w% \: {" ~5 V. l% t$ p; I4 t7 i$ J7 f
3.带有附加条件的化简
8 n3 ~  [# S. \5 b+ r# B+ x* z# g
>simplify(expr,{x*y=1});
3 ?) x) S# J6 I" M6 ?>siderel:=x^2+y^2=1;* ]$ Z- q/ E6 {6 }2 \
>simplify(expr,{siderel},[y,x]);
! a$ S: n. ~7 H6 _) s( A#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了
' h0 F- ]* w1 m; }* H* v* ~4.展开与组合6 T1 i" J# r' f- D1 }# v  H
expand &combine) X8 B  s+ E$ h, l: i
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起0 ]; P! I4 f7 m$ h8 K
9 Q$ ]/ V' W( h9 y
, M6 Z/ M7 Z# {4 D
/ q' |( x3 M% r
matlab是用的maple的符号运算内核,使用规则一样。
, D- N6 S9 {$ Z$ r

; d( S2 g& E  Q% S
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
3 \8 ^" `7 s7 T: j/ e, Zhttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
' x5 q0 p0 E* |" E: C  o3 w# D7 T4 R5 g) o7 h0 r7 J. v- h- f2 v  c
3.带有附加条件的化简
* B6 K2 s2 P  `3 H0 B& o: O
多谢了   等下去试试+ N; B' P  n! `  K1 l) r# c- R
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38 3 T2 N3 G& ]6 ~# t
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
; `* ?% V1 \; g* N% V6 x+ k0 I% w! y8 z0 e
3.带有附加条件的化简

% R. ?' ^. X" f9 y; ]. \, ?) g试了下还是不行   可能matlab和maple 使用不一样: h8 R. }, ?  c
>> syms x9 D, V! S6 u4 Z; k  B
>> combine(sin(x)^2+cos(x)^2)   
4 y9 R- Z0 k! F, O
) X4 Y% E1 s/ U1 A0 M8 [" B$ [0 q
ans =
  ?# O  J, y5 `& L9 Z" {
5 p! G8 j1 y, o, H$ J; Mcos(x)^2 + sin(x)^2          这个不化简单
, o- F; G/ R" ~  R
1 k- O. }7 e: z% e9 u0 o>> simplify(sin(x)^2+cos(x)^2); |; y& b" x" v4 L6 z

# b1 |0 K2 g* w5 X$ K5 s# W. bans =4 v: ^% ^4 T) _* ~+ b) i2 L5 ]8 @

% W7 K* T2 @" x4 G1* W! j: U! |! i5 {

# W4 D( E: |6 X/ p$ H% `# v: I3 j; o5 |
>> syms x
% t% o5 u3 M. M  j7 ?0 R>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')0 P1 I$ }+ X3 m2 U% p  y' J
- a' V4 E+ [) G
A =
0 E$ B4 `& O: s: K
: R: I  K- k6 b: k& z3 b% Hlog(3*x) + cos(x)^2 + sin(x)^2
( L0 v% I) ?$ S; `
4 m9 ?. z2 L+ O- `4 p4 z>> simplify(A)
! x9 V0 k& u  a" H5 Y% F. F
+ H& J9 j% g7 |4 @7 c7 l, Aans =( W1 Y! i( \% _5 X5 s$ g2 ]  l

* G/ r6 y# X6 A2 G: Plog(3*x) + 16 y# X' j+ @# u4 G% k) J$ L

* y& O4 Z) G) P4 ]
4 e3 J( d8 i) g# ~
  L7 P0 g, d+ e) o/ p$ L2 U# Y
>> simplify(A,x): n/ A. Y. c7 F  w. \  P4 d5 D$ s4 T
错误使用 sym/simplify (line 99)
9 V5 l4 l1 j: R* f. B4 TToo many input arguments.
$ f& |& M9 u2 S& [& J) F$ ?- k) z. u8 b' A/ g

点评

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1)
; a1 o# _1 j- p: T* {ans =
4 A: q0 O& i1 t6 X+ f; AA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
$ r! X. W* K& z5 L+ B% p>> 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)')
2 m5 x7 I# I( p( j& u  kKMM =. E) [9 a5 c5 b; \6 b3 Y
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
7 D% ?+ }( g# O' a# `) a) _>> simplify(KMM)' T" I: u" b* o5 j6 F; M7 @
ans =1 P3 e9 B6 Z* s8 D3 ~/ o' U
A*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)
* }4 a; \! V, E' ]- ]
* j9 y" O1 X& X* |% |要先展开然后合并
, R1 w8 }% F: ?* x7 I* ]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 12:59 , Processed in 0.064869 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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