Я ищу быстрое (смею сказать, оптимальное?) Явное решение линейной вещественной задачи 3x3, , ,
матрица является общим, но близким к единичной матрице с номером условия, близким к 1. Потому что на самом деле измерения датчика с точностью около 5 цифр, я не против потерять несколько цифр из-за числовых проблем.
Конечно, нетрудно придумать явное решение, основанное на любом количестве методов, но если есть что-то, что оказалось оптимальным с точки зрения количества FLOPS, это было бы идеально (в конце концов, вся проблема скорее всего будет вписываться в регистры ФП!).
(Да, эту процедуру часто называют . Я уже избавился от низко висящих фруктов, и это следующее в моем списке профилирования ...)
Ответы:
Вы не можете превзойти явную формулу. Вы можете записать формулы для решениях =A- 1б на листе бумаги. Позвольте компилятору оптимизировать вещи для вас. Любой другой метод почти неизбежно будет иметь
if
операторы илиfor
циклы (например, для итеративных методов), которые сделают ваш код медленнее, чем любой прямой код.источник
Поскольку матрица настолько близка к единице, следующие ряды Неймана будут очень быстро сходиться:
В зависимости от требуемой точности это может быть даже достаточно хорошо для усечения после 2 сроков:
Это может быть немного быстрее, чем прямая формула (как предложено в ответе Вольфганга Бангерта), но с гораздо меньшей точностью.
Вы можете получить больше точности с 3 терминами:
но если вы напишите формулу для каждой записи( 3 я- 3 А +A2) б вы смотрите на сопоставимое количество операций с плавающей запятой в качестве прямой формулы обратной матрицы 3х3 (хотя вам не нужно делать деление, что немного помогает).
источник
FLOPS рассчитывать на основе предложений выше:
LU, без поворота:
Гауссовское исключение с обратной заменой, без поворота:
Правило Крамера через расширение кофактора
Явное обратное, затем умножить:
Подтверждение концепций MATLAB:
Правило Крамера через расширение кофактора :
LU (без поворота) и обратная замена:
Явное обратное, затем умножение:
Гауссово исключение:
Примечание: пожалуйста, не стесняйтесь добавлять свои собственные методы и подсчет к этому сообщению.
источник
Вероятно, правило Крамера. Если вы можете избежать поворота, возможно, LU факторизация; это матрица 3х3, поэтому развернуть петли вручную будет легко. Все остальное, вероятно, будет включать ветвление, и я сомневаюсь, что метод подпространства Крылова достаточно часто сходится за 1 или 2 итерации, чтобы это стоило того.
источник