簡體   English   中英

使用fsolve求解3個非線性方程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM