![](/img/trans.png)
[英]Solving nonlinear systems of equations using Python's fsolve function
[英]Solving equations with parameters Python fsolve
我試圖用 fsolve function 一次找到幾條直線的零點來解決其中一條。 我無法編寫一個體面的代碼來做到這一點,這是我迄今為止最好的嘗試,非常感謝任何幫助。 我認為最好的方法是定義一個 class (class 是具有兩個屬性的線,即斜率和 y 截距),但我不知道該怎么做。
import numpy as np
from scipy.optimize import fsolve
def straight_line(parameters):
m = parameters[0] # This is the first parameter of the line i.e the slope
n = parameters[1] # This is the second parameter of the line i.e. the y-axis intercept
x = parameters[3] # This is the variable of the function, I want to find x such that m * x + n = 0
return m * x + n
for m in range(-10,10):
for n in range(-10,10):
guess = 1
zero = fsolve(straight_line([m, n]), guess) # This is not correct
print([m, n, zero])
zero = fsolve(straight_line([m, n]), guess)
問題是您調用straight_line()
並將計算值發送到fsolve
。 如果您閱讀文檔,您會看到fsolve
的第一個參數必須是“可調用的”。 換句話說,您需要傳遞 function 本身:
zero = fsolve(straight_line, guess)
您還需要傳遞args
來定義直線,在這種情況下是斜率和 y 截距:
zero = fsolve(straight_line, guess, args=(m, n))
此外,您必須確保x
值是straight_line()
的第一個參數:
def straight_line(x, m, b):
return m*x + b
我沒有測試過這個,所以它可能不完全正確。 它可能無法解決所有問題。 我建議您閱讀更多教程和示例以了解其工作原理。 請參閱文檔以確保您正確使用fsolve()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.