机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 4917|回复: 7
打印 上一主题 下一主题

matlab 符号运算的化简问题

[复制链接]
跳转到指定楼层
1#
发表于 2016-2-20 17:49:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
首先来个简单* h) a" F* x  Z
) E! a: C1 \, I+ U0 E. S
>> syms t r a b q 3 Z! d! E" {9 k: [
>> x=r*cos(t)+a;$ M3 T! ?9 O" q( q: q$ q
>> y=r*sin(t)+b;7 D: E9 z0 M, {+ [& e5 P4 e
>> X=-x*cos(q)-y*sin(q);
( L. a. L* N, g+ X>> simplify(X)# J" O2 d+ V. z! i$ w/ r+ m

9 F5 T! V) x- t5 U0 g" l6 {ans =7 d  E7 U" n& E6 `
6 K7 o. v# H. T; `& f
- a*cos(q) - b*sin(q) - r*cos(q - t)   
' p, D+ |$ i) A% H" L+ |: C) }
1 [; L0 c: W. o* b# }8 h& ?" w" _6 }复杂点   就不化简了
( F% U& m' b6 T2 Q" X
>> syms t r a b k q A
2 F. n# M% P# e>>  x=r*cos(t)+a;) `$ C5 ^8 `( m- P: Q
>> y=r*sin(t)+b;
" |% r7 j  J. q. u$ E9 p- W>>  N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];
3 f: L% ]$ c% ~- c! ]>> M=[x;y;A];
' r+ ^: P8 |1 y& {>> NM=N*M. d+ Z) |! U' d* s# r5 W- J
# r& }0 O& N& L- V" N$ L
NM =
% q. ^; t& g1 i5 f7 [! a$ ?
! C0 ^0 M4 F& u8 u4 X% ~ A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))- f" U' {- Q  |
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)8 ^! p) V. ~- L$ T9 q
# @* q# W" E1 `8 r% i! t4 ^
>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));
/ h; N0 m1 @. x8 f9 P* J>> simplify(x1)4 a) s# ]& i+ D

: d/ [8 p' ?: R' B4 cans =
  Y6 O+ t* w6 f3 r* I ' Y. x7 G- F/ e! \& V$ K% K
A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是  
4 l2 L2 t$ X/ X# L4 Y! [; `

/ F) A  g  B1 {  z3 P% x, r/ p
A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t). c$ \) A  r, V% h* |- @

" M7 h! [% u' j. e0 o# z- H+ w. h5 Y>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);
; o3 I2 T/ m9 v$ F) V) ~/ y>> simplify(y1)
# t4 R/ x# l) T8 b+ _ % R# _" {$ r5 ^: r
ans =3 f: V, o' D# ]# ?( p6 i, O
1 \6 T  U3 y0 m+ p
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

( x$ _* S, [* U$ T( n: e5 w8 U: b: h7 @- X: M& H$ i7 z4 Q
回复

使用道具 举报

8#
 楼主| 发表于 2016-3-23 23:44:22 | 只看该作者
>>  expand(x1)
% m: b0 P' \4 _$ D( q" D7 z6 rans =
0 c$ U0 P! D; I& ]1 |: g. C. B4 o5 bA*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
% ~1 H5 g& ^  x' e" q; F0 `>> 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)'): A- N7 V, M! T* J  ^% |
KMM =
2 e: \$ o2 J; ]A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
% i: J9 ?1 t% E- z>> simplify(KMM)
! G5 R5 u8 k  v0 q  J* g) Xans =
: N& X4 \/ ^6 u! AA*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)% f/ A# p+ V7 i5 F+ e
( L( Z" P3 J, R9 J+ G7 I3 i
要先展开然后合并
- _4 y4 M8 W5 L* w
回复 支持 反对

使用道具 举报

7#
发表于 2016-2-20 19:28:09 | 只看该作者
matlab大学里学完了,我就在也没有用过了,已经看不懂了
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2016-2-20 19:09:49 | 只看该作者
明月山河 发表于 2016-2-20 18:38 8 n. O: b5 m6 T4 K% P, F
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html$ u1 d* n+ v# |2 F5 R4 i
& P% z* u" ]& V! f' t
3.带有附加条件的化简

; N4 S0 ]( H* y试了下还是不行   可能matlab和maple 使用不一样
& [/ C9 t9 j3 w# k( f+ A0 o8 p0 c
>> syms x# A, ]' O7 t' E
>> combine(sin(x)^2+cos(x)^2)    ' J3 m2 v9 b' ]9 Y2 M! r

- c" [2 x' `* D
ans =. B. C$ @/ H7 y+ A% t
1 `2 E" X6 J: m' |( ]4 L
cos(x)^2 + sin(x)^2          这个不化简单
0 X( u; n" |8 K2 I' _  G6 u6 b
3 r2 l' k: e5 q6 j+ u4 m>> simplify(sin(x)^2+cos(x)^2), n  q2 N7 }  Q

& J0 f  G( F1 z& Tans =
3 Q% m8 J. _5 I3 U8 R8 _7 P# n* _
  w6 g; t# l' d5 R! Y1
3 r9 A5 v+ ]" ?& _! z! W- K$ q- L9 T( j" m
% A' R# i* w9 p
>> syms x3 J# f2 h: y- x5 z( g. K- B) @
>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')2 I0 X7 s% A6 g3 }& Q' p

/ I8 f9 T& h) N2 CA =
" [: ]( r$ D9 B+ T. @  {
- p" y, }3 q' blog(3*x) + cos(x)^2 + sin(x)^2
: p, c6 `; [2 H9 W2 | 6 Y1 n( C- D7 {" n
>> simplify(A)$ V1 Y; n. E9 O/ C9 M$ s
' r) V/ b' b8 y; {! Z
ans =# i$ I* K; r0 y) v7 g

4 v. h* ?1 H) nlog(3*x) + 18 ]0 V9 M5 _1 H1 ]; i7 n1 W- U: v/ {
% @  H' g& d% R+ P9 R  z0 R
6 E8 F( E/ {# x* e2 |* `

1 l7 Z( X( d- e. ]9 M, \>> simplify(A,x)& |; s# X7 _' I) j- Y6 a' X" ~
错误使用 sym/simplify (line 99)
/ |2 F8 q& ?9 lToo many input arguments.: \+ p6 `8 G4 b2 J' N7 h4 W" y
( O/ }' e; G$ L4 q% Q

点评

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

使用道具 举报

5#
 楼主| 发表于 2016-2-20 18:42:54 | 只看该作者
明月山河 发表于 2016-2-20 18:38
& H% `, f5 i' J4 Z6 x3 ?4 _) m1 Hhttp://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
* b2 E' O$ O5 Q+ B9 R) `* D# v. l
& y- J1 F: F  t3.带有附加条件的化简

/ e! u0 _8 ^* @: B+ I# v/ Q# @. Y多谢了   等下去试试
9 t8 _$ ?6 w: V+ f
回复 支持 反对

使用道具 举报

4#
发表于 2016-2-20 18:38:11 | 只看该作者
shouce 发表于 2016-2-20 18:33 & d5 L" o3 X! t$ _& t; D, w7 w
大侠   能举个例子吗   我这个不懂

' ~; n. y/ {2 \! ~http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html
1 {6 |9 }: p; M) {, R9 [, v" x8 `+ l
3.带有附加条件的化简
2 d$ B2 q9 ]5 R+ N5 }, e
>simplify(expr,{x*y=1});1 t  n, o# s, P7 D( Z- U7 `
>siderel:=x^2+y^2=1;
' J1 C; y! C. _  U4 x$ z3 |>simplify(expr,{siderel},[y,x]);7 ]* T+ i8 E9 q% @
#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了
5 n. x# _; m! b3 J4.展开与组合
" o3 J& Y/ K  i0 }* F/ a$ `expand &combine
6 c( P6 o# d8 v$ E5 b2 `' Mcombine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起, w! F, n* j8 ~. ~8 F
$ R! P) \5 v% V9 R$ |5 P) P

$ ~$ l/ j' C" B; H2 }9 i- l$ [% h
matlab是用的maple的符号运算内核,使用规则一样。

; ^4 k) J: K; H+ l

0 ~" Q; S3 ]0 M) i1 ^4 ~, G
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2016-2-20 18:33:16 | 只看该作者
明月山河 发表于 2016-2-20 18:27
' p7 `1 K8 g+ c& B) p# _8 ]simplifty函数要有控制参数才会按照你想像的运算。

. t' W9 R$ x3 O3 K) V大侠   能举个例子吗   我这个不懂
回复 支持 反对

使用道具 举报

2#
发表于 2016-2-20 18:27:03 | 只看该作者
simplifty函数要有控制参数才会按照你想像的运算。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:12 , Processed in 0.068102 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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