shouce 发表于 2016-2-20 17:49:24

matlab 符号运算的化简问题

首先来个简单

>> syms t r a b q
>> x=r*cos(t)+a;
>> y=r*sin(t)+b;
>> X=-x*cos(q)-y*sin(q);
>> simplify(X)

ans =

- a*cos(q) - b*sin(q) - r*cos(q - t)   

复杂点   就不化简了
>> syms t r a b k q A
>>x=r*cos(t)+a;
>> y=r*sin(t)+b;
>>N=[-cos(k*q) -sin(k*q) cos(q);-sin(k*q) cos(k*q) sin(q)];
>> M=;
>> NM=N*M

NM =

A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))
cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

>> x1=A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t));
>> simplify(x1)

ans =

A*cos(q) - cos(k*q)*(a + r*cos(t)) - sin(k*q)*(b + r*sin(t))       化简无效果    按正常应该是

A*cos(q) - a*cos(k*q) - b*sin(k*q)-r*cos(k*q-t)

>> y1=cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q);
>> simplify(y1)

ans =

cos(k*q)*(b + r*sin(t)) - sin(k*q)*(a + r*cos(t)) + A*sin(q)

明月山河 发表于 2016-2-20 18:27:03

simplifty函数要有控制参数才会按照你想像的运算。

shouce 发表于 2016-2-20 18:33:16

明月山河 发表于 2016-2-20 18:27 static/image/common/back.gif
simplifty函数要有控制参数才会按照你想像的运算。

大侠   能举个例子吗   我这个不懂

明月山河 发表于 2016-2-20 18:38:11

shouce 发表于 2016-2-20 18:33 static/image/common/back.gif
大侠   能举个例子吗   我这个不懂

http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html

3.带有附加条件的化简
>simplify(expr,{x*y=1});
>siderel:=x^2+y^2=1;
>simplify(expr,{siderel},);
#maple在表达式中作代换y^2=1-x^2,然后再试图对x^2做代换,由于找不到,就停止了
4.展开与组合
expand &combine
combine是与expand相反的命令,它可以按照数学规则将表达式中的某些项组合在一起



matlab是用的maple的符号运算内核,使用规则一样。

shouce 发表于 2016-2-20 18:42:54

明月山河 发表于 2016-2-20 18:38 static/image/common/back.gif
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html

3.带有附加条件的化简


多谢了   等下去试试

shouce 发表于 2016-2-20 19:09:49

明月山河 发表于 2016-2-20 18:38 static/image/common/back.gif
http://blog.sina.com.cn/s/blog_636a8b120100jnyt.html

3.带有附加条件的化简


试了下还是不行   可能matlab和maple 使用不一样
>> syms x
>> combine(sin(x)^2+cos(x)^2)   

ans =

cos(x)^2 + sin(x)^2          这个不化简单

>> simplify(sin(x)^2+cos(x)^2)

ans =

1


>> syms x
>> A=sym('ln(3*x)+sin(x)^2+cos(x)^2')

A =

log(3*x) + cos(x)^2 + sin(x)^2

>> simplify(A)

ans =

log(3*x) + 1



>> simplify(A,x)
错误使用 sym/simplify (line 99)
Too many input arguments.

393810298 发表于 2016-2-20 19:28:09

matlab大学里学完了,我就在也没有用过了,已经看不懂了

shouce 发表于 2016-3-23 23:44:22

>>expand(x1)
ans =
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
>> 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)')
KMM =
A*cos(q) - b*sin(k*q) - a*cos(k*q) - r*cos(k*q)*cos(t) - r*sin(k*q)*sin(t)
>> simplify(KMM)
ans =
A*cos(q) - a*cos(k*q) - b*sin(k*q) - r*cos(t - k*q)

要先展开然后合并
页: [1]
查看完整版本: matlab 符号运算的化简问题