我正在处理一组几个非线性方程,我能够分析地将其减少到两个含有两个变量的隐式方程组。现在我希望使用布伦特的方法找到这些方程的根。我想将一个函数作为参数传递给另一个函数,并根据每个变量1求解变量2的等式。
在数学术语中,我希望以这种方式求解f(x,y)和g(x,y)f(x,g(x))。
可以在此处简化我希望做的示例。
而不是:
import scipy.optimize
from scipy.optimize import fsolve
def equations(p):
y,z = p
f1 = -10*z + 4*y*z - 5*y + 4*z**2 - 7
f2 = 2*y*z + 5*y - 3
return (f1,f2)
并通过以下方式解决:
y,z = fsolve(equation,[0,19])
我希望写出类似的东西:
def func2(x, y):
f2= 2*y*x + 5*y - 3
return brentq(f2, -5, 5)
def func(x,y):
y = func2(x,y)
return -10*x + 4*x*y - 5*y + 4*x**2 - 7
sol, = brentq(lambda x: func(x, func2), -5, 5)
我希望在如何将函数作为参数传递给这个特定目的时请求帮助,并解释我做错了什么。我是Python新手,也许有更好的方法可以确保我的问题得到精确解决。