为什么圣人数学不会评估这个表达式?

Why won't sage math evaluate this expression?

提问人:Log On 提问时间:11/10/2023 更新时间:11/10/2023 访问量:40

问:

var('u_5 u beta')
y = u - u_5 + beta*(exp(u)-u-4)
beta = 1.0
u_5 = -4.0
p = y.subs(u==u_5)
p

结果为:0.0183156388887342*beta - u_5 - 4.00000000000000

如何获得数值?我确实尝试了numerical_approx、n()等。

我预计它会乘以 0.0183......乘以 1 (beta) 并减去 -4 以获得 u_5

圣人

评论

0赞 toyota Supra 11/10/2023
这是什么语言?
1赞 Log On 11/10/2023
它是圣人数学软件

答:

1赞 John Palmieri 11/10/2023 #1

我不完全清楚你想做什么,但是这个怎么样:

var('u_5 u beta')
y = u - u_5 + beta*(exp(u)-u-4)
p = y.subs(u==u_5)
p.subs(beta==1., u_5=-4.)

应该返回.更简洁地说,您可以合并最后两行:0.0183156388887342

p = y.subs(u==u_5).subs(beta==1., u_5=-4.)

(你必须先替换,然后插入,所以我认为这些必须分阶段完成。uu_5

您的方法存在一个问题:当您计算 时,这会重新定义 ,但它不会将这个新定义替换为任何包含它的现有表达式。该方法就是这样做的。beta = 1.0betasubs

评论

0赞 Log On 11/10/2023
好的,非常感谢您提供额外的细节和方法。我可以将 beta = 1 移动到变量声明之后。
1赞 John Palmieri 11/10/2023
如果你这样做,你不需要将其定义为符号变量。只是做和.var('u u_5')beta=1.0