簡體   English   中英

求解帶參數的方程 Python fsolve

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

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