提问人:Log On 提问时间:11/10/2023 更新时间:11/10/2023 访问量:40
为什么圣人数学不会评估这个表达式?
Why won't sage math evaluate this expression?
问:
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
答:
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.)
(你必须先替换,然后插入,所以我认为这些必须分阶段完成。u
u_5
您的方法存在一个问题:当您计算 时,这会重新定义 ,但它不会将这个新定义替换为任何包含它的现有表达式。该方法就是这样做的。beta = 1.0
beta
subs
评论
0赞
Log On
11/10/2023
好的,非常感谢您提供额外的细节和方法。我可以将 beta = 1 移动到变量声明之后。
1赞
John Palmieri
11/10/2023
如果你这样做,你不需要将其定义为符号变量。只是做和.var('u u_5')
beta=1.0
评论