亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Sympy evalf 不適用于 2 個變量表達式中的 1 個變量 subs()

Sympy evalf 不適用于 2 個變量表達式中的 1 個變量 subs()

烙印99 2021-07-02 13:15:11
對于使用 Sympy 的 Python 大學項目,我需要在部分替換后評估 2 var 符號函數的輸出,例如:f = (x-1)/sqrt((x-10)^2+(y-10)^2) / x = 1 => f = 0如果我使用 1 var func,它工作正常:>>> from sympy import *>>> x = symbols('x')>>> F = 1-x>>> F.evalf(subs={x: 1})0.e-125但是在 2 var 函數的情況下, subs 似乎沒有正確進行替換:>>> from sympy import *>>> x,y = symbols('x y')>>> F = (x-1)/sqrt((x-10)**2+(y-10)**2)>>> F.evalf(subs={x: 1})(x - 1.0)*((x - 10.0)**2 + (y - 10.0)**2)**(-0.5)我期望 F = 0 因為 x = 1
查看完整描述

2 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

我不是同情專家,但當 的值y使表達式非零時,我發現了一個反例:

>>> F.evalf(subs={x:1,y:float("nan")})
nan

yis 時nan,結果不為零。所以不可能在不知道值的情況下簡化表達式y(注意:F.evalf(subs={x:1,y:oo})即使結果也應該是 nan ,sympy 也會愉快地評估為 0)


查看完整回答
反對 回復 2021-07-13
?
森林海

TA貢獻2011條經驗 獲得超2個贊

如上所述,如果 y = nan 會創建數學異常,因此替換永遠不會發生。但我發現如果我只使用 subs 然后我得到了我想要的:

>>> F.subs(x,1)
0

現在,如果我明確地替換 y = nan 那么我就會得到 nan 答案

>>> F.subs(y,nan)
nan

我猜 evalf 只是在評估替換之前檢查更多異常。


查看完整回答
反對 回復 2021-07-13
  • 2 回答
  • 0 關注
  • 306 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號