Русская Википедия:Численное решение уравнений

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

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

Постановка задачи

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

<math>f(x_1, x_2, \ldots, x_n)=0</math>

или

<math>\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.</math>

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

Численные методы решения уравнений

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

Сжимающее отображение

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

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

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

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

Шаблон:Message box

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

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

<math>\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)</math>

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

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

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

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

Применительно к СЛАУ

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

<math>\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.</math>

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

<math>\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) </math>

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

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

Файл:Cosine fixed point.svg
Решение уравнения cos(x)=x по методу простой итерации, очередная итерация: xn+1=cos xn, начальное приближение: x1 = −1
Файл:Metoda Newtona-4 kroki.png
Решение уравнения f(x)=0 по методу Ньютона, начальное приближение: x1=a.

Метод Ньютона (метод касательных)

Шаблон:Main

Одномерный случай

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

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

<math>\varphi'(x^*)=1+\alpha'(x^*) f(x^*) + \alpha(x^*) f'(x^*)=0</math>

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

<math>\alpha(x)=-\frac{1}{f'(x)}</math>

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

<math>\varphi(x)=x-\frac{f(x)}{f'(x)}</math>

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

<math>x_{i+1}=x_{i}-\frac{f(x_i)}{f'(x_i)}</math>

Многомерный случай

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

Выбирая некоторое начальное приближение <math display="inline">\vec{x}^{[0]}</math>, находят последовательные приближения <math>\vec{x}^{[j+1]}</math> путём решения систем уравнений:

<math>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</math>,

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

См. также

Шаблон:Кол

Шаблон:Кол

Литература

  1. Шаблон:Книга
  2. Шаблон:Книга
  3. Шаблон:Книга
  4. Шаблон:Книга
  5. Шаблон:Книга

Ссылки