找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5554|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单! L9 Y, K) j( W$ L" m5 b- P  T

* _5 E5 R; l, d7 [% Z! R
>> syms t r a b q
' O) Y  G: r  u9 T: ~>> x=r*cos(t)+a;( x. g" U8 K# `% f4 O! z
>> y=r*sin(t)+b;
4 k  ?' J! f3 o$ t5 X>> X=-x*cos(q)-y*sin(q);
" L# [" B$ |# R6 Q( c>> simplify(X)
- ~7 [8 i' c3 I
" ]7 k" K& Y( Q5 @* [: Oans =
% |8 \5 d/ U. {& @0 N9 i/ g7 ~; w 0 K0 G* [2 @% W4 M7 ]7 W
- a*cos(q) - b*sin(q) - r*cos(q - t)   
% k6 ^8 T+ x; G7 a: K0 R2 q: a/ @+ {9 V
复杂点   就不化简了
+ n8 T9 i: D3 M$ ~* A6 Z
>> syms t r a b k q A
6 ]" c+ X* O0 K9 e- [" \>>  x=r*cos(t)+a;( f. R3 d. q0 D9 u6 k$ p7 m% i
>> y=r*sin(t)+b;
' `, F7 v6 ?! }>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];
- V- t. n9 M8 r5 O+ F. c* u>> M=[x;y;A];6 d2 w4 P1 R- ^2 `
>> NM=N*M+ b: b( r  i' B2 H4 m% X
0 H' y# X* a  u2 W6 \
NM =, S+ L: c0 J( W9 A- ?: Z/ b
- g$ y: T9 h& s0 ?6 R$ L( I& h
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))
7 f1 t# r& m5 [  v, p! m cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
  S: X3 N1 P/ L$ d5 }. a% z
, P5 X/ @' Q0 Y1 K" L: ^9 }* C7 d  s9 z>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));
9 D( T+ {0 {; N, \+ ^! r>> simplify(x1): Y7 h  {5 u( X  E# g
, P* ~$ p( l; @- i' f1 w
ans =
3 _$ B4 g' U+ g3 j( g8 c
% N  \' P1 O+ U* D% rA*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  
1 \5 V' M3 n6 g: E- C2 s$ L
$ z2 K) i) e! v( F% ~  R
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)5 m, s; n2 `4 j4 G4 ]' R7 Z

- ]+ _9 L4 m, H# g/ W; h: z% q>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);7 p7 x$ w. B- N" P2 D6 t; F
>> simplify(y1)# e8 I2 }* k9 Q' J- @7 j' w

; N' U- i6 D0 t, u& oans =
! \5 _2 m2 c  b8 R) U" A( z. z
' R( j2 E# a, Ucos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

0 S& V- e& f* g1 q- c/ l* d. i% a5 ]  P4 B6 Y0 r$ O8 g
回复

使用道具 举报

发表于 2016-2-20 18:27:03 | 显示全部楼层
simplifty函数要有控制参数才会按照你想像的运算。
 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27
) }; }1 b# R3 {9 T$ i+ x. O# G6 v0 msimplifty函数要有控制参数才会按照你想像的运算。

; d+ t' e- D4 ?6 P8 i" n' H大侠   能举个例子吗   我这个不懂
发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33 5 e# h7 P4 \) Q9 `% _8 n3 r
大侠   能举个例子吗   我这个不懂
2 w( X/ B* A6 S, E9 X! k
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
6 Z6 A5 r: I4 C9 `" S# m; m' C, T% O5 t$ T! |. G* C5 p# s9 B! q0 ^
3.带有附加条件的化简

0 @% b1 p. B9 f) I3 ~>simplify(expr,{x*y=1});
1 f6 m: K2 L# \: g5 ]' n& o>siderel:=x^2+y^2=1;
; _! M; c5 `# W% V6 h>simplify(expr,{siderel},[y,x]);
; k; ^3 ~' w2 `& l* s+ }+ P#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了- e2 Z. b, {9 m. C+ h- j! d0 s# j
4.展开与组合# q' R; q5 i) {  V8 R! U& S$ O9 c
expand &combine* K8 {# k; z0 Y
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起8 m# T5 i0 w+ `5 S8 F( t
# z- I) }$ J. y3 v) @

# O( ]/ G. k5 {5 m! g1 y- F
7 ?' c# |  ?$ ?' z) B; Umatlab是用的maple的符号运算内核,使用规则一样。

7 U  ~0 L! X" C1 {8 y

5 G/ o$ @) j$ O  T
 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38 0 V$ |# [  ]& Z  I! ?
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html. u9 T+ O% S3 y' _* z1 M$ J6 G

" k$ I$ P8 s: z3 b$ b1 L4 q3.带有附加条件的化简

- Q8 F1 z. r$ j多谢了   等下去试试4 d0 {1 `6 o5 P3 N
 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
$ {0 Z( I- ^$ e/ jhttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
9 D( j2 g7 ]7 t7 [
* ~. i( O4 }* z1 I" M9 i/ m5 [6 s3.带有附加条件的化简
& e+ X. s$ L, ~7 R5 b
试了下还是不行   可能matlab和maple 使用不一样
6 m  M, X( @5 `: ]# W5 M7 x
>> syms x
: ?* Y' f# E3 d6 k6 O1 _8 c>> combine(sin(x)^2+cos(x)^2)   
8 l" I9 j' _3 L  _+ \* L, G7 H
% @  j+ F' V+ g; K  \+ D
ans =& l  M0 t4 w% K/ u/ [" f- s( l

! K3 d- Q$ z% U8 i: p+ \; Rcos(x)^2 + sin(x)^2          这个不化简单
5 k; ?0 j, p$ W. t6 |
  s& {) G& T. s. G4 I6 q>> simplify(sin(x)^2+cos(x)^2)
3 w: i: y) }9 `/ ]6 R( A
( r* ^) I9 a- v3 S  ?  k: s! Kans =
) X5 }, V7 i0 j
  h# C& K' h( S4 ]0 m2 m* N+ a& P2 _1 e1
" W" f; n% E! ~% f) W/ u1 \
& i" ]: [+ S+ O7 o& R8 q7 c. @. W" H8 q
>> syms x
" x' E/ O5 s0 b/ Q- H: D>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')+ \1 z3 [  K% ?# Z1 |& S2 G! ]) Y
1 f$ P1 D3 G- `9 P
A =: ]2 C7 j5 {6 G$ ^6 @& G+ A' z
' G  k4 {- g2 i
log(3*x) + cos(x)^2 + sin(x)^2
+ V; C: G- }9 S- t+ P8 x # x4 E7 L6 `% t2 {5 x. D' h% a
>> simplify(A)
/ H  C1 H8 A) D0 w2 f$ Z ' c2 K+ I& n. i- T: M+ [
ans =0 ]# Y% e! V5 g+ E

" S' I+ O; n! h+ O' F# llog(3*x) + 1
# v+ ?' \5 g4 w, @8 N % {! d3 w5 C; S/ W1 j

) D7 q. r3 @" Y; ?/ S
9 I% a5 z6 C$ Y5 e! t& |$ K  u
>> simplify(A,x)
  B+ i: y" l$ _错误使用 sym/simplify (line 99)
& g8 I3 o7 P) N3 f' B2 N/ YToo many input arguments.# G5 o$ k# K  a& s+ D- {

) v) b5 }: W0 c" W/ ^1 x

点评

那就不清楚了。  发表于 2016-2-20 19:38
发表于 2016-2-20 19:28:09 | 显示全部楼层
matlab大学里学完了,我就在也没有用过了,已经看不懂了
 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1)
: M  `8 F( |  {* m4 ^2 B! z7 {4 ians =6 Y2 i" Z: b6 s! f) K
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)9 w: ^4 {7 w$ b' ?% X  G# ~
>> 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)')6 C7 D* {. R. r3 F
KMM =
& g, Q* a6 M# J- }; ?" R; EA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)& e8 j! ]5 Z0 ^# F7 W; ^
>> simplify(KMM)
. q1 g6 d2 @: i* a+ Z8 lans =
( ?7 D7 T/ ?6 ~- E; VA*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)
4 I+ G7 K6 i4 d$ r% a7 d2 P
: l8 r8 _4 L3 O  |5 `0 C要先展开然后合并
6 D2 q7 t& h2 m" e; V
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-17 20:10 , Processed in 0.070878 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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