机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5159|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单
! j4 H6 `6 @2 q, r3 f5 J, `& L0 L2 a# r; e+ L
>> syms t r a b q
) g4 Q1 u" u5 _# d* [5 _>> x=r*cos(t)+a;
- K+ f# o4 U6 }/ O% L>> y=r*sin(t)+b;
& t5 i) N7 J# ^3 n& F/ ~+ @>> X=-x*cos(q)-y*sin(q);
; [6 ^2 l$ B5 k) z, o>> simplify(X)  T9 N5 S4 W+ Q& z8 A2 O
  q6 i. }" \$ u/ X) H7 k
ans =# ~: G% j# ~' e

3 w: W. f. {, @) J7 c; k- a*cos(q) - b*sin(q) - r*cos(q - t)   
4 o" |; |$ |# Z) p; L
2 _! P7 T; ^6 N复杂点   就不化简了
% e) Z" |! e  H7 X
>> syms t r a b k q A
: O5 r9 ]- ?8 @! [. `>>  x=r*cos(t)+a;
* P+ v8 F, x& b* @* J3 H: m>> y=r*sin(t)+b;  |4 ]" T9 S, I1 Z
>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];, D# @7 `0 B- N/ i
>> M=[x;y;A];
+ s. x! U% y- p- v>> NM=N*M* W6 B# G1 q% S; X9 L

4 K2 [2 k4 ^+ I1 C6 q8 t' G# LNM =. V+ b7 u% S1 S' `4 R( g& J

6 x0 s( A9 {( N! E A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))
) P! A  R# w& g4 h. J cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)$ u6 `+ O9 l' J2 |+ F) w

7 i( ]# L# p$ j3 G: @" y>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));8 V" z! z6 e# z, S; w
>> simplify(x1)  Y- ^2 n7 y; Q% L

& d3 h! e1 V  w# v/ ]2 a) |ans =; @" w: c1 z% g
. o0 g8 N2 F" v/ T9 T) Q* V! L
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  
. o6 b' K5 L5 e- ^! `( n
- H% n# k0 R, s- t( b/ k/ N/ }5 {2 Y
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)2 V) A4 S$ P0 J7 z/ P

. ?; U3 C2 }" e3 V) {& B>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);
4 ]0 \6 K$ H* ^0 t; L. t+ f>> simplify(y1)/ t: I) [5 \. b) K5 A( K

2 t$ Z* G+ ?6 `" B. Pans =2 _# W, V" u2 u* U; N

. M  w1 x2 r! ~cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

! d! z' ~2 O* y: w; g
, `3 h0 V5 W: r1 T3 ?
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27
% t* l$ I# W# G: n; G1 m3 ~4 o+ ysimplifty函数要有控制参数才会按照你想像的运算。
8 T: x. ~, Z, g$ O/ e+ k+ L) Z9 E
大侠   能举个例子吗   我这个不懂
回复 支持 反对

使用道具 举报

发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33
( w, M/ ?% p+ t2 I大侠   能举个例子吗   我这个不懂
5 S! X9 N: X0 c0 n9 n  [
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html( f4 V: P8 ]6 o7 F$ X; B: E% K
$ e; {2 q( m3 R4 d( F/ C
3.带有附加条件的化简

& A' e# Y) V, M% z' B>simplify(expr,{x*y=1});
7 H" u1 n7 X& Y, B3 c>siderel:=x^2+y^2=1;
4 y' G( i0 q) u# K! Q3 f>simplify(expr,{siderel},[y,x]);
1 `0 @) N0 E* h) A( X) @#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了
% z7 f. K+ G9 s4 J- J) f8 F4.展开与组合% r" I$ \$ v. L) L$ |
expand &combine" N: B* M* a3 l: l
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起* b4 h1 D& D3 t' t5 Q

# K) k$ Q6 |4 a+ s
# K1 b9 k" ~0 f4 B' p8 f5 y2 x& W& K1 h6 y! P) H' `9 i
matlab是用的maple的符号运算内核,使用规则一样。
* K7 l9 f$ g# E7 I8 W

) }' S0 N. H( b# t6 j' \+ C: J
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
- x4 e8 L2 S& t# k+ e2 }' U6 }http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
. j3 r1 l* p3 U1 \# D' ?- H
+ v' ~- C" A6 O/ t. N+ u: c1 d3.带有附加条件的化简
1 f  V' y- E, e6 [
多谢了   等下去试试6 p" l1 K# J* _
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
8 A4 v" ]1 O2 P( o0 W2 Z& Ihttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
' P9 s2 V2 M) d- R- X* v- Q& D3 v7 u2 _- n1 z* [  A7 F; P
3.带有附加条件的化简

8 ?. `- l- l& C  r* Z6 G试了下还是不行   可能matlab和maple 使用不一样  r2 M1 V. d' H2 N7 W" m
>> syms x
& p( u/ T* r/ e9 t+ t! x/ H>> combine(sin(x)^2+cos(x)^2)    ! q: c# Y0 i% r" A( Q! P

) `, B9 y. ?+ j) q" r' A* M3 }7 u
ans =
$ i: w* T6 E1 C * T; J. J8 @5 h
cos(x)^2 + sin(x)^2          这个不化简单
: Q; w9 Z* K3 S. B2 R& f( z7 e
! U8 `7 `0 [* h" r# M' h>> simplify(sin(x)^2+cos(x)^2)
7 [, v, F) f& C6 e. L, ^ 2 v* E& \- l9 ^: o- S* c2 y
ans =7 c! B, E# [( n3 z

% r+ b9 |3 C, z+ I$ h2 c7 X1% T) y$ S  h+ y8 O* X  D% ^$ ^
  }$ L: F9 \9 X2 ^2 A2 S$ n+ p
+ f1 w; X; u0 _3 U1 _
>> syms x
. i  M6 d# O/ d6 l>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')
' Q5 G; `& g1 l ( r* R: T. @2 ~  t( `6 E9 `% S7 T
A =) C- h7 C+ n+ P1 U  u
  Y1 s! d' D0 y5 a2 d' r
log(3*x) + cos(x)^2 + sin(x)^2
# V, i0 A0 C8 L5 b/ D
5 u- ]" F, [, e, o* |% @' F$ ~>> simplify(A)
/ ]! L* B( s) q# D* Q6 {/ i ! Y3 O/ @: {4 B9 W( W
ans =
. [3 m$ _: F* C% ^
' q6 g0 s. u. Y* X" q; q( ~0 Vlog(3*x) + 1, D# `9 _1 ]5 b* B3 h( {6 D+ L

2 n3 U$ Y$ B/ V! d2 j2 U" o2 E6 e: ^3 W# c; q! r
8 L1 c# ~  r- x
>> simplify(A,x)
+ O# h  @- S" I8 S( m错误使用 sym/simplify (line 99)1 o( ~& l" n+ w  g# q- ^+ l- E% W& \8 A
Too many input arguments.
* K0 b8 u# b. z9 H
! W# G5 g# z3 Q) f: \3 ]

点评

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1)0 y0 O  G6 K  p( t8 [+ j+ `
ans =
/ B: m8 O* p- X6 ]( ]- \A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
" o5 V% `) U% E/ S>> 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)')
. \8 v3 L  y1 A7 V5 D% I: gKMM =$ O! u8 Z+ `* F7 j" S2 ~: b% T
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t): M5 r3 W6 @2 q+ _/ E! P2 t2 Y
>> simplify(KMM)
& {+ I: B- S4 M, ]9 S4 J' qans =6 t; n. E( w9 Z3 K
A*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q): {. t; p" ~5 q0 ~

; R8 g' J# h/ y) E" f要先展开然后合并

& l  Z! I" I1 \# ]! e0 u
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 13:36 , Processed in 0.087125 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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