
- •РАЗДЕЛ I. МЕТОДЫ ОПТИМИЗАЦИИ
- •1. ПОСТАНОВКА ЗАДАЧ ОПТИМИЗАЦИИ И ИХ КЛАССИФИКАЦИЯ.
- •1.1. Постановка задачи
- •1.2. Методы нахождения минимума функции одной переменной
- •Метод деления отрезка пополам
- •Метод золотого сечения
- •Метод последовательного перебора
- •Метод квадратичной параболы
- •Метод кубической параболы
- •1.3. Рельеф функции
- •1.4. Представление функции в окрестности минимума
- •1.5. Классификация методов оптимизации
- •2.МЕТОДЫ НУЛЕВОГО ПОРЯДКА
- •2.1. Описание общего алгоритма методов покоординатного спуска.
- •2.2 Метод ГАУССА-ЗЕЙДЕЛЯ
- •2.3. Метод ПАУЭЛЛА
- •2.4. Метод ДСК
- •2.5. Метод РОЗЕНБРОКА
- •2.6. Метод покоординатного последовательного перебора
- •2.7. Метод ХУКА-ДЖИВСА
- •2.8. Метод НЕЛДЕРА-МИДА
- •3. МЕТОДЫ ПЕРВОГО ПОРЯДКА И МЕТОДЫ С ПЕРЕМЕННОЙ МЕТРИКОЙ
- •3.1. Метод спуска по градиенту
- •3.3. Метод Давидона-Флетчера-Пауэлла
- •3.4. Метод проективного градиента
- •3.5. Метод Мак-Кормика 1
- •3.6. Метод Мак-Кормика 2
- •3.7. Метод Гольдфарба
- •3.8. Метод Гринстадта
- •4. МЕТОДЫ УСЛОВНОЙ ОПТИМИЗАЦИИ ФУНКЦИИ N ПЕРЕМЕННЫХ.
- •4.1. Метод штрафных функций
- •РАЗДЕЛ II. ЧИСЛЕННЫЕ МЕТОДЫ УРАВНЕНИЙ МАТЕМАТИЧЕСКОЙ ФИЗИКИ
- •1. МАТЕМАТИЧЕСКИЕ МОДЕЛИ И ЧИСЛЕННЫЕ МЕТОДЫ
- •1.1. Как исследуются физические явления и решаются задачи
- •1.2. Как оценивается погрешность вычислений?
- •1.3. Откуда возникают погрешности расчетов?
- •1.4. Итерационные методы решения задач
- •2. КЛАССИФИКИЦИЯ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
- •2.1. Определение дифференциальных уравнений
- •2.2. Постановка задач для обыкновенных ДУ
- •2.4. Как получают дифференциальные уравнения
- •2.5. Подобие физических явлений, безразмерные переменные
- •3. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ МЕТОДА СЕТОК
- •3.1. Теоретические основы метода сеток
- •3.2 Решение систем обыкновенных дифференциальных уравнений
- •4. РЕШЕНИЕ КРАЕВОЙ ЗАДАЧИ ДЛЯ ДИФФЕРЕНЦАЛЬНЫХ УРАВНЕНИЙ 2-ГО ПОРЯДКА МЕТОДОМ ПРОГОНКИ
- •5. РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ В ЧАСТНЫХ ПРОИЗВОДНЫХ
- •5.1. Одномерное нестационарное уравнение теплопроводности
- •5.2. Задача Дирихле для двухмерного уравнения Пуассона

5. РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ В ЧАСТНЫХ ПРОИЗВОДНЫХ
5.1. Одномерное нестационарное уравнение теплопроводности
∂u |
|
∂ |
|
∂u |
|
|
|
u(x,0) = u0 (x). |
|
|
= |
g |
|
+ f ; |
u(a,t) =α; u(b,t) = β; |
(5. 1) |
|||||
∂t |
|
|
||||||||
|
∂x |
∂x |
|
Ω ={0 ≤ x ≤ b, 0 ≤ t ≤T} |
|
|
||||
Область интегрирования |
покрываем равномерной |
|||||||||
сеткой ωh,τ |
={(i −1)h, kτ, i =1... n1, k = 0... K}, τ - шаг по времени; h - шаг по x ; |
k– номер временного слоя; i – номер точки. Для нахождения таблицы решения |
|||||
u |
h ={ |
uik u(xitk )} используем интегроинтерполяционный способ с разбиением |
|||
Ω на подобласти Ωk ={x |
≤ x ≤ x |
, kτ ≤ t ≤ (k +1)τ}. Построим следующую |
|||
|
|
i |
i−1/ 2 |
i+1/ 2 |
|
неявную конечно-разностную схему Кранка-Николсона, безусловно устойчи-
вую и имеющую погрешность аппроксимации второго порядка o τ2 |
+ h2 |
) |
: |
|||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( |
|
|
|
|
|
|
uik+1 − |
uik |
|
=ω |
L |
|
k+1 + (1−ω |
)L |
|
k + |
|
|
= |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
u |
u |
f |
i |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
τ |
|
|
|
|
|
|
r |
|
x |
i |
|
|
|
|
r |
|
x |
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= ωr |
g |
|
|
u |
k+1 −(g |
|
|
+ g |
|
|
) |
u |
k+1 |
+ g |
|
|
u |
k+1 |
+ |
|
|
|
|
|
|
(5.2) |
||||||||||||||||||||
|
|
|
|
h2 |
|
i−1/ 2 i−1 |
|
|
i−1/ 2 |
|
|
i+1/ 2 |
|
|
|
i |
|
|
|
|
i |
+1/ 2 |
i+1 |
|
|
|
|
|
|
|
|
|
||||||||||||||
+ |
1−ωr |
g |
|
|
k |
−(g |
|
|
+ g |
|
|
|
) |
|
k |
+ g |
|
|
|
k |
+ |
|
; ω |
|
= 0,5. |
|
|
|||||||||||||||||||
|
u |
|
|
|
|
|
u |
|
|
u |
f |
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
h2 |
|
|
|
i−1/ 2 |
i−1 |
|
|
|
i−1/ 2 |
|
|
i+1/ 2 |
|
|
|
i |
|
|
|
|
i |
+1/ 2 |
i+1 |
|
|
i |
|
r |
|
|
|
|
Каждое уравнение (4.2) связывает между собой значения искомого решения в шести узлах сетки (шеститочечный шаблон), три из которых берутся на нижнем k-м слое, три − на соответствующих местах верхнего k+1 - го слоя.
Решение (4.2) находится следующим образом. Воспользуемся начальным
условием (4.1) − зададим все значения uh на нулевом слое при k = 0 |
u |
0 |
= u0 (x ). |
|
|
i |
|
i |
|
Используя (4.2), для нахождения таблицы решения на следующем k +1 |
слое |
решаем методом прогонки систему с трехдиагональной матрицей при следующих коэффициентах:
a uk+1 |
+ b uk+1 |
+ c uk+1 |
= d |
, |
|
uk+1 =α, |
uk+1 |
= β; |
|
|
i = 2... n. |
|||||||||
i i−1 |
|
i i |
|
i i+1 |
|
i |
|
|
1 |
n1 |
|
|
|
|
|
|
|
|||
ai = |
ωrτ |
gi−1/ 2 |
; ci = |
ωrτ |
gi+1/ 2 |
; bi = −ai |
− ci −1; ai = |
(1 −ωr )τ |
gi−1/ 2 ; |
|||||||||||
|
|
h2 |
|
|
|
h2 |
|
|
|
|
|
|
% |
|
h2 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
% |
= |
(1 −ωr )τ |
|
|
% |
|
|
% |
|
% |
% |
k |
% |
k |
% |
k |
|
|
||
|
|
|
|
|
|
|
|
|
|
|||||||||||
ci |
|
h |
2 |
gi+1/ 2 ; bi = −ai |
− ci +1; di = − aiui−1 |
+ biui |
+ ciui+1 |
−τ fi . |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В результате все значения на 1-м слое будут найдены. После этого переходим к вычислению значений на втором слое и т.д. до слоя K.
Заметим, что изменяя весовой параметр ωr , регулирующий распределение разностного оператора Lxuh , между соседними слоями k и k +1 можно изменять свойства конечно-разностной схемы. Так, при ωr = 0 , когда разностный оператор привязан к нижнему слою, получим явную ( aik+1 = cik+1 = 0, bik+1 =1)
49

схему: для получения значений uik+1 нет необходимости решать систему уравнений типа (4.6). Такая явная схема имеет погрешность аппроксимации o(τ1 + h2 ) и условно устойчива, т.е. ее можно использовать лишь при τ < h2 / 4 . Другой предельный случай ωr =1 соответствует чисто неявной схеме, когда
Lxuh привязан к верхнему слою ( di = uik ). Этот вариант схемы также имеет первый порядок аппроксимации по времени, т.е. o(τ1 + h2 ) , однако, она безусловна устойчива (при любых τ ) и константа устойчивости C0 значительно
меньше, чем у схемы Кранка-Николсона. Поэтому чисто неявную схему используют или при расчетах быстро изменяющихся во времени процессов, или при нахождении стационарных режимов методом установления. В последнем случае сам процесс установления не важен для приложений и для ускорения сходимости ωr и τ выбирают эмпирически в широких пределах 0 <ωr ≤ 2 , до-
биваясь установления процесса за минимальное количество шагов по времени.
5.2. Задача Дирихле для двухмерного уравнения Пуассона
|
∂ |
g(x, y,u) ∂u |
+ |
∂ |
g(x, y,u) |
∂u |
= f . |
||||
|
|
|
|
||||||||
|
∂x |
∂x |
|
∂ y |
|
|
|
∂ y |
|||
Область интегрирования Ω ={0 ≤ x ≤ a, 0 ≤ y ≤ b}. |
|||||||||||
На границе Г : |
u(0, y) =α0 ( y); |
u(a, y) =α1( y); |
|||||||||
|
|
|
u(x,0) = β0 (x); |
u(x,b) = β0 (x). |
|||||||
Выбираем равномерную |
сетку ω |
h h |
y |
={(i −1)hx , ( j −1)hy , i = |
|||||||
|
|
|
|
|
|
|
x |
|
|
|
(5.3)
1...n1, j =1...m1}.
При нахождении таблицы |
u |
h |
= |
{ |
u |
ij |
u(x , y ) |
|
|
разбиваем область Ω на подобла- |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
i i |
} |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
сти Ωij ={xi−1/ 2 ≤ x ≤ xi+1/ 2 , yi−1/ 2 ≤ y ≤ yi+1/ 2} |
|
и построим следующую конечно- |
||||||||||||||||||||||||||||||
разностную схему: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
gi−1/ 2, j |
ui−1, j −(gi−1/ 2, j + gi+1/ 2, j ) |
ui, j + gi+1/ 2, j |
ui+1, j |
+ |
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
h2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
gi, j−1/ 2 |
ui, j−1 − |
(gi, j−1/ 2 + gi, j+1/ 2 |
) |
ui, j |
+ gi, j+1/ 2 |
ui, j+1 |
= |
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
hy2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= Lx |
|
|
|
= |
|
|
, j ; |
|
|
|
|
i = 2... n1, j = 2... m1. |
|
|
||||||||||||||||||
ui, j + Ly |
ui, j |
|
fi |
|
|
|
|
|
(5.4) |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
После дополнения уравнений |
u |
|
=α0 ; |
u |
n1 j |
=α1 |
; j = 2... m, |
u |
|
= β0 ; |
u |
= β1; |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 j |
|
j |
|
|
|
|
j |
|
|
|
|
|
|
i1 |
i |
i1m |
i |
i = 2...n получаем полностью определенную систему алгебраических уравне-
ний. Эта система имеет ленточную пятидиагональную матрицу, так как каждое уравнение связывает значение решения в пяти смежных узлах сетки (пятиточечный шаблон «крест»).
Ввиду очень большого количества неизвестных, решение системы (5.4), как правило, получают одним из итерационных методов, среди которых наибо-
50

лее часто используются метод простой итерации. Его модификация - метод Зейделя с последовательной релаксацией или более эффективный метод про- дольно-поперечной прогонки.
Метод простой итерации с релаксацией реализуется следующим обра-
зом: выразим в каждом уравнении (4.4) диагональный элемент и запишем следующую итерационную схему ( k −номер итерации):
|
%k +1 |
|
|
k |
|
|
k |
|
k |
|
|
k |
+ eij , |
|||
|
|
|
|
|
||||||||||||
uij |
= aijui−1, j +bijui+1, j + cijui, j−1 |
+ dijui, j+1 |
||||||||||||||
|
|
k +1 |
|
%k +1 |
|
|
|
|
k |
|
|
|
|
|
(5.5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
uij |
=ωruij |
+ (1−ωr )uij . |
|
|
|
|
|
|
Здесь 0 <ωr < 2 − некоторый эмпирически подбираемый параметр, получив-
ший название параметр релаксации. Если процесс сходимости монотонный и очень медленный, то для его ускорения обычно выбирают 1 ≤ωr , что соответ-
ствует верхней релаксации. Если процесс развивается в виде ярко выраженных расходящихся колебаний, то его «релаксируют», выбирая ωr <1, что соответст-
вует нижней релаксации.
При программной реализации метода простой итерации используют два массива: Uk [1..n1, 1..m1] и Uk1[1..n1, 1..m1]. Вначале в массиве Uk помещается
начальное распределение u0 (xi , yi ) , после этого по формуле (5.5) получают ре-
зультат итерации в массиве Uk1. Затем массив Uk1 пересылается в Uk , и снова повторяется итерация до достижения условия сходимости.
Метод Зейделя отличается от метода простой итерации тем, что в нем используют только один массив Uk , а полученное по формуле (5.5) новое значе-
ние uijk +1 сразу засылается на место uijk и используется при вычислении следующих значений upk>+i1,l> j . За счет этого скорость сходимости возрастает при-
мерно вдвое. Однако следует отметить, что условия сходимости метода Зейделя более жесткие, поэтому если данный метод расходится при всех ωr , то реко-
мендуется попробовать использовать метод простой итерации.
Метод продольно-поперечной прогонки реализуется следующим образом.
Запишем для (4.34) итерационную схему:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u |
|
k +1/ 2 |
− |
u |
k |
|
|
|
||||
L |
|
k +1/ 2 |
+ L |
|
k |
= |
|
|
|
+ |
ij |
|
|
ij |
, |
|
|
|
|||||||||
u |
u |
f |
ij |
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
x ij |
y ij |
|
|
|
|
|
|
|
|
ωr |
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(5.6) |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u |
k+1 |
− |
u |
k+1/ 2 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
L |
|
k +1/ 2 |
+ L |
|
k +1 = |
|
|
|
+ |
ij |
|
|
ij |
|
, |
|
|||||||||||
u |
u |
f |
ij |
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
x ij |
y ij |
|
|
|
|
|
|
|
|
|
ωr |
|
|
|
|||||||||||||
здесь ωr ≤ min (a2 / n, b2 / m) |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
- эмпирически подбираемый параметр, аналогич- |
|||||||||||||||||||||||||
ный шагу по времени в схеме (5.2); k +1/ 2 - промежуточный шаг итерации. |
|||||||||||||||||||||||||||
Вначале по заданному распределению |
uij , используя первое уравнение |
||||||||||||||||||||||||||
(4.6), находим |
u |
k+1/ 2 , решая для каждого |
j = 2...m систему с трехдиагональной |
||||||||||||||||||||||||
|
|
|
ij |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
матрицей:
51

|
ak |
u |
k +1/ 2 |
+bk |
u |
k+1/ 2 |
+ ck |
u |
k+1/ 2 |
= d k ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
ij |
i−1, j |
|
ij |
i, j |
|
|
|
|
ij |
i+1, j |
|
|
|
|
ij |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
k |
|
|
|
|
|
|
|
k |
|
|
|
|
|
|
|
|
|
k |
|
|
|
k |
|
k |
|
|
|
h2 |
|
|
|
k |
|
2 |
|
|
|
|
|
k |
|
uijk |
|
|
|
|||||||||
|
a |
|
= g |
i−1/ 2, j |
; c |
|
= g |
i+1/ 2, j |
; b |
|
|
= −a |
|
−c |
|
|
− |
|
|
|
; d |
ij |
= h |
|
f |
ij |
− L u |
|
− |
|
|
. |
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
ω |
|
|
|
ω |
|
|
|
||||||||||||||||||||||||||||||||||||||||||
|
|
ij |
|
|
|
|
ij |
|
|
|
|
ij |
|
|
ij |
ij |
|
|
|
|
|
|
|
|
|
|
|
|
|
y ij |
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
||||||
После этого, используя второе уравнение (5.6), находим |
u |
k +1 , решая для каждо- |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ij |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
го i = 2...n систему с трехдиагональной матрицей: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
ak +1 |
u |
k+1 |
+bk+1 |
u |
k+1 + ck+1 |
u |
k+1 |
= d k+1, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
ij |
i, j−1 |
|
|
ij |
|
|
|
i, j |
|
ij |
|
|
i, j+1 |
|
|
|
|
ij |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
h |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k+1/ 2 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
ak+1 |
= g |
i, j−1/ 2 |
; ck+1 |
= g |
i, j |
+1/ 2 |
; bk+1 |
|
= −ak+1 |
−ck+1 |
− |
|
|
; d k+1 |
= h2 |
f |
ij |
− L uk+1/ 2 − |
uij |
|
. |
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
ij |
|
|
ij |
|
|
|
|
|
|
|
|
ij |
|
|
|
|
ij |
|
|
ij |
|
|
|
ω |
|
|
|
ij |
|
|
|
|
|
|
|
|
x ij |
|
|
|
|
ω |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
Метод продольно-поперечной прогонки является одним из самых эффективных методов решения двухмерных задач для уравнения типа теплопроводности. Его развитием для трехмерных уравнений является метод расщепления.
52