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

问题描述:

假设我有以下MATLAB代码。用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,我想的系数和b以评估为双精度数和不是像 分数那样的抽象符号表达式。

我该怎么做?

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

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

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

一些计算,像solveint,仍然会切换精确的数字在内部,但你的结果应该总是有浮点形式。

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

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