为什么Matlab在使用subs()时不评估符号表达式?

时间:2018-01-30 19:27:06

标签: matlab

这是代码和输出。

>> syms x
>> y=-(x-2*sin(x))/(1-2*cos(x))

y =

    (x - 2*sin(x))/(2*cos(x) - 1)

>> x=1.9

x =

    1.9000

>> subs(y)

ans =

  -(2*sin(19/10) - 19/10)/(2*cos(19/10) - 1)

我无法弄清楚为什么这个荒谬的答案即将来临。我无法修复它。

到目前为止,我已尝试将y作为符号变量并使用int(ans),但没有成功。我还尝试将ans存储在非符号变量中,但每次都会显示相同的输出。

2 个答案:

答案 0 :(得分:3)

您需要对结果使用double来评估符号表达式并获取数值:

>> out = double(subs(y))

out =

  -0.004494059516242

答案 1 :(得分:0)

subs将替换表达式中的值,但它将保持符号并且不会被计算。为了以数字方式获取值,您需要eval而不是subs