首页 > 解决方案 > 对象作为 fsolve 的参数

问题描述

我正在尝试解决包含样条线对象的有效非线性方程。由于我想用不同的数据多次执行此操作,我不想为每个数据集创建一个新函数,而是只创建一个函数并将样条曲线作为参数传递。

这些数据实际上是我拟合样条曲线的实验数据,我试图解决的方程相当复杂,但为了说明我的问题,我在下面的示例中使用了一个简单的正弦函数。

import numpy as np
from scipy import interpolate
from scipy.optimize import fsolve
import matplotlib.pyplot as plt

def equation(x0,func):
    return ( interpolate.splev(x0,func) - 1 )

x = np.arange(0,2*np.pi,1)
y = np.sin(x)
yy = interpolate.splrep(x,y)

x0 = 3
root = fsolve(equation,x0,yy)

我收到以下错误:

TypeError: equation() takes exactly 2 arguments (4 given)

我怎样才能做到这一点?有什么建议吗?也许它不能这样做,如果是这样,还有其他解决方案吗?

标签: pythonscipynonlinear-optimization

解决方案


推荐阅读