使用MATLAB的符号工具箱简化表达式系数

时间:2012-11-26 21:59:05

标签: matlab symbols symbolic-math

假设我有以下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的系数计算为双精度数而不是像抽象符号表达式那样 级分。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

符号表达式不能包含完全“双精度”数字,但您可以获得浮点数:

c1 = a + b + vpa(pi)*b

c2 = vpa(a + b + 0.5*b)

某些计算(如solveint)仍将在内部切换为确切数字,但结果应始终采用浮点形式。

您可以使用digits更改计算中使用的精度:

digits(16) % double doesn't have more either