简化矩阵matlab

时间:2012-10-06 15:30:05

标签: matlab matrix computation simplification

我正在matlab中进行一些矩阵计算。看起来很奇怪(对我而言)是我得到的结果如

(8700286382685973*cos(q5)*sin(q4))/9007199254740992 + sin(q5)*((43220913799951902644522757965203*cos(q4))/730750818665451459101842416358141509827966271488 - 291404338770025/1125899906842624)

但是matlab并没有简化结果。我已经尝试使用simplifysimplefix等功能,但没有一个能够提供所需的结果。

有关我应该使用什么功能的任何建议?

3 个答案:

答案 0 :(得分:2)

简化只做“精确”的操作。你需要的是一个命令,可以杀死表达式中的小词。在Mathematica中,“Chop”负责这一点。试着谷歌吧。

答案 1 :(得分:1)

正如@Lucas建议的那样,您可以在matlab中使用vpa和数字,例如,如果上面的表达式是A(sym),那么:

 vpa(A,3) % digits is set to 3

 ans = 

  0.966*cos(q5)*sin(q4) + sin(q5)*(5.91e-17*cos(q4) - 0.259)

然后你可以看到自己的数字并砍掉它们,或使用类似的东西:

 function result = significant(x, n)
 % significant(x, n) rounds number x to n number of significant figures

 s = floor(log10(abs(x)));
 shift = 10^(n-1);
 mant = round(x*shift/(10^s)) / shift;
 result = mant * 10^s; 

答案 2 :(得分:0)

在评估之前尝试执行以下命令之一:

format longe
format shorte