0
我知道有在scipy.optimize最小二乘的一个例子,但是我有真正的麻烦与残留功能超过三天。我决定完全描述这个问题。我通过该网站发现了一些其他类似的问题,但我无法真正弄清楚它在程序中的位置,并且对我的情况非常困惑。我无法正确创建适合scipy.optimize.leastsq 剩余的剩余功能。我真的很...残余为最小二乘scipy.optimize.leastsq(),最优解
这个问题正好是A * x = b的问题。让我不久解释:
INPUT:
- ÿ - 例如:Y1 =点(delta_1,阵列([X2,X5,X6))
- X - 8个未知数的[X2 ,x4,x5,x6,x7,x10,x13,x16]
- delta - 长度。
步骤:
- 函数 F(x_m,delta_n_m),正 - 行,米 - COLS。
- 残余 | B_N - F(X,三角洲)|^2
- 最小化剩余使用scipy.optimize.leastsq(残留,X0,精氨酸(△))
我有功能,剩余,最小化和输入,但是,我真的与我的剩余功能叠加。
发现: - (X2,X4,X5,X6,X7,X10,X13,X16),于是,我把所有的值中的代码。
代码:
import numpy as np
from scipy.optimize import leastsq
def function(x,delta):
return dot(delta, x)
def residual(x, delta, y):
error = y - dot(delta, x)
return sum(error**2)
def main():
# INPUTS
# Unknown values
x = [x2, x4, x5, x6, x7, x10, x13, x16]
delta = np.array([1.76762035, 2.04349174, 1.25674742],
[0.94873891, 2.01859342, 1.46348023],
[0.83678402, 1.12030343, 0.92516861],
[1.43, 2., 2., 1.57])
y = np.array([0.8353410485015903, 0.73620941924970962,
0.45428639186344633, 1.6180418445100002]
x_init = np.zeros(len(x))
result = leastsq(residual, x, args=(delta,y))
print result[0]
if __name__ == '__main__':
main()
您好基督教,谢谢!我测试过,但是,如果不更改Δ的形状,您会如何解决“ValueError:对象不对齐”的问题?顺便说一下,在代码的开头,x因素应该被禁用,因为它是未知的 – Spider
请修复您的代码,以便它是可运行的,然后我将能够看到错误消息。 –