Современные численные методы в объектно-ориентированном изложении на C#

Принципы организации вычислительных процедур

Разбить на страницы
Показывать лекцию целиком

Цель лекции: Показать важность правильности выбора вычислительных процедур. Продемонстрировать итерационные вычислительные процедуры на простом примере программы на C#.

К классическим темам вычислительной математики обычно относят следующие разделы:

  • Табулирование функций и интерполяция
  • Нахождения корней систем уравнений
  • Решение задач линейной алгебры
  • Численное интегрирование и дифференцирование
  • Решение обыкновенных дифференциальных уравнений (задачи Коши и краевых задач)
  • Решение уравнений в частных производных
  • Решение интегральных уравнений
  • Задачи линейного и нелинейного программирования
  • Обработка результатов экспериментов и задачи математической статистики
  • Решение задач дискретной математики
  • Разумеется, это не полный список тем вычислительной математики, поскольку практически в любой области математики можно найти "работу" для численных методов. Среди собственных тем вычислительной математики можно выделить следующие:

  • Сходимость численных методов
  • Оценка погрешности и сложности вычислительных процедур
  • Программирование численных методов
  • Методика проведения вычислительных экспериментов
  • Рассмотрим принципы организации вычислительных процедур на примере решения операторного уравнения. Пусть $$X$$ и $$Y$$ метрические пространства с метриками $$\rho_X$$ и $$\rho_Y$$ соответственно, и пусть задано однозначное отображение$$A:X\to Y.$$ Рассматривается уравнение$$A[x]=y,$$ где $$y\in Y$$.

    Решением уравнения 5.1 называется элемент $$x\in X$$, удовлетворяющий уравнению 5.1. Мы будем предполагать, что существует хотя бы одно решение уравнения 5.1, которое мы обозначим через $$x^*$$. Задачей вычислительной математики является конструктивное построение такого отображения$$T:\Bbb{N}\to X,$$ что последовательность$$x_n=T[n]$$ удовлетворяет следующему условию:$$\rho_X(x_n,x^*)\to0,\quad n\to\infty.$$ Для оценки эффективности вычислительной процедуры введем две величины: оценка погрешности приближенного решения$$\delta(x)=\rho_X(x,x^*),$$ и невязка приближенного решения:$$\varepsilon(x)=\rho_Y(A[x],y).$$ Для вычисления величины $$\delta(x)$$ необходимо знать собственно решение $$x^*$$, что возможно лишь в тестовых задачах. С другой стороны при вычислении невязки решение не участвует, поэтому величина $$\varepsilon(x)$$ является конструктивно вычисляемой.

    Как правило, целью численных методов является построение такой последовательности $$x_n$$, для которой выполнено условие:$$\delta(x_n)\to0.$$ Если же для нашей последовательности выполнено только условие$$\varepsilon(x_n)\to0,$$ то это еще не означает, что последовательность $$x_n$$ сходится к решению (и вообще, что сходится). Рассмотрим простой пример. Пусть $$X=Y=\Bbb{R}$$ - числовая ось. Функция $$A$$ задана по формуле:$$A[x]=\frac{x^2}{1+x^4}.$$ Рассмотрим уравнение$$\frac{x^2}{1+x^4}=0.$$ Это уравнение имеет единственное решение $$x^*=0$$. Если мы используем вычислительную процедуру$$x_n=T[n]=\frac{1}{n},$$ то легко видеть, что невязка $$\varepsilon(x_n)$$ имеет вид$$\varepsilon(x_n)=\frac{n^2}{1+n^4}\to0,\quad n\to\infty.$$ Однако последовательность $$x_n$$ никак не сходится к решению. Заметим, что причиной такой ситуации является то, что пространство $$X$$, на котором задана функция $$A$$, не является компактным.

    Однако есть следующая зависимость между функциями $$\delta$$ и $$\varepsilon$$. Если предположить, что отображение $$A$$ является непрерывным отображением, то для любой последовательности $$x_n$$ из условия$$\delta(x_n)\to0.$$ следует$$\varepsilon(x_n)\to0.$$ Обратное, как мы только что видели, не верно.

    Обратимся к способам построения операторов $$T[n]$$. Мы рассмотрим два принципиальных метода построения приближенных решений. Во-первых, это метод дискретизации. Как правило, пространство $$X$$ состоит из бесконечного числа элементов, более того, часто это пространство является бесконечномерным линейным пространством. А на компьютере мы можем работать только с конечными множествами. Поэтому для каждого целого $$n$$ вводится конечное множество $$X_n$$ и два отображения:$$D_n:X\to X_n$$ и$$I_n:X_n\to X.$$ Первое отображение осуществляет дискретизацию бесконечного пространства. Примером этого отображения может быть сужение непрерывной функции, заданной на отрезке на конечную сетку. Второе отображение играет роль интерполяции с конечного множества. Часто для этих отображений выполнено условие согласования:$$D_nI_n\tilde x=\tilde x,$$ для любого элемента $$\tilde x\in X_n$$.

    Далее решается следующая задача$$A[I_n(x)]=y.$$ Для этой задачи необходимо выбрать элемент $$\tilde x_n\in X_n$$, тогда оператор $$T$$ строится по формуле:$$T[n]=I_n\tilde x_n.$$ Поскольку выбор элемента $$\tilde x_n$$ осуществляется из конечного множества, то такой выбор может быть осуществлен для заданного $$n$$ на вычислительной машине.

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

    Другим часто применяемым принципом построения вычислительных процедур является использование принципа неподвижной точки отображения. Предположим, что решение уравнения 5.1 является неподвижной точкой некоторого другого отображения $$B:X\to X$$, то есть если $$x^*$$ - решение задачи 5.1, то имеет место:$$Bx^*=x^*.$$ Для простоты рассмотрения мы будем предполагать, что отображение $$B$$ имеет единственную неподвижную точку.

    Во многих случаях для конструктивного нахождения неподвижной точки оператора $$B$$ или, соответственно, решения уравнения 5.3 используется метод простых итераций. Пусть задано начальное приближение $$x_0\in X$$, тогда последующие приближения строятся по формуле:$$x_n=Bx_{n-1},\quad n=1,2,\dots$$ В случае, когда оператор $$B$$ является сжимающим отображением, то оператор $$B$$ имеет единственную неподвижную точку и последовательность $$x_n$$ сходится к этой точке при любом выборе начального приближения.

    Напомним, что отображение $$B$$ называется сжимающим, если существует такое число $$\alpha<1$$, что для любых $$x',x''\in X$$ имеет место$$\rho(Bx',Bx'')\le\alpha\rho(x',x'').$$

    Рассмотрим пример на применение метода неподвижных точек. Пусть пространства $$X$$ и $$Y$$ являются пространствами $$\Bbb{R}^2$$ с евклидовой метрикой. В качестве оператора $$A$$ возьмем квадратную матрицу:$$A=\left(% \begin{array}{cc} 0.9 -0.4 \\ -0.2 0.8 \\ \end{array}% \right)$$ и рассмотрим уравнение$$Ax=f,$$ где $$f=\left(% \begin{array}{c} 1 \\ 1 \\ \end{array}% \right)$$ - вектор столбец. Таким образом, уравнение 5.4 представляет собой систему линейных алгебраических уравнений. Чтобы использовать метод неподвижной точки введем оператор $$B$$ следующим образом:$$Bx=\left(% \begin{array}{cc} 0.1 0.4 \\ 0.2 0.2 \\ \end{array}% \right)x+\left(% \begin{array}{c} 1 \\ 1 \\ \end{array}% \right)$$ Легко видеть, неподвижная точка оператора $$B$$ совпадает с точным решением уравнения 5.6. Кстати, точное решение этого уравнения имеет вид:$$x^*=\left(% \begin{array}{c} 1.875 \\ 1.71875 \\ \end{array}% \right)$$ Будем строить приближенные решения по формуле$$x_n=Bx_{n-1},\quad n=1,2,\dots$$ где $$x_0=0$$. Знание точного решения позволит нам вычислять значения $$\delta(x_n)$$. Приведем программу расчета.$$\begin{verbatim} // Класс - двумерный вектор class TR2 { public double x1; // координаты public double x2; // конструктор по умолчанию public TR2() { x1 = 0; x2 = 0; } // конструктор с заданными значениями public TR2(double x1, double x2) { this.x1 = x1; this.x2 = x2; } // вычислить метрику до точки A public double rho(TR2 A) { return Math.Sqrt((x1 - A.x1) * (x1 - A.x1) + (x2 - A.x2) * (x2 - A.x2)); } } \end{verbatim}$$ $$\begin{verbatim} // Класс - матрица 2x2 class TMatrix2 { double a11, a12, a21, a22; public TMatrix2(double a11, double a12, double a21, double a22) { this.a11 = a11; this.a12 = a12; this.a21 = a21; this.a22 = a22; } // вычислить вектор после применения матрицы к вектору x public TR2 Calc(TR2 x) { TR2 res = new TR2(); res.x1 = a11 * x.x1 + a12 * x.x2; res.x2 = a21 * x.x1 + a22 * x.x2; return res; } } \end{verbatim}$$ $$\begin{verbatim} // Класс для итерационного решения уравнения class TContractingMatrix2 { TR2 x, f; // текущее значение, правая часть TMatrix2 Matrix; // матрица оператора public TContractingMatrix2(TMatrix2 Matrix, TR2 x0, TR2 f) { this.Matrix = Matrix; x = x0; this.f = f; } // переход к следующей итерации public TR2 Next() { TR2 xx = Matrix.Calc(x); xx.x1 += f.x1; xx.x2 += f.x2; x = xx; return x; } // текущее состояние public TR2 GetCurent() { return x; } } \end{verbatim}$$ Теперь испытаем класс $$TContractingMatrix2$$ на нашем примере.

    $$x_n=[1.000000E+000,1.000000E+000]; d_n=1.132354E+000\\ x_n=[1.500000E+000,1.400000E+000]; d_n=4.921652E-001\\ x_n=[1.710000E+000,1.580000E+000]; d_n=2.155842E-001\\ x_n=[1.803000E+000,1.658000E+000]; d_n=9.420490E-002\\ x_n=[1.843500E+000,1.692200E+000]; d_n=4.119651E-002\\ x_n=[1.861230E+000,1.707140E+000]; d_n=1.801125E-002\\ x_n=[1.868979E+000,1.713674E+000]; d_n=7.875165E-003\\ x_n=[1.872368E+000,1.716531E+000]; d_n=3.443224E-003\\ x_n=[1.873849E+000,1.717780E+000]; d_n=1.505477E-003\\ x_n=[1.874497E+000,1.718326E+000]; d_n=6.582366E-004\\ x_n=[1.874780E+000,1.718564E+000]; d_n=2.877996E-004\\ x_n=[1.874904E+000,1.718669E+000]; d_n=1.258341E-004\\ x_n=[1.874958E+000,1.718715E+000]; d_n=5.501820E-005\\ x_n=[1.874982E+000,1.718734E+000]; d_n=2.405550E-005\\ x_n=[1.874992E+000,1.718743E+000]; d_n=1.051774E-005\\ x_n=[1.874996E+000,1.718747E+000]; d_n=4.598653E-006\\ x_n=[1.874998E+000,1.718749E+000]; d_n=2.010661E-006\\ x_n=[1.874999E+000,1.718749E+000]; d_n=8.791174E-007\\ x_n=[1.875000E+000,1.718750E+000]; d_n=3.843748E-007\\ x_n=[1.875000E+000,1.718750E+000]; d_n=1.680595E-007\\ x_n=[1.875000E+000,1.718750E+000]; d_n=7.348034E-008\\ x_n=[1.875000E+000,1.718750E+000]; d_n=3.212767E-008\\ x_n=[1.875000E+000,1.718750E+000]; d_n=1.404712E-008\\ x_n=[1.875000E+000,1.718750E+000]; d_n=6.141797E-009\\ x_n=[1.875000E+000,1.718750E+000]; d_n=2.685366E-009\\ $$

    Мы видим, что величина $$\delta(x_n)$$ стремится к нулю, а сама последовательность $$x_n$$ сходится к точному решению.

    Классический подход вычислительной математики состоит в том, что строится некоторая эффективно выполняемая вычислительная процедура позволяющая получать приближенные решения, которые сходятся (в том или ином смысле) к точному решению. Такой подход подразумевает, что исходная задача является корректной. Корректность задачи по Адамару означает выполнения следующих трех условий:

  • Существование решения
  • Единственность решения
  • Непрерывная зависимость решения от оператора задач, правой части, начального условия
  • В начале прошлого века могло показаться, что эти условия всегда должны быть выполнены для имеющих физический смысл задач. Однако довольно быстро выяснилось, что наука и техника предъявляют большой класс задач, для которых условия некоторые из условий 1--3 не выполнены. К таким задачам относятся уравнения Фредгольма первого рода, обратные задачи для дифференциальных уравнений, задачи аналитического продолжения функций и многие другие. Задачи, для которых не выполнены какие-либо из условий 1--3, называются некорректными задачами. Некорректные задачи возникают в физике, например, неустойчивость Релея-Тейлора.

    Как правило, применять классические вычислительные процедуры для решения некорректных задач не удается. В середине XX-го века известным математиком А.Н.Тихоновым были заложены основы теории регуляризации некорректных задач. Эти результаты нашли свое эффективное применение во многих научно-технических областях.

    Изучение теории регуляризации некорректных задач выходит за рамки нашего курса.

    Ключевые термины

    Корректность задачи по Адамару - существование единственного решения у задачи и непрерывная зависимость решения от данных задачи.

    Невязка приближенного решения - количественная мера неудовлетворения приближенным решением уравнению.

    Операторное уравнение - уравнение в абстрактных пространства записанное с помощью операторов в этих пространствах.

    Принцип неподвижной точки отображение - существование такого элемента для оператора, который отображается этим оператором в себя.

    Краткие итоги: Рассмотрены различные способы организации вычислительных процедур для решения операторных уравнений. Рассмотрены вопросы связи невязки и точности решений. Приведен пример организации итерационной процедуры.

    Страницы:

    Цель лекции: Показать важность правильности выбора вычислительных процедур. Продемонстрировать итерационные вычислительные процедуры на простом примере программы на C#.

    К классическим темам вычислительной математики обычно относят следующие разделы:

  • Табулирование функций и интерполяция
  • Нахождения корней систем уравнений
  • Решение задач линейной алгебры
  • Численное интегрирование и дифференцирование
  • Решение обыкновенных дифференциальных уравнений (задачи Коши и краевых задач)
  • Решение уравнений в частных производных
  • Решение интегральных уравнений
  • Задачи линейного и нелинейного программирования
  • Обработка результатов экспериментов и задачи математической статистики
  • Решение задач дискретной математики
  • Разумеется, это не полный список тем вычислительной математики, поскольку практически в любой области математики можно найти "работу" для численных методов. Среди собственных тем вычислительной математики можно выделить следующие:

  • Сходимость численных методов
  • Оценка погрешности и сложности вычислительных процедур
  • Программирование численных методов
  • Методика проведения вычислительных экспериментов
  • Рассмотрим принципы организации вычислительных процедур на примере решения операторного уравнения. Пусть $$X$$ и $$Y$$ метрические пространства с метриками $$\rho_X$$ и $$\rho_Y$$ соответственно, и пусть задано однозначное отображение$$A:X\to Y.$$ Рассматривается уравнение$$A[x]=y,$$ где $$y\in Y$$.

    Решением уравнения 5.1 называется элемент $$x\in X$$, удовлетворяющий уравнению 5.1. Мы будем предполагать, что существует хотя бы одно решение уравнения 5.1, которое мы обозначим через $$x^*$$. Задачей вычислительной математики является конструктивное построение такого отображения$$T:\Bbb{N}\to X,$$ что последовательность$$x_n=T[n]$$ удовлетворяет следующему условию:$$\rho_X(x_n,x^*)\to0,\quad n\to\infty.$$ Для оценки эффективности вычислительной процедуры введем две величины: оценка погрешности приближенного решения$$\delta(x)=\rho_X(x,x^*),$$ и невязка приближенного решения:$$\varepsilon(x)=\rho_Y(A[x],y).$$ Для вычисления величины $$\delta(x)$$ необходимо знать собственно решение $$x^*$$, что возможно лишь в тестовых задачах. С другой стороны при вычислении невязки решение не участвует, поэтому величина $$\varepsilon(x)$$ является конструктивно вычисляемой.

    Как правило, целью численных методов является построение такой последовательности $$x_n$$, для которой выполнено условие:$$\delta(x_n)\to0.$$ Если же для нашей последовательности выполнено только условие$$\varepsilon(x_n)\to0,$$ то это еще не означает, что последовательность $$x_n$$ сходится к решению (и вообще, что сходится). Рассмотрим простой пример. Пусть $$X=Y=\Bbb{R}$$ - числовая ось. Функция $$A$$ задана по формуле:$$A[x]=\frac{x^2}{1+x^4}.$$ Рассмотрим уравнение$$\frac{x^2}{1+x^4}=0.$$ Это уравнение имеет единственное решение $$x^*=0$$. Если мы используем вычислительную процедуру$$x_n=T[n]=\frac{1}{n},$$ то легко видеть, что невязка $$\varepsilon(x_n)$$ имеет вид$$\varepsilon(x_n)=\frac{n^2}{1+n^4}\to0,\quad n\to\infty.$$ Однако последовательность $$x_n$$ никак не сходится к решению. Заметим, что причиной такой ситуации является то, что пространство $$X$$, на котором задана функция $$A$$, не является компактным.

    Однако есть следующая зависимость между функциями $$\delta$$ и $$\varepsilon$$. Если предположить, что отображение $$A$$ является непрерывным отображением, то для любой последовательности $$x_n$$ из условия$$\delta(x_n)\to0.$$ следует$$\varepsilon(x_n)\to0.$$ Обратное, как мы только что видели, не верно.

    Обратимся к способам построения операторов $$T[n]$$. Мы рассмотрим два принципиальных метода построения приближенных решений. Во-первых, это метод дискретизации. Как правило, пространство $$X$$ состоит из бесконечного числа элементов, более того, часто это пространство является бесконечномерным линейным пространством. А на компьютере мы можем работать только с конечными множествами. Поэтому для каждого целого $$n$$ вводится конечное множество $$X_n$$ и два отображения:$$D_n:X\to X_n$$ и$$I_n:X_n\to X.$$ Первое отображение осуществляет дискретизацию бесконечного пространства. Примером этого отображения может быть сужение непрерывной функции, заданной на отрезке на конечную сетку. Второе отображение играет роль интерполяции с конечного множества. Часто для этих отображений выполнено условие согласования:$$D_nI_n\tilde x=\tilde x,$$ для любого элемента $$\tilde x\in X_n$$.

    Далее решается следующая задача$$A[I_n(x)]=y.$$ Для этой задачи необходимо выбрать элемент $$\tilde x_n\in X_n$$, тогда оператор $$T$$ строится по формуле:$$T[n]=I_n\tilde x_n.$$ Поскольку выбор элемента $$\tilde x_n$$ осуществляется из конечного множества, то такой выбор может быть осуществлен для заданного $$n$$ на вычислительной машине.

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

    Другим часто применяемым принципом построения вычислительных процедур является использование принципа неподвижной точки отображения. Предположим, что решение уравнения 5.1 является неподвижной точкой некоторого другого отображения $$B:X\to X$$, то есть если $$x^*$$ - решение задачи 5.1, то имеет место:$$Bx^*=x^*.$$ Для простоты рассмотрения мы будем предполагать, что отображение $$B$$ имеет единственную неподвижную точку.

    Во многих случаях для конструктивного нахождения неподвижной точки оператора $$B$$ или, соответственно, решения уравнения 5.3 используется метод простых итераций. Пусть задано начальное приближение $$x_0\in X$$, тогда последующие приближения строятся по формуле:$$x_n=Bx_{n-1},\quad n=1,2,\dots$$ В случае, когда оператор $$B$$ является сжимающим отображением, то оператор $$B$$ имеет единственную неподвижную точку и последовательность $$x_n$$ сходится к этой точке при любом выборе начального приближения.

    Напомним, что отображение $$B$$ называется сжимающим, если существует такое число $$\alpha<1$$, что для любых $$x',x''\in X$$ имеет место$$\rho(Bx',Bx'')\le\alpha\rho(x',x'').$$

    Рассмотрим пример на применение метода неподвижных точек. Пусть пространства $$X$$ и $$Y$$ являются пространствами $$\Bbb{R}^2$$ с евклидовой метрикой. В качестве оператора $$A$$ возьмем квадратную матрицу:$$A=\left(% \begin{array}{cc} 0.9 -0.4 \\ -0.2 0.8 \\ \end{array}% \right)$$ и рассмотрим уравнение$$Ax=f,$$ где $$f=\left(% \begin{array}{c} 1 \\ 1 \\ \end{array}% \right)$$ - вектор столбец. Таким образом, уравнение 5.4 представляет собой систему линейных алгебраических уравнений. Чтобы использовать метод неподвижной точки введем оператор $$B$$ следующим образом:$$Bx=\left(% \begin{array}{cc} 0.1 0.4 \\ 0.2 0.2 \\ \end{array}% \right)x+\left(% \begin{array}{c} 1 \\ 1 \\ \end{array}% \right)$$ Легко видеть, неподвижная точка оператора $$B$$ совпадает с точным решением уравнения 5.6. Кстати, точное решение этого уравнения имеет вид:$$x^*=\left(% \begin{array}{c} 1.875 \\ 1.71875 \\ \end{array}% \right)$$ Будем строить приближенные решения по формуле$$x_n=Bx_{n-1},\quad n=1,2,\dots$$ где $$x_0=0$$. Знание точного решения позволит нам вычислять значения $$\delta(x_n)$$. Приведем программу расчета.$$\begin{verbatim} // Класс - двумерный вектор class TR2 { public double x1; // координаты public double x2; // конструктор по умолчанию public TR2() { x1 = 0; x2 = 0; } // конструктор с заданными значениями public TR2(double x1, double x2) { this.x1 = x1; this.x2 = x2; } // вычислить метрику до точки A public double rho(TR2 A) { return Math.Sqrt((x1 - A.x1) * (x1 - A.x1) + (x2 - A.x2) * (x2 - A.x2)); } } \end{verbatim}$$ $$\begin{verbatim} // Класс - матрица 2x2 class TMatrix2 { double a11, a12, a21, a22; public TMatrix2(double a11, double a12, double a21, double a22) { this.a11 = a11; this.a12 = a12; this.a21 = a21; this.a22 = a22; } // вычислить вектор после применения матрицы к вектору x public TR2 Calc(TR2 x) { TR2 res = new TR2(); res.x1 = a11 * x.x1 + a12 * x.x2; res.x2 = a21 * x.x1 + a22 * x.x2; return res; } } \end{verbatim}$$ $$\begin{verbatim} // Класс для итерационного решения уравнения class TContractingMatrix2 { TR2 x, f; // текущее значение, правая часть TMatrix2 Matrix; // матрица оператора public TContractingMatrix2(TMatrix2 Matrix, TR2 x0, TR2 f) { this.Matrix = Matrix; x = x0; this.f = f; } // переход к следующей итерации public TR2 Next() { TR2 xx = Matrix.Calc(x); xx.x1 += f.x1; xx.x2 += f.x2; x = xx; return x; } // текущее состояние public TR2 GetCurent() { return x; } } \end{verbatim}$$ Теперь испытаем класс $$TContractingMatrix2$$ на нашем примере.

    $$x_n=[1.000000E+000,1.000000E+000]; d_n=1.132354E+000\\ x_n=[1.500000E+000,1.400000E+000]; d_n=4.921652E-001\\ x_n=[1.710000E+000,1.580000E+000]; d_n=2.155842E-001\\ x_n=[1.803000E+000,1.658000E+000]; d_n=9.420490E-002\\ x_n=[1.843500E+000,1.692200E+000]; d_n=4.119651E-002\\ x_n=[1.861230E+000,1.707140E+000]; d_n=1.801125E-002\\ x_n=[1.868979E+000,1.713674E+000]; d_n=7.875165E-003\\ x_n=[1.872368E+000,1.716531E+000]; d_n=3.443224E-003\\ x_n=[1.873849E+000,1.717780E+000]; d_n=1.505477E-003\\ x_n=[1.874497E+000,1.718326E+000]; d_n=6.582366E-004\\ x_n=[1.874780E+000,1.718564E+000]; d_n=2.877996E-004\\ x_n=[1.874904E+000,1.718669E+000]; d_n=1.258341E-004\\ x_n=[1.874958E+000,1.718715E+000]; d_n=5.501820E-005\\ x_n=[1.874982E+000,1.718734E+000]; d_n=2.405550E-005\\ x_n=[1.874992E+000,1.718743E+000]; d_n=1.051774E-005\\ x_n=[1.874996E+000,1.718747E+000]; d_n=4.598653E-006\\ x_n=[1.874998E+000,1.718749E+000]; d_n=2.010661E-006\\ x_n=[1.874999E+000,1.718749E+000]; d_n=8.791174E-007\\ x_n=[1.875000E+000,1.718750E+000]; d_n=3.843748E-007\\ x_n=[1.875000E+000,1.718750E+000]; d_n=1.680595E-007\\ x_n=[1.875000E+000,1.718750E+000]; d_n=7.348034E-008\\ x_n=[1.875000E+000,1.718750E+000]; d_n=3.212767E-008\\ x_n=[1.875000E+000,1.718750E+000]; d_n=1.404712E-008\\ x_n=[1.875000E+000,1.718750E+000]; d_n=6.141797E-009\\ x_n=[1.875000E+000,1.718750E+000]; d_n=2.685366E-009\\ $$

    Мы видим, что величина $$\delta(x_n)$$ стремится к нулю, а сама последовательность $$x_n$$ сходится к точному решению.

    Классический подход вычислительной математики состоит в том, что строится некоторая эффективно выполняемая вычислительная процедура позволяющая получать приближенные решения, которые сходятся (в том или ином смысле) к точному решению. Такой подход подразумевает, что исходная задача является корректной. Корректность задачи по Адамару означает выполнения следующих трех условий:

  • Существование решения
  • Единственность решения
  • Непрерывная зависимость решения от оператора задач, правой части, начального условия
  • В начале прошлого века могло показаться, что эти условия всегда должны быть выполнены для имеющих физический смысл задач. Однако довольно быстро выяснилось, что наука и техника предъявляют большой класс задач, для которых условия некоторые из условий 1--3 не выполнены. К таким задачам относятся уравнения Фредгольма первого рода, обратные задачи для дифференциальных уравнений, задачи аналитического продолжения функций и многие другие. Задачи, для которых не выполнены какие-либо из условий 1--3, называются некорректными задачами. Некорректные задачи возникают в физике, например, неустойчивость Релея-Тейлора.

    Как правило, применять классические вычислительные процедуры для решения некорректных задач не удается. В середине XX-го века известным математиком А.Н.Тихоновым были заложены основы теории регуляризации некорректных задач. Эти результаты нашли свое эффективное применение во многих научно-технических областях.

    Изучение теории регуляризации некорректных задач выходит за рамки нашего курса.

    Ключевые термины

    Корректность задачи по Адамару - существование единственного решения у задачи и непрерывная зависимость решения от данных задачи.

    Невязка приближенного решения - количественная мера неудовлетворения приближенным решением уравнению.

    Операторное уравнение - уравнение в абстрактных пространства записанное с помощью операторов в этих пространствах.

    Принцип неподвижной точки отображение - существование такого элемента для оператора, который отображается этим оператором в себя.

    Краткие итоги: Рассмотрены различные способы организации вычислительных процедур для решения операторных уравнений. Рассмотрены вопросы связи невязки и точности решений. Приведен пример организации итерационной процедуры.

    Вернуться к учебному плану