我正在matlab中进行一些矩阵计算。看起来很奇怪(对我而言)是我得到的结果如
(8700286382685973*cos(q5)*sin(q4))/9007199254740992 + sin(q5)*((43220913799951902644522757965203*cos(q4))/730750818665451459101842416358141509827966271488 - 291404338770025/1125899906842624)
但是matlab并没有简化结果。我已经尝试使用simplify
,simple
,fix
等功能,但没有一个能够提供所需的结果。
有关我应该使用什么功能的任何建议?
答案 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