- Существует ли библиотека для MQL4 по линейной алгебре?
- Советники: Eugene
- Гипотеза на базе Фурье
А велико ли n? Если не очень велико (до 10), помнится, лет 12 назад делал это рекурсией на PROLOG через миноры меньших порядков. Программка получилась очень компактной и изящной. Ну и в традиционных языках рекурсия дозволена. Правда, и кэш жрет она прилично.
А какой смысл в вычислении определителя такой большой матрицы? Для решения системы? Ну тогда Rosh правильно посоветовал, конечно. Систему решать через формулу Крамера при таких n очень накладно получается.
Да, думал решать систему. Сегодня на лекциях рассказывали про интерполяционные полиномы, решил закодить для форекса.. Но тут же наткнулся на формулу интерполяционного многочлена Лагранджа, так что искать детерминант матрицы 10000*10000, слава богу, не придется =)
Спасибо! Алгоритм приведения матрицы к треугольному виду в гугле оказалось найти намного проще, чем вычисления детерминанта матрицы n*n
Здесь я выкладывал пример MQL кода для вычисления обратной матрицы на основе LU-разложения.
В прикрепленном файле lapack.mqh среди прочих функций есть функция, выполняющая LU-разложение
входной матрицы: dgetf().
Коэффициенты двух треугольных матриц возвращаются в той же матрице, которая передается в качестве параметра.
При этом верхняя матрица U размещается в наддиагональной части и на диагонали, а нижняя L в поддиагональной части.
Диагональные элементы L считаются все равными 1 и не выводятся.
В результате, если перемножить элементы на главной диагонали матрицы, возвращаемой функцией dgetf(),
то Вы получите детерминант исходной матрицы.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования