Численное решение уравнений

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Численное решение уравнений и их систем состоит в приближённом определении корней уравнения или системы уравнений и применяется в случаях, когда точный метод решения неизвестен или трудоёмок.

Постановка задачи[править | править исходный текст]

Рассмотрим методы численного решения уравнений и систем уравнений:

f(x_1, x_2, \ldots, x_n)=0\!

или

\left\{ \begin{array}{lcr}
f_1(x_1, x_2, \ldots, x_n) & =& 0 \\
\ldots & & \\
f_n(x_1, x_2, \ldots, x_n) & =& 0
\end{array}\right.

Численное решение задачи можно проводить как непосредственно (используя одноимённые методы), так и с применением оптимизационных методов, приведя задачу к соответствующему виду. Последним посвящена статья Градиентные методы.

Численные методы решения уравнений[править | править исходный текст]

Покажем, как можно решить изначальную систему уравнений, не прибегая к оптимизационным методам. В случае, если наша система представляет собой СЛАУ, целесообразно прибегнуть к таким методам, как метод Гаусса или метод Ричардсона. Однако мы всё же будем исходить из предположения, что вид функции нам неизвестен, и воспользуемся одним из итерационных методов численного решения. Среди большого разнообразия таковых выберем один из наиболее известных — метод Ньютона. Этот метод в свою очередь основывается на принципе сжимающего отображения. Поэтому сначала будет изложена суть последнего.

Сжимающее отображение[править | править исходный текст]

Определим терминологию:

Говорят, что функция \varphi\! осуществляет сжимающее отображение на [a,\; b]\!, если

  1. \forall x \in [ a, \; b ]: \varphi(x) \in [a,\; b ]\!
  2. \exist \alpha < 1: \forall x_1,x_2 \in [a,\; b ]\quad ||\varphi(x_1)-\varphi(x_2)||\leq \alpha ||x_1-x_2||\!

Тогда справедлива следующая основная теорема:

Logo arte.jpg Теорема Банаха (принцип сжимающих отображений).
Если \varphi\! — сжимающее отображение на [a, \; b]\!, то:
  1. Уравнение x=\varphi(x) имеет единственный корень  x^* в [a, \; b]\!;
  2. Итерационная последовательность x_{i+1}=\varphi(x_i)\! сходится к этому корню;
  3. Для очередного члена x_n\! справедливо ||x_n-x^*||\leq\frac{\alpha^n ||x_1-x_0||}{1-\alpha}\!.

Из последнего пункта теоремы вытекает, что скорость сходимости любого метода на основе сжимающих отображений не менее линейной.

Поясним смысл параметра \alpha\! для случая одной переменной. Согласно теореме Лагранжа имеем:

\varphi(x) \in C^1[a, \; b].\quad \forall x_1,x_2 \in (a, \; b),\quad x_1<x_2 \quad \exist \xi \in (x_1,\; x_2): \quad \varphi'(\xi)(x_2-x_1) = \varphi(x_2)-\varphi(x_1)\!

Отсюда следует, что \alpha \approx |\varphi'(\xi)|\!. Таким образом, для сходимости метода достаточно, чтобы \forall x \in [a,\; b]\quad |\varphi'(x)|\leq 1.\!

Общий алгоритм последовательных приближений[править | править исходный текст]

  1. Уравнение f(x)=0\! преобразуется к уравнению с тем же корнем вида x=\varphi(x)\!, где \varphi(x)\! — сжимающее отображение.
  2. Задаётся начальное приближение и точность x_0, \quad \varepsilon, \quad i=0\!
  3. Вычисляется очередная итерация x_{i+1}=\varphi(x_i)\!
    • Если ||x_{i+1}-x_i||>\varepsilon\!, то i=i+1\! и возврат к шагу 3.
    • Иначе x=x_{i+1}\! и остановка.

Применительно к общему случаю операторных уравнений этот метод называется методом последовательных приближений или методом простой итерации. Однако уравнение f(x)=0\! можно преобразовывать к сжимающему отображению x=\varphi(x)\!, имеющему тот же корень, разными способами. Это порождает ряд частных методов, имеющих как линейную, так и более высокие скорости сходимости.

Применительно к СЛАУ[править | править исходный текст]

Рассмотрим систему:

\left\{ \begin{array}{ccc}
a_{11} x_1 + \ldots + a_{1n} x_n & = & b_1 \\
\ldots & & \\
a_{n1} x_1 + \ldots + a_{nn} x_n & = & b_n
\end{array}\right.

Для неё итерационное вычисление будет выглядеть так:

\left( \begin{array}{c}
x_1\\
x_2\\
\vdots\\
x_n \end{array}\right)^{i+1} = \left( \begin{array}{cccc}
a_{11}+1 & a_{12} & \ldots & a_{1n} \\
a_{21} & a_{22}+1 & \ldots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \ldots & a_{nn}+1
\end{array}\right) \left(\begin{array}{c}
x_1\\
x_2\\
\vdots\\
x_n
\end{array}\right)^{i}-\left(\begin{array}{c}
b_1\\
b_2\\
\vdots\\
b_n
\end{array}\right)

Метод будет сходится с линейной скоростью, если \left\|\begin{array}{ccc}a_{11}+1 & \ldots & a_{1n} \\ \vdots & \ddots & \vdots\\ a_{n1} & \ldots & a_{nn}+1 \end{array} \right\|<1

Двойные вертикальные черты означают некоторую норму матрицы.

Решение уравнения cos(x)=x по методу простой итерации, очередная итерация: xn+1=cos xn, начальное приближение: x1 = -1
Решение уравнения f(x)=0 по методу Ньютона, начальное приближение: x1=a.

Метод Ньютона (метод касательных)[править | править исходный текст]

Одномерный случай[править | править исходный текст]

Оптимизация преобразования исходного уравнения f(x)=0\! в сжимающее отображение x=\varphi(x)\! позволяет получить метод с квадратичной скоростью сходимости.

Чтобы отображение было наиболее эффективно, необходимо, чтобы в точке очередной итерации x^* выполнялось \varphi'(x^*)=0\!. Будем искать решение данного уравнения в виде \varphi(x)=x+\alpha(x) f(x)\!, тогда:

\varphi'(x^*)=1+\alpha'(x^*) f(x^*) + \alpha(x^*) f'(x^*)=0\!

Воспользуемся тем, что f(x)=0\!, и получим окончательную формулу для \alpha(x)\!:

\alpha(x)=-\frac{1}{f'(x)}\!

С учётом этого сжимающая функция примет вид:

\varphi(x)=x-\frac{f(x)}{f'(x)}\!

Тогда алгоритм нахождения численного решения уравнения f(x)=0\! сводится к итерационной процедуре вычисления:

x_{i+1}=x_{i}-\frac{f(x_i)}{f'(x_i)}\!

Многомерный случай[править | править исходный текст]

Обобщим полученный результат на многомерный случай.

Выбирая некоторое начальное приближение \vec{x}^{[0]}\!, находят последовательные приближения \vec{x}^{[j+1]}\! путем решения систем уравнений:

f_i + \sum_{k=1}^n\frac{\partial f_i}{\partial x_k}(x^{[j+1]}_k - x_k^{[j]})=0,\quad i = 1, 2, \ldots, n\!,

где x^{[j]}=\left( x_1^{[j]} \ldots x_k^{[j]} \ldots x_n^{[j]} \right), \quad j = 0, 1, 2, \ldots\!.

Литература[править | править исходный текст]

  1. Амосов А. А., Дубинский Ю. А., Копченова Н. П. Вычислительные методы для инженеров. — М.: Мир, 1998.
  2. Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.
  3. Волков Е. А. Численные методы. — М.: Физматлит, 2003.
  4. Коршунов Ю. М., Коршунов Ю. М. Математические основы кибернетики. — М.: Энергоатомиздат, 1972.
  5. Калиткин Н. Н. Численные методы. — М.: Наука, 1978.

Ссылки[править | править исходный текст]

См. также[править | править исходный текст]