找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5331|回复: 7

matlab 符号运算的化简问题

[复制链接]
发表于 2016-2-20 17:49:24 | 显示全部楼层 |阅读模式
首先来个简单
* }* V* i3 S- C6 U, r, _
+ F: ?' T3 F. G# I
>> syms t r a b q 3 `6 f4 B  j: X7 R9 e% u& k
>> x=r*cos(t)+a;: s$ q& V! D- ~, E
>> y=r*sin(t)+b;
9 z/ |& w7 s5 w2 P5 j( f>> X=-x*cos(q)-y*sin(q);
: X4 Q9 y% D) C% n& g>> simplify(X)
& H" \& F* [" ^* k7 H * n; H' C& V6 U: t, S8 p6 B
ans =
1 Y. C5 Y  F' ^& B4 ^
8 C, s! }4 H/ I7 E0 S4 {- a*cos(q) - b*sin(q) - r*cos(q - t)   
; l, d9 ~! f/ s9 ?2 Z  `
5 [% h) Y1 M0 X, y. ^复杂点   就不化简了3 V. l4 c0 V9 ]; i: i
>> syms t r a b k q A
  [& P  L8 U$ p0 v$ Z>>  x=r*cos(t)+a;
$ }  s8 {+ I( T8 I0 R, M>> y=r*sin(t)+b;
, M  W4 ~" f/ o  b7 c( W2 |>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];. s1 R& o! ~/ E$ f+ ^
>> M=[x;y;A];
4 `: p6 u! f) }6 s, B1 t>> NM=N*M6 C/ |4 i& p/ k% `/ x; ^/ Z4 k

1 z0 C( w  L) C/ G! L0 W7 `4 x: |. rNM =
+ L$ C6 @2 E2 y6 X5 d8 R# `+ ~; M 4 w  N3 C! V0 K% j
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))2 E1 D7 Y8 c/ t+ s- T2 A, P( b4 [6 k
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)8 ]2 O; G1 K: @" D9 p

: e6 a- S/ e2 g& G% A>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));
5 D5 @4 i5 }- G$ R' w0 c>> simplify(x1)
4 Y4 f; v1 A3 V# e
4 L& w7 u1 {. j3 F0 \ans =
8 A% C4 C3 M7 X  o 4 l7 m$ R' D# ~* J# n% ^
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  
# Z# A/ K5 J/ ]

6 Y# x9 d5 K3 q9 S( g* {& z
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)
4 @0 o# x, N0 |9 w, q, L7 e ' T$ A3 b* G6 s% U1 |/ }- P
>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);
% d+ Z* r- r  t3 R: Z" k. V% A& S>> simplify(y1)
. b$ V8 b' C- w; }# O. x' x " r9 q( L( y) n5 x) K  l9 [1 @' Y
ans =
8 N# D4 b/ k; z, k! W% d 7 s7 L( q1 h9 ^8 @0 f
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)
) }# z- ^, n$ F/ E
% `3 ?( W( |) F3 B
回复

使用道具 举报

发表于 2016-2-20 18:27:03 | 显示全部楼层
simplifty函数要有控制参数才会按照你想像的运算。
 楼主| 发表于 2016-2-20 18:33:16 | 显示全部楼层
明月山河 发表于 2016-2-20 18:27 / d  A3 @2 Q* d/ V4 J" v" {
simplifty函数要有控制参数才会按照你想像的运算。
- E" x. ]; U' U7 ~% \( i
大侠   能举个例子吗   我这个不懂
发表于 2016-2-20 18:38:11 | 显示全部楼层
shouce 发表于 2016-2-20 18:33 / z$ l' |$ h/ T
大侠   能举个例子吗   我这个不懂

- r6 M, m4 \4 Q5 ~9 ?7 @! jhttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html) F! P3 C6 K" _" E  s1 z
2 g1 n9 k* _& P5 g- H* T- a
3.带有附加条件的化简
9 V/ w+ D+ @7 _4 {+ l; a
>simplify(expr,{x*y=1});
! O$ @- p( B- }! V  l; s- n>siderel:=x^2+y^2=1;
! |. c1 }9 i$ ]- l% K2 g/ B>simplify(expr,{siderel},[y,x]);, Y/ V# Y4 _( [2 j! K8 y
#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了
( m; l* B5 e, q8 G4.展开与组合( I7 K7 z0 j" l0 G1 d( k! t
expand &combine8 U; y  q) X# N+ J) p% }8 ~
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起1 S7 p( D7 `' B  N

8 v/ @7 x6 \4 B8 q
& t/ _& p* a: i0 P: E1 ~5 C, G0 F0 e; `( H
matlab是用的maple的符号运算内核,使用规则一样。
7 o" E5 Z4 G* i8 A; F
+ l4 K& ^0 O2 V7 _* a& P0 j! h
 楼主| 发表于 2016-2-20 18:42:54 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38
; H1 k" X$ q3 E: bhttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html% I0 c4 t- l- u: ^8 ?" g
' C& L/ j0 s" u" y5 N- l3 f9 y
3.带有附加条件的化简
$ G+ v, J, I1 J6 h/ f! g
多谢了   等下去试试
% W9 U2 {$ ]6 D. I, E# u
 楼主| 发表于 2016-2-20 19:09:49 | 显示全部楼层
明月山河 发表于 2016-2-20 18:38 * [3 \5 e( M2 }( M! ]
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
/ O+ l8 i  M0 ]1 U4 P) C( U
7 z, j( |% y1 O* m4 t% X4 |/ r3.带有附加条件的化简

8 a5 N& ]# S  H试了下还是不行   可能matlab和maple 使用不一样; o( B: ?; Y, U7 y( V4 K+ l
>> syms x
, P! f9 v  {: l! n+ x% C>> combine(sin(x)^2+cos(x)^2)    2 A2 t0 ~1 n* B

% a( @, h/ r3 j/ L+ j+ `6 `
ans =. w  `1 P4 j$ |$ O

+ o9 o3 Q3 f# [: kcos(x)^2 + sin(x)^2          这个不化简单$ F( y. g/ s# P+ i! z8 X. |
3 a2 i! ~' M( p, X0 V  s
>> simplify(sin(x)^2+cos(x)^2)7 _' u6 ]0 a9 r/ i& q2 S4 t2 C
7 z! i# \, q  q5 p5 ~
ans =$ |, o! V" a; w; T* C1 N3 P

5 v- n$ W* W1 e, ^7 ~/ |1# H- N$ \) C# ~8 I# z
, f$ I) p1 u! M- ^
* m" k, x; Z( x" h
>> syms x
* @( X' f( w5 m" q3 o/ y>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2'), L" e. g3 {+ e) O0 `

# X. m) ~! {7 F4 x" }4 c7 UA =8 z% P, t8 l3 V4 `% _4 P
  B6 W+ I: |& n# J& G7 K
log(3*x) + cos(x)^2 + sin(x)^28 R7 u: p$ u4 L; Q" x' n. L! ^
8 A- E. ?) _2 `  @) A. F
>> simplify(A)) ^% W# W  J# u4 t

1 K5 X9 H/ P* O8 R( _% S% Z# S# tans =
1 q9 Y8 I3 i+ l* m7 j) U8 G: C% s8 v 7 [7 L: S1 j1 R
log(3*x) + 1, y# s# c/ e, A7 p+ L: E1 U2 t& F( K

. o# b" a' a  y" L7 C
  N1 I: u8 |% }" Q, U" D) o& z  L
' M" g& L; Y4 \. G3 G& Y; f
>> simplify(A,x)
& C) [) u- Y, h1 O) `- {错误使用 sym/simplify (line 99)) e7 t  m) g1 S. ?
Too many input arguments.9 z6 s- ?( l% E/ q7 o* D+ |
, v9 H) w: Q& L. b9 v' T2 F4 M

点评

那就不清楚了。  发表于 2016-2-20 19:38
发表于 2016-2-20 19:28:09 | 显示全部楼层
matlab大学里学完了,我就在也没有用过了,已经看不懂了
 楼主| 发表于 2016-3-23 23:44:22 | 显示全部楼层
>>  expand(x1)+ Q" l+ g" d; u8 T
ans =# C' |* f; w$ z% x
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)5 o  Q; ~& ~; y, G* e9 L7 _
>> 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)')$ c' }# |7 F" {7 |
KMM =. q! L1 I; ~1 z8 J
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t): E! H& B* J: n6 T
>> simplify(KMM): e  z/ Y+ b8 M' v# u1 A
ans =
$ P) l4 L9 T* r' ~: d0 ?" B2 ^5 TA*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)3 x2 k6 T2 h7 l+ p1 R# r- x9 \

  U  M5 r" Q4 t要先展开然后合并
5 A) t4 x6 S- ^- H1 N
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-17 06:35 , Processed in 0.072901 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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