Решение большой системы уравнений с 4 неизвестными - PullRequest
1 голос
/ 16 апреля 2019

У меня есть набор данных, включающий расстояние и отношение к ~ 1800 контактам радаров, а также фактическое расстояние и отношение к этим контактам, и мне нужно разработать уравнение коррекции, чтобы воспринимаемые значения были как можно ближе к фактическим возможные значения.

Кажется, что при визуализации есть тенденция к ошибке, поэтому мне кажется, что должно быть несколько простое уравнение для ее исправления.

Это форма уравнения ~ 1800:

фактическая_дистанция = воспринимаемая_дистанция + X (перцепция_подшипник) + Y (скорость_перед_земель) + Z (курс_повер_площадка) + A (курс)

Как лучше всего решить для X, Y, Z и A?

Кроме того, я не убежден, что все эти факторы необходимы, поэтому я полностью готов опустить один или два из этих факторов.

Из маленькой линейной алгебры, которую я понимаю, я попытался что-то подобное без удачи:

Ax = b -> x = b / A через numpy.linalg.solve (A, b)

где A - матрица 4 x ~ 1800, а b - матрица 1 x ~ 1800

Это на правильном пути?

Чтобы было ясно, я рассчитываю сгенерировать коэффициенты для уравнения, которое будет корректировать полученное расстояние до контакта так, чтобы оно было как можно ближе к фактическому расстоянию до контакта.

Я также полностью готов отказаться от этого метода, если есть лучший.

Заранее спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Когда у вас больше уравнений, чем неизвестных, у вас может не быть точного решения.В таком случае, что вы можете сделать, это использовать псевдообратную матрицу Мура-Пенроуза вашей матрицы A. A, умноженное на b, даст вам решение наименьшего квадрата расстояния.В NumPy вы можете использовать https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html#numpy.linalg.lstsq

1 голос
/ 16 апреля 2019

Лучший способ решить такую ​​систему уравнений - использовать: метод неполного сопряженного градиента Холецкого (ICCG). Это может быть реализовано в Matlab, Числовых рецептах на C ++, Nag Fortran или многих других языках. Это очень эффективно. В основном вы инвертируете большую полосатую матрицу. Книга Голуба описывает это подробно.

Похоже, это полезно:

https://docs.scipy.org/doc/numpy-1.14.1/reference/generated/numpy.linalg.cholesky.html

...