Численные методы решения нелинейных алгебраических уравнений и систем, составляющие основу итерационного решателя моделирующих программ

Решить систему уравнений $[f(x^n)]=0$ численно – значит найти, а точнее подобрать (подогнать) такие значения $[x^n]$, которые обнулят систему полиномов $[f(x^n)]$. В процессе подгонки, по текущим результатам нужно принимать решение о том, какие значения искомых переменных $[x^{n+1}]$ подставлять в следующий раз ($n$ – индекс текущего приближения корня). Для этого существуют разные методы.

Метод Ньютона для решения уравнения и системы уравнений:

$x^{n+1}=x^n-f(x^n)/f\prime(x^n)$,

$[x^{n+1}]=[x^n]-[f\prime(x^n)]^{-1}[f(x^n)]$.

Метод Ньютона-Рафсона предполагает возможность относительного изменения шага итерации a:

$[x^{n+1}]=[x^n]-[f\prime(x^n)]^{-1}[f(x^n)]a^n$.

Модифицированный метод Ньютона предполагает замораживание инверсной матрицы производных (инверсного Якобиана) на первом шаге:

$[x^{n+1}]=[x^n]-[f\prime(x^0)]^{-1}[f(x^n)]$.

Но в этом случае наблюдается лишь линейное схождение. Хотя, через несколько итераций, инверсный Якобиан можно обновлять.


Метод секущих:

$x^{n+1}=x^n-f(x^n)(x^n-x^{n-1})/(f(x^n)-f(x^{n-1}))$.

Здесь невозможно вести речь об оценке производной конечной разностью, поскольку шаг итерации очень большой.


В VisSim'е, переменной $x^n$ соответствует блок "неизвестная", а блок "нулевой баланс" считывает с модели значение функции $f(x^n)$. Приведенные же выше формулы используются для расчета значения на выходе блока "неизвестная" на следующем шаге итерации.

Основные итерационные методы сходятся весьма быстро. Для того чтобы текущее приближение стало более чем в миллион раз ближе к корню, методу дихотомии требуется 40 итераций, методу золотого сечения – 29, методу Ньютона еще меньше. Очевидно, что линейные системы уравнений решаются за одну итерацию. А ими, например, описываются почти все задачи дисциплины "ТОЭ" изучаемые студентами в вузе.