找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5674|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单+ `9 |; r0 B7 \* K

3 q6 ?- D! \& }- I, @, y
>> syms t r a b q
) Z6 J' E$ w& ]0 B/ v' e>> x=r*cos(t)+a;
1 z) o/ q- W% E! |. X" [) L2 F; b+ S>> y=r*sin(t)+b;2 Y- y: \! F8 t$ ]
>> X=-x*cos(q)-y*sin(q);
; A0 f: G: k' W2 D4 Q>> simplify(X)( [% m2 ~% {$ q8 ~1 a: ?

6 Y* j3 g' `! [; Z! J% p" `- T4 Q5 d5 Kans =' @; v9 {! ]& g& i( r! T( v' [
; c$ i" C9 ~$ T" I0 D& C
- a*cos(q) - b*sin(q) - r*cos(q - t)    + e: C( w# A/ \3 N

6 B# R. q* s0 c8 a& R5 D复杂点   就不化简了
9 ?1 p, K1 |/ h4 e) D2 z2 v
>> syms t r a b k q A
+ i% N# E5 U4 c+ }6 X>>  x=r*cos(t)+a;3 \( D' a$ q* P
>> y=r*sin(t)+b;
8 b% \" C" L. f! S>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];
: i5 T* u! `$ ~% q; J>> M=[x;y;A];. V  J  _- U5 H$ Y# _$ O- G( ^; G
>> NM=N*M" {( O* ~% a5 \' w, T. M8 O
, d0 \) t. s5 C" k7 h, j8 ^
NM =
& G7 M2 m$ c: C* Y7 |6 r+ d : U9 j# \5 q+ D1 Y! l% A
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))! o4 M# n/ D, N% C9 T/ k8 u) h" y2 c; e; R
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
" P2 \9 H% l, W  s2 H 0 ^* _& Z/ W/ R+ _' d
>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));
. C: P, G2 N8 X1 q2 H+ T>> simplify(x1)% n: m( Z0 j- e3 D$ j

: k  P$ A4 ^" n1 dans =4 n3 N/ e& r" r" U
2 a" ^0 x2 E4 R- C
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  
5 W% C2 x' {. D2 d& L. |5 q9 ]

! U6 K: p0 a* \7 T1 j8 C7 @
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)) n" c3 y/ T; V+ S2 [; v

( o: U( D" S$ p! l6 g: G& `( v>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);
. x7 H! T/ H' T7 i>> simplify(y1)( e6 \/ p, U& e3 Z. S& @

" @: X! A! s3 E! J7 W& }; tans =8 C  E  D# b  A0 `, H

. W4 ~" X" ]$ ?( r5 k! S3 F" Zcos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
+ m7 T9 H% V# R1 H2 ?: e

) N1 m5 p/ n: p/ T+ m3 U
回复

使用道具 举报

发表于 2016-2-20 18:27:03 | 显示全部楼层
simplifty函数要有控制参数才会按照你想像的运算。
 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27 # {; w6 y4 j6 t& n, [% N
simplifty函数要有控制参数才会按照你想像的运算。
" X2 @' P4 w8 i- c
大侠   能举个例子吗   我这个不懂
发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33 + A5 t/ }$ Z' ^+ d
大侠   能举个例子吗   我这个不懂

/ s. Y8 }( q9 q! Mhttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html: c5 e1 P- X0 _7 v* v. I0 A7 o

. ]. M1 ]' V$ Q3.带有附加条件的化简
( m& k' u; Z  o* s1 A
>simplify(expr,{x*y=1});
% `- B6 ?2 N; a>siderel:=x^2+y^2=1;
" V. }# k& I( p9 F+ ^>simplify(expr,{siderel},[y,x]);
1 ?; S2 K. M' H#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了  p% ~0 H3 m' L/ u1 Y  T+ u
4.展开与组合
0 X- o6 w- p) eexpand &combine/ I6 R" t2 F3 O+ s) {9 C
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起
3 j+ a/ \' J! P0 }+ ^/ p( V1 \! w% S, A  }
0 X8 N2 q/ |% X) V
$ Z& v- d6 a2 q: r% ^. l1 p
matlab是用的maple的符号运算内核,使用规则一样。
9 I3 m/ h- W( O$ A) @
) o" }4 j+ T( I7 i! X
 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
) j( D) b: b5 I7 Q# _http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html7 X2 v7 S! Y# F( g1 Z0 Z

9 U0 w4 f7 ~8 S7 ]5 o; }9 l3.带有附加条件的化简

) j# [' L/ l: P$ E" X多谢了   等下去试试
5 j- W0 @& b, [' V2 Q& j
 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38 1 i. \+ G; |% N# N* o# O% u
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html5 [$ F: x7 C5 E1 }) v

( V4 u; y8 U5 L) I3.带有附加条件的化简
! S  A) Q, f9 u' K4 l1 |4 A
试了下还是不行   可能matlab和maple 使用不一样8 D; m$ d/ b! z. {$ J% v
>> syms x; t7 h5 C, U$ z, h" ~
>> combine(sin(x)^2+cos(x)^2)   
/ k; \# Z' r; w. }% r, T9 L% \6 d. W6 ?3 w; f
ans =
$ p# Y/ a: L; n/ g; I' d+ A ' U1 w" p. R% X4 F2 _  {/ k
cos(x)^2 + sin(x)^2          这个不化简单
1 W  I! B- I1 b9 } * b: O- Q1 @' `. g
>> simplify(sin(x)^2+cos(x)^2)
; v# h; s. P/ G) j0 a3 o# V ) _& T% Y9 p9 o6 T4 b9 x- e
ans =2 X" e4 w5 D- t# a  N+ K4 b
) v* Z. `" J8 Y5 K3 P: P( N% _
1
5 S! P+ \* j; H& D$ Q, r
  d* `" s% p$ ?9 L! o
: ^1 O- ]1 y9 W% g
>> syms x  ^# n  R0 G- x+ q# z
>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')
  ^- V2 ?% s" f5 r+ R0 S& c 0 @" B- H; w& ]6 v
A =4 |8 _! F! `) m4 z

/ k% _) D3 m# ]6 U6 ]log(3*x) + cos(x)^2 + sin(x)^23 p. }- D/ B. |$ D

1 u+ g3 @/ S$ D1 V  Z7 L. }* N1 `>> simplify(A)1 _" N# T2 ^+ M# w( X' w3 f

  I" T! e; [5 [ans =; U2 m# h& V" T! Q" w5 y0 [
  D; |  c- g5 _/ m- R1 _2 o
log(3*x) + 1
! F, L0 |, J0 N7 ~& o! r
& e3 D! T6 |$ X1 F# q0 _$ m3 r& q7 _* B. v" v3 n
2 U1 z; }0 E* w
>> simplify(A,x)" L- Y/ x; R8 F) t0 Z  o
错误使用 sym/simplify (line 99)
1 d% g+ ~+ M' v6 Q* }+ R7 i' _( qToo many input arguments.2 |7 z4 w; ~! c4 F: g

0 a1 b  p6 t" Q) A: a

点评

那就不清楚了。  发表于 2016-2-20 19:38
发表于 2016-2-20 19:28:09 | 显示全部楼层
matlab大学里学完了,我就在也没有用过了,已经看不懂了
 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1): d$ v7 ^4 M' w& |  I# u
ans =
( d* D2 ~- G* K! f# DA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
7 f* l9 j  V6 t8 j! x7 h>> 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)')
4 }2 `& e, Q, x, B/ a0 oKMM =2 @7 i8 s" D+ s' F  o6 X
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
" z& w0 J* w" W7 C* X>> simplify(KMM)
7 C8 W& O: i. O# n( J4 e, {ans =7 K7 W& V- @( v' S& B
A*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)
4 H; @2 R! G9 x6 ~5 i, E8 x' w  D4 G( Y' t; G9 J! F) ~$ |( |. j
要先展开然后合并
& {1 k. e4 F. V9 a( d, T9 J
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-10-14 22:55 , Processed in 0.066881 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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