1

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

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

但是matlab并没有简化结果。我已经尝试过使用 , 之类的函数,simplify但它们都没有给出预期的结果。simplefix

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

4

3 回答 3

2

Simplify 只进行“精确”操作。您需要的是一个可以杀死表达式中的小项的命令。在 Mathematica 中,“Chop”负责处理这一点。尝试谷歌它。

于 2012-10-06T16:14:13.680 回答
1

正如@Lucas 建议的那样,您可以在 matlab 中使用 vpa 和 numbers,例如,如果上面的表达式是 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; 
于 2012-10-08T07:37:02.280 回答
0

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

format longe
format shorte
于 2015-04-22T13:26:35.503 回答