如何解决用参数求解方程 Python fsolve
我正在尝试使用 fsolve 函数一次找到几条直线的零点来解决其中一条。我无法编写一个体面的代码来做到这一点,以下是我迄今为止最好的尝试,非常感谢任何帮助。我认为最好的方法是定义一个类(该类是具有两个属性的线,即斜率和 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
。如果您阅读 the documentation,您会看到 fsolve
的第一个参数必须是“可调用的”。换句话说,你需要传递函数本身:
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()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。