假设我有以下MATLAB代码。
syms a b c1 c2
c1 = a + b + pi*b
c2 = a + b + 0.5*b
然后c1评估为a + b + pi*b
,c2评估为a + (3*b)/2
但是,我需要MATLAB来计算a和b的系数的双精度值,而不仅仅是符号数。
我该怎么做?例如我希望将c1评估为a + 4.1416*b
,将c2评估为a+ 1.5*b
另外假设我对像c1 * c2,c1 * 5这样的算术感兴趣,我想将a和b的系数计算为双精度数而不是像抽象符号表达式那样 级分。
我该怎么做?
答案 0 :(得分:1)
符号表达式不能包含完全“双精度”数字,但您可以获得浮点数:
c1 = a + b + vpa(pi)*b
或
c2 = vpa(a + b + 0.5*b)
某些计算(如solve
或int
)仍将在内部切换为确切数字,但结果应始终采用浮点形式。
您可以使用digits
更改计算中使用的精度:
digits(16) % double doesn't have more either