机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5077|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单
; f: [$ l8 q; P# P* i/ V. I/ Y2 r6 E4 ^# [
>> syms t r a b q
, \2 l+ Q5 `; S/ y8 x>> x=r*cos(t)+a;+ ^- C* X) o- y8 S$ S/ s* ?+ f% \
>> y=r*sin(t)+b;9 c6 ~: {! Z9 ^1 S: j9 l% T% L7 D
>> X=-x*cos(q)-y*sin(q);) y; {: H4 Y( J0 p0 f" ^. z
>> simplify(X)
; H& b  p, x. ~ 0 k9 R6 V- Y* R& g2 f
ans =
/ l# t6 y1 `- b8 `" p" e0 A0 b   d2 T3 O# X4 ~* C8 D  C
- a*cos(q) - b*sin(q) - r*cos(q - t)    + @3 d# R4 k5 D1 r/ ?$ x

6 P$ J% f9 j  t  p- d2 _复杂点   就不化简了: S7 m& f1 }5 [, T5 N
>> syms t r a b k q A
1 U" u& W, X# s>>  x=r*cos(t)+a;+ A- e1 b7 @* T; M/ N+ d$ F
>> y=r*sin(t)+b;
3 l9 G' H* C- V4 J1 G>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];
/ T  D( }( L7 d8 i5 N>> M=[x;y;A];
; P3 q$ t  Y+ }>> NM=N*M4 ~' O$ p* h* t/ j6 F9 p

1 C  y6 [7 Y$ oNM =  j, q) Z5 W3 w0 ^* h7 S

) }; y9 h2 Z# b A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))- ?" a. }) R& u% k. S: N2 ?7 H6 K
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q). l7 J% F' x& |; X. R

, x7 z( [; U5 H/ z" f>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));0 h5 q4 J- @3 ?
>> simplify(x1)$ x4 o5 J- z2 D3 W/ }
- O1 d6 N4 R+ Q5 k8 Y9 z9 L
ans =; p% B$ y( Q- c$ W

7 o0 l& ~2 q$ q3 F" SA*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  

1 j8 Z( o2 v- M4 h  d5 N+ e! U6 B5 q. D; s  H8 Y' N$ ~$ s$ I) F
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)
/ Z7 e. p% c* r3 B# g $ ~# o: b4 D8 i" A) P
>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);% y- e' X( @; |5 q! t
>> simplify(y1)
) x' x; U+ q" L2 j2 w1 W: T0 U
- h# u; E- _& {' Z: D/ {2 b% ]ans =& F+ r5 ~- r5 Z4 i( v
; f3 s) a1 O8 ]0 M4 Q# q
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
' e9 ?; i1 W9 }# K, D9 f3 H0 b

1 A1 C% i- R  ]' z* n
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27 $ s) A1 Y, E2 D  n
simplifty函数要有控制参数才会按照你想像的运算。
1 H& O+ P; |! K, B; a6 z" a
大侠   能举个例子吗   我这个不懂
回复 支持 反对

使用道具 举报

发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33 , d. R; ?8 ~- b+ @8 r
大侠   能举个例子吗   我这个不懂
+ s" j( b7 e6 k% R! L7 H
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html9 ^7 g- e8 M4 F7 b6 P* B
% m8 N( s5 w) o, u9 N
3.带有附加条件的化简

+ r. h" u- Y2 o8 q>simplify(expr,{x*y=1});% r( o- M& S8 U3 H* R
>siderel:=x^2+y^2=1;
: ^3 r/ B& L3 h4 K3 _) s* ^; P2 M>simplify(expr,{siderel},[y,x]);: q+ B4 T4 u2 |' ^. `' m
#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了
4 D9 S% n( B1 }! ^+ L; n4.展开与组合6 N: A9 w* `  G2 D
expand &combine
- f1 b' J3 x$ [5 Zcombine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起/ x! s( y) p$ A8 D$ d/ G* |

* E; r  }$ ?2 o* ^$ s8 o. h- z$ B: v& b1 s- [' l; _5 a( O
' h1 d1 S6 [1 E  S9 Y
matlab是用的maple的符号运算内核,使用规则一样。

4 u8 V3 C9 X/ l- q/ l: C
0 n/ S$ X( h+ g  h2 e
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
1 O; J# T( C1 @$ W5 }  {: F) R& c0 `http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html9 R% D: U, b2 X# Y# e

2 V+ O5 n0 U+ a  w, x$ w3.带有附加条件的化简

8 M) e. Y7 j+ u" Q; g% M多谢了   等下去试试! P# \, s: s# `, p
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38 ' O$ O1 F1 h( A& {$ s! T0 L1 h8 }
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
3 _1 X, x: `0 K1 R! f5 x7 y8 f+ B* h) n' G  ?
3.带有附加条件的化简

; {* m! d# {; L; g/ u试了下还是不行   可能matlab和maple 使用不一样
) L3 C, q5 _) D# V1 [
>> syms x
: o$ R, c, c- ?! I3 }) R+ S: r* B>> combine(sin(x)^2+cos(x)^2)    + [& D8 ~$ n2 t+ r3 C
" l, j. y% ?" _8 n4 S
ans =7 T1 N% c! E# c; n, ]0 [
( M' C" y2 b' o! l& o% W
cos(x)^2 + sin(x)^2          这个不化简单0 Y2 X" A1 d, P5 s0 u+ n

- q0 [' M+ p, `* g3 g' Y>> simplify(sin(x)^2+cos(x)^2)
; H- h  ^: d) W5 B   {: w: I: B( U. Z; j( e: a
ans =1 j1 r; A! m- h

' P- c  A# |8 c5 I18 L) P$ n% N  I* S
" {( h/ g6 A: I# Z. l6 H+ |* j

8 @7 Z& r7 D( e
>> syms x$ o' K/ j7 T/ ^
>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')5 K8 U) a, G7 c8 x

( x1 P9 @, f! c6 VA =
( F) [- x0 ~! S) m
2 ^8 |! h+ Z+ d. _8 @; dlog(3*x) + cos(x)^2 + sin(x)^23 q! h5 h! y3 r' J1 z( s& z
8 x) ^& H7 J0 ]. @8 k
>> simplify(A)3 F. C: S) r0 ]1 E

; {! C) X) b$ y$ m5 E7 N  Oans =
' m& d" O6 l/ w% n$ I
& S1 ^2 U" G* l0 t' [log(3*x) + 1
: I) }9 n3 y( r9 r " [) v5 v1 k  ^# `8 @6 g4 b  j
- x) h# e4 s+ K: E4 |
5 ^# g  K# z  [# I$ w8 W1 ^/ h+ V, ]
>> simplify(A,x)' X9 E7 x4 a+ L/ I, ^# k6 P3 A- K
错误使用 sym/simplify (line 99)! _+ L+ t5 g+ P
Too many input arguments." O/ }2 c  g! l
7 O+ G; U+ F8 W" t

点评

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1). V! p+ E. h2 X0 l% Q
ans =4 q2 ?. A$ {9 v6 U- @/ q
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)0 L4 N! l! Z: V, i; 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)')
0 `% Q9 B0 h6 e3 S& W/ A  pKMM =+ ]& R1 V  e8 B# H! t# R" `( J
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
! E6 [1 m- T/ h/ q2 _>> simplify(KMM)
9 ?: `1 Q1 J* C- [& qans =
7 x' o; ?/ u; M$ \; H: P% PA*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)
: e, m) y* n3 N) b( u* _
( ^/ {/ t5 K- r; ?. R, }要先展开然后合并

* f! m6 Y% W6 W! v  m! P
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-2 21:10 , Processed in 0.083743 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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