Для того, чтобы определить, какой устойчивостью обладает метод, необходимо проверить его на примере y’ = lambda*y:
Аналитическое решение будет иметь вид:
y(t) = y0 * exp(lambda * t)
Численное решение будет иметь вид:
y_{n+1} = R(h*lambda)*y_n
где y_n - решение, полученное на n-ой итерации;
R(z), z = h*lambda - функция устойчивости метода;
h - шаг метода;
lambda - комплексное число, помогающее определить устойчивость при наличии малых возмущений (ошибки округлений, небольшие погрешности в данных).
То есть получаем, что у нас есть комплексное число z, имеющее Re(z) и Im(z) части. Для каждой конкретной задачи оно будет разным, так как зависит от выбранного шага h и от заданных условий по возмущениям lambda.
Строгая устойчивость необходима, если мы считаем неопределённое количество шагов по времени. Например, при моделировании долгосрочных процессов Здесь требуется, чтобы ||R(z)||<1 - в таком случае ошибки экспоненциально уменьшаются, что хорошо для длительных вычислений.
Нестрогая (слабая) устойчивость применима, если нам нужно сделать лишь несколько шагов по времени. Здесь достаточно, чтобы ||R(z)||=1, что допускает небольшой рост ошибок, но не приводит к их чрезмерному росту на коротких интервалах.
Примеры функций устойчивости некоторых методов: