如何在Python中找到两个隐式函数的根,而不使用fsolve作为方程组

时间:2014-07-18 10:50:12

标签: python root

我正在处理一组几个非线性方程,我能够分析地将其减少到两个含有两个变量的隐式方程组。现在我希望使用布伦特的方法找到这些方程的根。我想将一个函数作为参数传递给另一个函数,并根据每个变量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新手,也许有更好的方法可以确保我的问题得到精确解决。

0 个答案:

没有答案