是否有一种方法可以使用curve_fit来拟合具有多个自变量的函数,如下所示?
我试图在x1,x2,x3和y1(因变量)都已知的情况下得到a1,b1,c1,a2,b2,c2,a3,b3,c3和d的值。我想通过使用scipy.optimize优化这些值以最小化我的误差。请注意,在实际情况中,对于x1,x2,x3和y1,我有超过一百个数据点。
或者是否有更好的方法或更合适的方法来获得a1、b1、c1、a2、b2、c2、a3、b3、c3和d的值?
import numpy as np
from scipy.optimize import curve_fit
x1 = [3,2,1]
x2 = [3,4,2]
x3 = [1,2,4]
y1 = [5,7,9]
def func(x1, x2, a1, b1, c1, a2, b2, c2, d):
return (a1*x1**3+b1*x1**2+c1*x1) +(a2*x2**3+b2*x2**2+c2*x2) + d
def func2(x1, x2, x3, a1, b1, c1, a2, b2, c2, a3, b3, c3, d):
return (a1*x1**3+b1*x1**2+c1*x1) +(a2*x2**3+b2*x2**2+c2*x2) + (a3*x3**3+b3*x3**2+c3*x3) + d
1条答案
按热度按时间vjhs03f71#
您需要在一个对象中传递
x1
和x2
,请参见docs forcurve_fit
中xdata
的说明:用于测量数据的自变量。通常是一个M长度的序列或一个**(k,M)型数组**(对于具有k个预测变量的函数),但实际上可以是任何对象。
示例:
结果: