Я знаю, что есть пример наименьшего квадрата в scipy.optimize, но у меня настоящие проблемы с остаточной функцией более трех дней. Я решил полностью описать проблему. Я обнаружил некоторые другие подобные проблемы через сайт, но я не мог понять это в программном отношении и действительно смущен в моем случае. Я не мог правильно создать остаточную функцию, которая подходит для scipy.optimize.leastsq остаточный. Я действительно стек.Остаточный для наименьшего квадрата scipy.optimize.leastsq(), оптимальное решение
Эта проблема - это точно проблема A * x = b. Позвольте мне объяснить это коротко:
ВХОД:
- у - например: y1 = точка (delta_1, массив ([x2, x5, x6]))
- х - 8 неизвестных [x2 , x4, x5, x6, x7, x10, x13, x16]
- delta - length.
шагов:
- функция F (x_m, delta_n_m), N - строки, м - смещ_по_столбцы.
- остаточная | b_n - ф (х, дельта) |^2
- минимизировать остаточное использование scipy.optimize.leastsq (остаточные, x0, Arg (дельта))
У меня есть функция , остаточный, минимизатор и INPUTS, но, я действительно стоп с моей остаточной функцией.
находка: - (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: объекты не выровнены', не изменяя форму delta ?? Кстати, в начале кода x фактор должен быть отключен, coz неизвестно – Spider
Исправьте свой код так, чтобы он был запущен, тогда я смогу просмотреть сообщения об ошибках. –