4

我需要使用 scipy 的curve_fit函数进行简单的曲线拟合。但是,我的数据是矩阵的形式。我可以在 numpy 中轻松做到这一点,但我想看看适合 scipy 的好处。

问题:

AX = B --> 给定 A,求 X 的最小二乘误差。

from scipy.optimize import curve_fit
def getXval():
    a = 4; b = 3, c = 1;
    f0 = a*pow(b, 2)*c
    f1 = a*b/c
    return [f0, f1]

def fit(x, a0, a1):
    res = a0*x[0] + a1*x[1]
    return [res]

x = getXval()
y = [0.15]
popt, pcov = curve_fit(fit, x, y) 

但是,这是行不通的。有人可以指出这里发生了什么吗?

4

1 回答 1

2

您的代码有一些问题。
1)使用 numpy 数组而不是 Python 列表
2)您缺少 y 的值。

这对我有用:

from scipy.optimize import curve_fit
import numpy as np
def getXval():
    a = 4; b = 3; c = 1;
    f0 = a*pow(b, 2)*c
    f1 = a*b/c
    return np.array([f0, f1])

def fit(x, a0, a1):
    res = a0*x[0] + a1*x[1]
    return np.array([res])

x = getXval()
y = np.array([0.15, 0.34])
popt, pcov = curve_fit(fit, x, y)
print popt, pcov
于 2012-07-18T00:44:44.710 回答