0

假设我有以下 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 的系数评估为双精度数字,而不是像分数这样的抽象符号表达式。

我该怎么做?

4

1 回答 1

1

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

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

或者

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

某些计算,如solveor int,仍会在内部切换为精确数字,但您的结果应始终具有浮点形式。

您可以使用以下方法更改计算中使用的精度digits

digits(16) % double doesn't have more either
于 2013-03-17T10:15:25.647 回答