Возможно, участникам темы будет интересно узнать результаты моих экспериментов.
Решая одну практическую задачу, пришел к следующей системе уравнений относительно
и
:
Я каким-то образом реализовал все приведенные здесь идеи и сравнил результаты на решении 920 систем. Для оценки каждого шага итерации использовалась целевая функция, равная сумме модулей разностей левых и правых частей уравнений. Если значение функции уменьшалось, то шаг считался успешным, если увеличивалось - то неудачным. Решение целиком считалось успешным и останавливалось, когда целевая функция становилась меньше
Решение считалось неудачным, если десять итераций подряд были неудачными, или на некоторой итерации какая-то из переменных становилась отрицательной, или сумма переменных становилась меньше
(чтобы не свалиться в тривиальное нулевое решение, которое мне не подходит).
Также для успешных решений считалось среднее число произведенных шагов (на одну задачу).
Прежде всего, первая гипотеза
ИСН полностью подтвердилась.
скорее всего из первых двух вариантов один сходится, а другой с такой же скоростью расходится.
Мой первый тривиальный вариант, основанный на формулах
не сошелся ни разу, а второй, основанный на формулах
сошелся во всех задачах; при этом среднее количество шагов на задачу составило
15.
Метод Ньютона с моими начальными условиями не сошелся 2 раза; в остальных случаях среднее число итераций равнялось
4.
Метод Ньютона с начальными условиями, которые предложил
TOTAL сначала
и дальше методом Ньютона
не сходился довольно часто - 126 раз (в остальных случаях среднее число итераций равнялось
6).
Зато с последними предложенными им начальными условиями метод сошелся во всех задачах и среднее число итераций равнялось
5. Похоже, что это самый лучший вариант; было бы интересно, каким образом были получены данные начальные условия и как обоснована сходимость во всех случаях
Метод перехода к одной переменной, который предложил
Алексей К., я реализовал только в достаточно примитивном варианте: использовал уравнение
для метода последовательных приближений. Метод не сошелся 121 раз, среднее число итераций в случае успеха -
45. Возможно, какой-нибудь более разумный метод работал бы лучше, но реализовывать лень.
Наконец, метод, который предложил
мат-ламер, основанный на минимизации функции
Может быть, я что-то напортачил с реализацией, но результаты меня не очень порадовали. Метод дал ответ во всех случаях, кроме одного, однако работал очень медленно. Среднее число итераций составило 4181. Похоже, что было несколько очень долгих решений, когда программа задумывалась надолго, которые и дали такое большое среднее значение, но в среднем по "разумным" временам число итераций все равно порядка 200.