Нелинейная аппроксимация матричной функции в python - PullRequest
0 голосов
/ 29 марта 2020

У меня следующая проблема. У меня есть N x N вещественная матрица под названием Z (x; t), где x и t могут быть векторами в целом. У меня есть N_s наблюдения (x_k, Z_k), k = 1, ..., N_s, и я хотел бы найти вектор параметров t, который лучше приближает данные в смысле наименьших квадратов, что означает, что я хочу t, который минимизирует

S (t) = \ sum_ {k = 1} ^ {N_s} \ sum_ {i = 1} ^ {N} \ sum_ {j = 1} ^ N (Z_ {k, ij} - Z (x_k; t)) ^ 2

Обычно это нелинейная аппроксимация матричной функции. Я нахожу только примеры, в которых нужно разместить скалярные функции, которые не могут быть сразу обобщены для матричной функции (ни для векторной функции). Я пытался использовать функцию scipy.optimize.leastsq, пакет symfit и lmfit, но все же мне не удается найти решение. В конце концов, я заканчиваю писать свой собственный код ... любая помощь приветствуется!

1 Ответ

0 голосов
/ 30 марта 2020

Вы можете выполнить подгонку кривых с многомерными данными. Насколько мне известно, ни один из низкоуровневых алгоритмов явно не поддерживает многомерные данные, но они минимизируют одномерный массив в смысле наименьших квадратов. И методы подгонки на самом деле не заботятся о «независимой переменной (ях)» x, за исключением того, что они помогают вычислить минимизируемый массив - возможно, чтобы вычислить функцию модели для соответствия y данным.

То есть: если вы можете написать функцию, которая будет принимать значения параметров и вычислять минимизируемую матрицу, просто сведите этот 2-й (на nd) массив в одно измерение. Пригонка не будет возражать.

...