[英]Solving 3 non linear equations using fsolve
我想找到a,b,c的valuews。 它給我錯誤:
from scipy.optimize import fsolve
def equations(p):
a,b,c = p
return (a*np.log10([-b])+c, a*np.log10([100-b])+c-100, a*np.log10([80-b])+c-20)
a,b,c = fsolve(equations, (1, 1, 1))
print(a,b,c)
> print(a,b,c)
TypeError:fsolve:'func'參數'equations'的輸入和輸出形狀不匹配,形狀應該是(3,)但它是(3,1)。
您不能在方程式中使用方括號[]
。 它們在Python中具有特殊含義。 您應該使用圓括號來增強數學運算的順序。 以下代碼擺脫了該錯誤,但您需要在數學上做更多的工作,因為fsolve
尚未收斂到系統的解決方案。 您給出b
初始猜測為1,但隨后執行log10(-b)
。 未定義負數的日志。
import numpy as np
from scipy.optimize import fsolve
def equations(p):
a,b,c = p
return ( a*np.log10(-b)+c, a*np.log10(100-b)+c-100,
a*np.log10(80-b)+c-20 )
a,b,c = fsolve(equations, ( 1, 1, 1 ))
print(a,b,c)
如果我們在紙上寫下您的系統,那么您有以下3個方程式。
將第一個方程式替換為第二個和第三個方程式,您將剩下
以上兩個方程式不能同時成立。 因此您的系統沒有答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.