Численные методы решения задач диффузии

advertisement
Московский государственный технический университет
имени Н.Э. Баумана
К.В. Титов
ЧИСЛЕННЫЕ МЕТОДЫ
РЕШЕНИЯ ЗАДАЧ ДИФФУЗИИ
Методические указания к компьютерному практикуму
по курсу «Уравнения математической физики»
Москва
Издательство МГТУ им. Н.Э. Баумана
2009
УДК 518.12
ББК 22.193
Т454
Рецензент
И.О. Янов
Т454
Титов К.В.
Численные методы решения задач диффузии: Метод. указания к компьютерному практикуму по курсу «Уравнения математической физики». — М.: Изд-во МГТУ им. Н.Э. Баумана, 2009. — 48 с.: ил.
Справочно представлены основные методы численного решения
обыкновенных дифференциальных уравнений и краевых задач. Механизм и эффективность работы этих методов выявляются в процессе
выполнения компьютерного практикума. Это способствует формированию у студентов необходимой теоретической и практической базы
знаний для последующего решения прикладных задач диффузии. Даны все необходимые рекомендации для проведения вычислительных
работ на персональных компьютерах по численным методам решения
некоторых задач математической физики. Приведены теоретический
материал, необходимый для работы с электронной версией методических указаний, и условия типового расчета.
Для студентов старших курсов (третий и выше) специальности
«Ядерные реакторы и установки». Изложенный материал может быть
полезен и другим пользователям с точки зрения применения компьютерных технологий в обучении, в том числе дистанционном.
УДК 518.12
ББК 22.193
 МГТУ им. Н.Э. Баумана, 2009
ПРЕДИСЛОВИЕ
Поставленная перед автором задача состояла в том, чтобы за
весьма ограниченное время научить студентов решать некоторые
прикладные задачи по их будущей специальности. Поэтому многое из того, что составляет предмет численных методов решения
обыкновенных дифференциальных уравнений (ОДУ), пришлось
опустить или отослать читателя к самостоятельной проработке
материала.
Данные методические указания следует рассматривать лишь
как введение в численные методы решения ОДУ, ориентированное в первую очередь на специальные прикладные задачи математической физики. Однако, несмотря на временные ограничения, в процессе обучения студент получает в свое распоряжение
завершенный, эффективно работающий инструмент для решения
рассматриваемого класса задач.
Помимо «твердой копии» методические указания имеют также
электронную версию, что позволяет эффективнее вести процесс
обучения, в частности, проводить лабораторные работы, закрепляющие теоретические знания на практике.
По данной тематике автором был прочитан курс лекций и проведен ряд лабораторных работ, в том числе зачетная лабораторная
работа для студентов специальности «Ядерные реакторы и установки». В основе предлагаемого пособия лежат методические указания [1].
Автор выражает свою признательность и благодарность профессору Г.И. Богомолову за полезные советы и обсуждение и
предоставленную возможность использования таблицы вариантов
для проведения зачетной лабораторной работы.
3
1. ВВЕДЕНИЕ В ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ
ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
Численные методы и их реализация в среде систем компьютерной математики, к которым в первую очередь следует отнести
MathCAD, Maple, MATLAB, Mathematica и некоторые другие, не
только расширяют класс реально решаемых дифференциальных
уравнений, но и существенно упрощают сам процесс их решения.
В этом случае можно говорить об интегрируемости ОДУ в явном
виде, когда решение может быть получено с помощью конечного
числа элементарных операций, к которым относят вычисления на
ЭВМ. Решение можно представить в виде графика, в том числе
трехмерного, или анимационного клипа, соответствующего изменению параметров задачи в интерактивном режиме.
Самый общий и хронологически более ранний подход в решении дифференциальных уравнений — представление решения рядом Тейлора, которое по разным причинам (в первую очередь изза отсутствия мощной вычислительной техники) отвергалось и заменялось другими, более простыми методами. Этот метод интегрирования дифференциальных уравнений был исключен из широкой практики более столетия назад [2]. С появлением систем
компьютерной математики вычислительные трудности были
устранены, и метод разложения в ряд Тейлора можно с успехом
применять при решении ОДУ.
Суть метода состоит в том, что решение на отрезке [xi, xi+1] в
окрестности точки xi отыскивают в виде
n
y( x)   y ( j ) ( xi )
j 0
( x  xi ) j
,
j!
(1)
где n — целое положительное число; y(j)(xi) — производная от y(x)
порядка j, вычисленная в точке xi.
4
Такой подход был использован в [3] для решения широкого
класса дифференциальных уравнений, в том числе нелинейных.
В методических указаниях рассмотрены так называемые методы Рунге – Кутта: метод Эйлера, метод Адамса, уже упомянутый
метод Тейлора (см. уравнение (1)) и др. Дан сравнительный анализ
их точности, которая продемонстрирована на решении конкретных
задач лабораторного практикума.
Решение большинства задач, рассмотренных в методических
указаниях, проведено в системе MathCAD как наиболее простой.
Хотя с таким же успехом все они могли быть решены в любой
другой из перечисленных выше систем компьютерной математики.
Использование системы MathCAD приводит к необходимости достаточно специфического изложения учебного материала, что обусловлено требованиями этой системы.
Имеется в виду, что в методических указаниях автор средствами
редактора Word (по просьбе Издательства) пытается представить
решения задач в виде, приближенном к тому, в котором эти решения записывались бы с помощью системы MathCAD. Автор предлагает читателю, изучающему материал, принять эту условность.
1.1. Метод Эйлера
d
y( x)  f ( x, y) для
dx
заданных начальных условий: x0 , y ( x0 )  y0 численно методом
конечных разностей.
Число точек дискретизации: n : 10  FRAME i : 0...n  1
Задание функции: f (x, y) : y  x
Пусть требуется решить уравнение вида
Область определения функции: x =  x 0 ,b b : 1
Начальные условия: x 0 : 0 y0 : 1
Просмотр на экране дисплея численного значения функции в
этой точке: f (x 0 , y0 )  1
b  x0
Дискрет по х: h :
. Для выбранных параметров h  0.1
n
Дискретное представление самой переменной: x i : h  i
5
Таким образом, для вычисления у(х) получим выражение
yi 1 : yi  h  f (x i , yi )
(2)
Приведем некоторые его значения: n  10 y n  3.1875 y5  1.721
Точное решение этого дифференциального уравнения:
Q(t) : 2  e t  t  1
Значение функции на правой границе: Q(1)  3.4366 (рис. 1;
возможна анимация графика по параметру n).
4
yi
Q ( t)
3
2
1
0
0.2
0.4
0.6
0.8
xi  t
Рис. 1
Разностная схема (метод) не всегда работает. Если
f ( x, y)  f ( y) и f ( yi )  0, то в силу (2) значения yi 1 будут равны yi , что не всегда так. Примером может служить процесс, опи-
d2
z(t)  sin(z(t)) = 0 или уравнением
dt 2

d
q2 

z(t) =   2 cos(z(t))  cos(z 0 )   q : 0 z0 : с заданными

dt
2 
2


начальными условиями: z (0)  z0 , z(0)  q . Независимо от значения q, z (t ) — изменяемая во времени функция. Однако при q = 0
разностная схема дает другой результат: z (t ) = const. При q  0
картина получается достоверной.
сываемый уравнением
6
Если не ввести обозначение константы, то возникнут трудности при записи функции f 1( z ) :
CON : cos(z 0 )
Пусть переменные z и t принадлежат соответственно интервалам   z0 , z0  и  0,T  . Запишем переменную t в дискретном виде
(значение Т подобрано как полупериод):
T
m : 50  FRAME j: 0...m  1 T : 3.3  :
t i :   j q1: 0.2
m
2
zj
0
z2 j
2
0
2
4
tj
Рис. 2
Введем обозначение (CON = q = 0) :
f1(z) :  2 cos(x)  CON 
q2
2
При этом (2) может быть записано в виде первых двух слагаемых
ряда Тейлора:
z j1 : z j    f1 (z j ) z 4  1.5708
В результате получаем ошибочное решение zj, представляемое на
графике прямой линией (рис. 2; возможна анимация графика).
В то же время при q = q1  0 будем иметь:
f 2(z) :  2 cos(z)  CON 
q12
2
z20 : z 0 z2 j1 : z2 j    f 2(z2 j )
7
Это решение также представлено на рис. 2 и является единственно
правильным.
Задания. 1. Снять клип по параметру q1: 0.2  q1  0.
2. Привести другие примеры неадекватной работы метода Эйлера.
1.2. Метод Адамса
d
x(t) = (t, x) для заданных начальdt
ных условий: t0 , x(t0 )  x0 , t0  t  b, численно методом конечных
разностей.
Запишем формулу Адамса с четырьмя членами [2]:
Решить уравнение вида
h
5h
Xk 1  Xk  h  Xk   Xk 1   2Xk  2
2
12
Здесь h  X k 1  X k ; X k 1  X k  X k 1;  2 X k  2  X k 1  X k  2 ;
X k  X (tk ); X k  X (tk ).
Формула Адамса дает возможность по X k , X k 1 , X k  2 определить X k 1. Таким образом, зная X 0 , X1 , X 2 , мы можем определить X 3 и далее X 4 , X 5 , …
Рассмотрим на примере задачи, решенной выше, — см. подразд. 1.1 — моделирование алгоритма Адамса в системе MathCAD.
b  t0
K : 6 k : 0...k
Дано: (t, X) : X  t t 0 : 0 X 0 : 1 h :
n
t k : t 0  k  h
Просмотр численного значения: h  0.1 b  1
dn
Вычисляем значение n-й производной: Xn(t, X)  n (t, X) .
dt
В системе Maple достаточно предыдущей символьной записи, а
в MathCAD каждую производную надо записывать отдельно.
d
 d

Вторая производная: X2(t, X) : (t, X)  (t, X)  
(t, X) 
dt
 dX

Третья производная:
8
X3(t, X) :
2
 d2
 d d
 d
 d
  
(t, X)  
(t, X)  
(t, X)   ...
 2  (t, X)  (t, X)   2  
dt
 dX
 dX
  
  dt dX
 

2
  (t, X) 2  d (t, X)



dX 2
Запись последующих производных в MathCAD становится
обременительной. В Maple эту процедуру символьного дифференцирования выполняет сама система, что позволяет записывать
производные практически любого порядка и работать с ними.
Можно осуществить проверку правильности вычисления производных для выбранных значений функции в отдельных точках:
X 3(t0 , X 0 )  2, X 2(t0 , X 0 )  2.
Вывод: вычисление в среде MathCAD выполнено правильно, в
том числе и для других функций.
X10 :  (t 0 , X 0 )
X20 : X2(t 0 , X 0 )
Введем обозначения:
X30 : X3(t 0 , X 0 ).
Просмотр численных значений и проверка: X10  1 X20  2
X30  2
Проверка завершена успешно.
Используя разложение X (t ) в ряд Тейлора в окрестности точки t 0 и беря его первые четыре члена, определим X1 : X(t1 ) и
X 2 : X(t 2 ) как
h2
h3
 X20   X30
2
6
2
(2  h)
(2  h)3
X 2 : X 0  2  h  X10 
 X20 
 X30
2
6
X1 : X 0  h  X10 
Проверка численных значений:
X1  1.1103 X 2  1, 2427  (t1 ,X1 )=1.2103  (t 2 ,X 2 )=1.4427
Первые разности:
k : 1...2 X1k 1 : (t k , X k )  (t k 1 , X k 1 ) X1k 1 = (0.2103, 0.2323)
9
Вторые разности:
k : 2  2X k  2 : X1k 1  X1k  2  2X k  2  0.022
Проверка завершена успешно.
Далее все последующие значения х будем вычислять по формуле Адамса, имеющей вид
k : 2...K
Xk 1 : Xk 
23  h
4h
5 h
   t k ,Xk  
   t k-1,Xk-1  
   t k-2 ,Xk-2 
12
3
12
XX j : X j
j: 0...K
Результаты вычислений представим в виде вектора X и графически (рис. 3):
X T = (1 1.1103 1.2427 1.3995 1.5833 1.7969 2.0435 2.3266)
2.5
2
XX j
1.5
1
0
0.2
0.4
0.6
tj
Рис. 3
Сравним численные результаты, полученные разными методами:
метод Эйлера — y n ; метод Адамса — X k ; точное решение — Q( x).
Значение в точке 0.4: y 4  1.5282 X 4  1.5833 Q(0.4)  1.5836
Относительная ошибка в процентах:
Q  0.4   y4
Q  0.4 
10
100  3.5014
Q  0.4   X4
Q  0.4 
100  0.0238
Значение в точке 0.6: y6  1.9431 X6  2.0435 Q(0.6)  2.0442
Относительная ошибка в процентах:
Q  0.6   y6
Q  0.6 
100  4.9464
Q  0.6   X6
Q  0.6 
100  0.0345
1.3. Метод разложения решения в ряд Тейлора
В основе метода, который также можно назвать методом припасовывания, лежит представление решения рядом Тейлора. Решение должно быть гладким и иметь непрерывные производные
до (n + 1)-го порядка включительно. Ряд Тейлора заменяется его
первыми n + 1 членами разложения в окрестности точки tk на каждом участке k. Конечные значения аргументов на этом участке
становятся начальными на следующем участке k + 1 (подробнее
см. [3]).
d
На примере рассмотренного ранее уравнения V (t )  V (t )  t
dt
с начальными условиями: t0 , V (t0 ) покажем, как работает этот
метод.
b  t0
t k  t 0  h  k K  6 k  0...K (t, V) : V  t
Дано: h 
n
t 0 : 0 V0 : 1
Вычисляем: V2  t, V  :
d
 d

(t, V)  (t, V)  
(t, V) 
dt
 dV

2
 d2
 d d
 d
 d
  
 2 (t, V)  (t, V)   2  
(t, V)  
(t, V)  
(t, V)   ...
 dV
 dV
  
 dt
  dt dV
V3  t, V  : 

2


2 d
 (t, V)  dV 2 (t, V)

Проверка: k : 0 V2k : V2(t k , Vk ) V3k : V3(t k , Vk ) V2k  2
V3k  2
Численные значения производных в заданных точках подтверждены. Проверка завершена успешно.
11
Представим алгоритм вычислений (некоторые параметры следует переопределить еще раз): t 0 : 0 V0 : 1 (t, V) : V  t K : 6
k : 0...K t k : t 0  h  k
V2(t, V) :
d
 d

(t, V)  (t, V)  
(t, V) 
dt
 dV

2
 d2
 d d
 d
 d
  
 2 (t, V)  (t, V)   2  
(t, V)  
(t, V)  
(t, V)   ...
 dV
 dV
  
 dt
  dt dV
V3(t, V) : 

2
d


2

(t,
V)


(t,
V)


dV 2
for k  0...K
tk  t0  k  h
V1k  (t k , Vk )
V :
W2k  V2(t k , Vk )
W3k  V3(t k , Vk )
Vk 1  Vk  V1k  h 
W2k 2 W3k 3
h 
h
2!
3!
V
1.4. Сравнительный анализ численных результатов,
полученных разными методами
Имеются следующие результаты: метод припасовывания —
Vk ; метод Адамса — X k ; точное решение — Q( x).
Необходимо переопределить имя компоненты вектора:
Q1k : Q(t k )
V T = (1 1.1103 1.2428 1.3998 1.5838 1.7968 2.0448 2.3284)
Q1T = (1 1.1103 1.2428 1.3997 1.5836 1.7974 2.0442)
Q14  1.5836 Q(t 4 )  1.5836 X 4  1.5833 k: = 4
12
Относительная ошибка в процентах:
Q  t k   Xk
Q tk 
100  0.0238
Q  t k   Vk
Q tk 
100  0.0123
З а м е ч а н и е. Недопустимо определение Q k : Q(t k ) ! Формула
в тексте далее идет как исполняемая формула! Переместите формулу выше и убедитесь в этом.
Таким образом, метод припасовывания дает более точный результат, чем все предыдущие.
Упражнение 1.1
Решить численно дифференциальное уравнение второго поd2
рядка
y  f ( x, y ) методом припасовывания для заданных
dx 2
функций:  x 2 y,  sin( y),  atan( y). Здесь функция f ( x, y ) не содержит производной y , что упрощает алгоритм решения.
Дано: x 0 : 0 y0 : 1 y10 : 0 f (x, y) :  sin(y) U1(x, y, y1) : y1
U2(x, y) : f (x, y)
Если хотите сравнить полученное Вами решение с ответом, откройте в электронной версии методических указаний представленную ниже закрытую область.
Приступаем к решению, вычисляем. Третья производная:
d
d
U3(x, y, y1) : f (x, y)  y1 f (x, y)
dx
dy
Четвертая производная:
U4(x, y, y1) :
:
2
d2
d d
d
2 d
f
(x,
y)

2

y1

f
(x,
y)

y1

f (x, y)  f (x, y)  f (x, y)
2
2
dx
dy
dy
dx
dy
Зададим дискрет по x: bb : 20 K : 40  FRAME h :
h  0.5 k : 0...(K  1) x k : x 0  k  h
bb  x 0
K
13
Алгоритм решения дифференциального уравнения:
for k  0...K
xk  x0  k  h
W1k  y1k
W2k  f (x k , y k )
y :
W3k  U3(x k , y k , y1k )
W4k  U4(x k , y k , y1k )
W2k 2 W3k 3 W4k 4
h 
h 
h
2!
3!
4!
W3k 2 W4k 3
y1k 1  W1k  W2k  h 
h 
h
2!
3!
y k 1  y k  W1k  h 
y
Дискретные значения первой производной от полученного решения y (рис. 4, 5, возможна анимация графиков):
y1k 1 :
: U1(x k , y k , y1k )  U2(x k , y k )  h 
U3(x k , y k , y1k ) 2 U4(x k , y k , y1k ) 3
h 
h
2!
3!
1
y1k
0
1
1
0
yk
Рис. 4
14
1
2
1
yk
0
y1k
1
2
0
5
10
15
20
xk
y 40  0.958
Рис. 5
Упражнение 1.2
Решить численно дифференциальное уравнение второго поd2
рядка 2 y  f  x, y, y1 методом припасовывания, где
dx
f  x, y, y1 :
 p2

1
 y1   2  1  y
x
x

Это уравнение Бесселя (содержит
FRAME
y' = y1
p : 0.5 
100
y ).
Дано: x 0 : 0.5 y0 : 1 y10 : 0 f  x, y, y1 :
Здесь р = const,
 p2

1
 y1   2  1  y
x
x

Первая и вторая производные заданы:
U1(x, y, y1) : y1
U2(x, y, y1) : f (x, y, y1)
15
Третья производная:
U3  x, y, y1 :
 d

d
d
f  x, y, y1  y1  f  x, y, y1  f  x, y, y1  
f  x, y, y1 
dx
dy
 dy1

Четвертая производная:
U4  x, y, y1 :
d2
f  x, y, y1 ...
dx 2
d d
 d d

2  y1  
f  x, y, y1  f  x, y, y1  
f  x, y, y1   ...
 dy dy1

 dx dy
2


d d
2 d
2

f
x,
y,
y1

f
x,
y,
y1

y1

f x, y, y1 ...






2 
dx dy1
dy


2
 


d
d
   f  x, y, y1  f  x, y, y1  f  x, y, y12 
f
x,
y,
y1
...



dy
dy12
 

 

   d f  x, y, y1  d f  x, y, y1

  dx
dy1
 
Зададим дискрет по x: bb : 10.5 K : 100 h :
bb  x 0
h  0.1
K
k : 0...(K  1) x k : x 0  k  h
Если хотите сравнить полученное Вами решение с ответом, откройте в электронной версии методических указаний закрытую
область.
Аналитическое выражение решения y(x) на участке припасовывания k, где X k  X  X k 1 , можно записать в виде W0,k : y k
W1,k : U1 x k , y k , y1k  W2,k : U2  x k , y k , y1k  W3,k : U3  x k , y k , y1k 
W4,k : U4  x k , y k , y1k 
16
W0,0  1
W
2
 0.9963 


 0.0498 
  0.4169  k : 15


 0.9341 
 7.3828 


4
W
n
yk  z  :   n,k   z  x k  
n  0  n!

(3)
В качестве проверки (3) вычислим (здесь невозможны обозначения y(z), yk(x)):
yk  x k 1   0.4752 y k 1  0.4752 x k  2 x k 1  2.1 y1k 1  0.6143
Учитывая,
( 0  q  h ):
что
X k  X  X k 1 ,
можно
(3)
переписать
4
W

yp  q  :   n,k  q n 
n  0  n!

Результаты представим графически (рис. 6).
1
1
0.75
0.75
yk ( z) 0.5
yp ( q) 0.5
0.25
0.25
0
2
0
2.05
0
0.05
q
z
Рис. 6
Упражнение 1.3
Обобщить и записать в векторно-матричной форме алгоритм
решения дифференциального уравнения второго порядка
d2y
 f ( x, y, y1) методом припасовывания на примере решения
dx 2
уравнения Бесселя.
17
Дано: x 0 : 0.5 y0 : 1 y10 : 0 p : 0.5 
FRAME
a 0 : 1 a1 : 0
100
 p2

1
 y1   2  1  y
x
x

Введем обозначения: U1 x, y, y1 : y1 U2  x, y, y1 : f  x, y, y1
Порядок дифференциального уравнения: m : 2.
Старший порядок производной в разложении в ряд Тейлора:
f  x, y, y1 :
n : 4
Зададим дискрет по x: bb : 10.5 KK : 100 h :
bb  x 0
h  0.1
KK
k : 0...KK x k : x 0  k  h
Начальные условия будем записывать в матрицу: {Yj,k}
j: 0...m  1 Yj,0 : a j
Матрица
коэффициентов
LL2,0 : U2  x 0 , Y0,0 , Y1,0 
ряда
Тейлора:
LL j,0 : Yj,0
Третья производная:
U3  x, y, y1 :
 d

d
d
f  x, y, y1  y1  f  x, y, y1  f  x, y, y1  
f  x, y, y1 
dx
dy
 dy1

Четвертая производная:
U4  x, y, y1 :
d2
f  x, y, y1 ...
dx 2
d d
 d d

2  y1  
f  x, y, y1  f  x, y, y1  
f  x, y, y1   ...
 dy dy1

 dx dy
2


d d
d
f  x, y, y1  y12  2 f  x, y, y1 ...
 2  f  x, y, y1 

dx dy1
dy


2
 

   f  x, y, y1  d f  x, y, y1  f  x, y, y12  d 2 f  x, y, y1 ...  
dy
dy1
 

 

   d f  x, y, y1  d f  x, y, y1

  dx
dy1
 
18
Если хотите сравнить полученное Вами решение с ответом, откройте в электронной версии методических указаний закрытую
область.
Алгоритм:
for j  0..m  1
Yj,0  a j
L j,0  Yj,0
LL : L m,0  U2(x 0 , Y0,0 , Y1,0 )
L m 1,0  U3(x 0 , Y0,0 , Y1,0 )
L m  2,0  U4(x 0 , Y0,0 , Y1,0 )
L
Запись начальных условий в
матрицу LL.
Вычисление производных и их
значений
для
заданных
начальных условий с последующей их записью в матрицу
LL коэффициентов ряда Тейлора.
Вычисление производных и их значений на
for j  0..m  1
всех участках припаn
LL

 совывания для вычисi,k
yy( j, k, t)   
 (t  x k )i  j  ляемых
начальных
i  j  (i  j)!
 условий с последуюYj,k 1  yy( j, k, x k 1 )
щей их записью в матрицу LL коэффициенLL j,k 1  Yj,k 1
тов ряда Тейлора.
LL : LL m,k 1  U2(x k 1 , Y0,k 1 , Y1,k 1 )
Начальные
условия
LL m 1,k 1  U3(x k 1 , Y0,k 1 , Y1,k 1 )
следующего участка.
LL m  2,k 1  U4(x k 1 , Y0,k 1 , Y1,k 1 )
for k  0..KK  1
LL
19
Ниже представлена матрица LL коэффициентов ряда Тейлора:
0
0
1
LL=
2
3
4
1
0
0
-4
32
1
2
0.9995 0.9963
-0.0147 -0.0498
-0.2809 -0.4169
-1.8816 -0.9341
14.2205 7.3828
3
0.9892
-0.0949
-0.4841
-0.4513
4.3536
4
0.9772
-0.1449
-0.5146
-0.1771
2.8588
5
6
0.9601 0.9378
-0.1967 -0.2488
-0.5233 -0.5179
-5.896810-3 0.1103
2.053 1.5835
Аналитический вид решения исходного дифференциального
уравнения записан ниже ( j — порядок производной; k — участок
припасовывания; t — независимая переменная):
n  LL
i j 
i,k
y  j, k, t  :  
  t  x k   y  0,0, x 0   1
  i  j !
i j 

Фазовый портрет полученного решения представлен на рис. 7
(возможна анимация графика, 100 кадров).
0.5
y  1  k  xk
0
0.5
1
0.5
0
0.5
y  0  k  xk
1
Рис. 7
Анимация графика (рис. 8) показывает, что есть две устойчивые точки (два узла), которые практически не меняют своего положения при изменении параметра h. Это точки Х = 2 и Х = 4. Возможно, есть и другие точки.
Аналитическое выражение решения y(j, k, t) на участке припасовывания k, где X k  t  X k 1 , можно записать в виде
20
j: 0
n  LL
i j 
i,k
y  j, k, t  :  
 t  xk  
  i  j !
i j 

Графики участка припасовывания и всего процесса можно сопоставить на одном рисунке (рис. 9).
2
1
y  0  k  xk
y  1  k  xk
0
1
2
0
2
4
6
8
10
12
xk
Рис. 8
2
y  0  k  xk 1
y ( 0  20  t)
0
1
0
2
4
6
8
10
12
xk  t
Рис. 9
21
0.5
0
LL1  k
0.5
1
0.5
0
0.5
1
LL0  k
Рис. 10
2
LL0  k
LL1  k
1
0
1
0
2
4
6
8
10
12
xk
Рис. 11
Другие возможности представления графиков решения исходного дифференциального уравнения иллюстрируют рис. 10 и 11.
22
2. ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ КРАЕВЫХ ЗАДАЧ
2.1. Метод стрельбы (пристрелки)
Рассмотрим особенности применения этого метода на примере
решения уравнения y  y = e x с граничными условиями: y(0) = 1
y(1) = 2. Точное решение этого уравнения:
1
sin(t)  1 1

yt(t) :  e t  cos(t) 
 2   e  cos(1) 
2
sin(1) 
2

Проверим его граничные значения: yt(0)  1 yt(1)  2





Заметим, что при граничных условиях: yt(0) = 1 yt    = 1
2
данное уравнение решения не имеет.
Приведем алгоритм решения этого уравнения по методу
стрельбы.
Дано: f (x) : e x N : 2  FRAME j: 0...N a : 0 b : 1
ba
h  0.5
h :
N
Перейдем к дискретным переменным: x j : j  h x 0 : a x N : b
Левое граничное условие: если y00 : 1 , то y10 : 0
Здесь и далее введены обозначения: y 0 j — дискретные значения частного решения неоднородного дифференциального уравнения; y1 j — дискретные значения общего решения однородного
дифференциального уравнения.
23
Произвольно задаем:
m : 0.5 
1
 FRAME
50
y01 : y00 
h
m
y11 : h y11 : 0
Этих данных достаточно, чтобы определить все остальные значения: y0 j y1j j  2, N.
Алгоритм: j: 1...N  1 y01  2
Запишем рекуррентные формулы вычисления частного и общего решений соответствующего неоднородного и однородного дифференциальных уравнений, представленных в разностном виде:
y0 j1  2  y0 j  y0 j1
h
2
 y0 j = e
y1j1  2  y1j  y1j1
x j
h2
 y1j = 0
Выразим из этих уравнений:

y0 j1 : h 2  e
x j

 y0 j  y0 j1  2  y0 j y1j1 : h 2  y1j  y1j1  2  y1j
2  y0 N
y1N
Теперь выпишем все значения компонент вектора y: j: 0...N
y j : y0 j  B  y1j y N  2
В конце вычислений находим: B :
Сравнение полученных решений представлено на рис. 12 (возможна анимация графика только по параметру h, 100 кадров).
2
y
yt ( t)
1.5
1
0
0.5
xt
Рис. 12
24
1
Изменим в этой задаче граничные условия на y(0)  1, y(4)  2
и соответственно внесем коррективы в исходные данные:
a  x  b, где a : 0 b : 4
ba
Число точек отсчета: N : 40 ; дискрет по х: h :
, где
N
1
h  0.1 . Выберем параметр анимации m : 0.2   FRAME , знак
20
(+, –): s0 : 1 , s1: 1 . Зададим дискретные начальные значения
частного решения соответственно неоднородного и однородного
исходного уравнения: y00 : 1 , y10 : 0 .
Произвольно (как предлагается в [2, с. 549]) задаем:
h
y11 : s1  h y11  0
y01 : y00  s0 
m
В режиме анимации проанализируем это утверждение.
Дискретные значения независимой переменной: j: 1...N  1
x j : j  h x 0 : a x N : b
Запишем в разностном виде исходное неоднородное и однородное дифференциальные уравнения и их приближенные решения в дискретных точках:

y0 j1  h 2  e
x j

 y0 j  y0 j1  2  y0 j
B :
2  y0 N
y1N
j: 0...N
y1j1  h 2  y1j  y1j1  2  y1j
y j : y0 j  B  y1j
Получим:
1
sin(t) 
1

y N  2 yt(t) :  e  t  cos(t) 
 2   e 4  cos(4) 
2
sin(4) 
2





Проверим граничные условия: yt(0)  1 yt(4)  2
Анимация графика (рис. 13, по параметру h, 40 кадров) подтверждает приведенное в [2, с. 549] высказывание о произвольности выбора y 01 и y11. Рис. 14 иллюстрирует возможность задания
вторичной оси (возможна анимация графика по параметру h,
40 кадров).
25
2
0
y
yt ( t)
2
4
0
1
2
3
4
xt
Рис. 13
5
5
2.5
yt ( t)
0
0 y
2.5
5
0
2.5
5
7.5
5
10
tx
Рис. 14

При граничных условиях yt (0)  1, yt     1 данное уравне2
ние
решения
не
имеет.
В
этом
случае
y ( x) 
1
1  x
 e x  cos( x)  B  sin( x), y( x) 
e  sin( x)  B  cos( x) и
2
2


   1  
y(0)  1 , y     e 2  1  0.

 2  2 


26



Упражнение 2.1
Решить численно методом стрельбы дифференциальное уравнение y" y = e x с граничными условиями y(0)  1 y(4)  2 . Заменить граничные условия другими и получить решение. Сравнить его с точным решением, построить график, снять
анимационный клип.
Решение. Точное решение этого уравнения:
1
sin(t)  1 4

yt(t) :  (e t  cos(t)) 
 2   (e  cos(4)) 
2
sin(4) 
2

Оно удовлетворяет граничным условиям yt(0)  1 yt(4)  2
Приведем алгоритм решения этого уравнения по методу
стрельбы.
Дано: f (x) : e x N : 40  FRAME j: 0..N
Перейдем к дискретным переменным: x j : j  h x 0 : a x N : b
Граничные условия: y00 : 1 y10 : 0
Здесь и далее введены обозначения: y 0 j — дискретные значения частного решения неоднородного дифференциального уравнения; y1 j — дискретные значения общего решения однородного
дифференциального уравнения.
Произвольно задаем:
m : 0.1 
1
 FRAME
20
y01 : y00 
h
m
y11 : h, y11  0
Алгоритм: j: 1..N  1
Запишем рекуррентные формулы вычисления частного и общего решений соответствующего неоднородного и однородного дифференциальных уравнений, представленных в разностном виде:
y0 j1  2  y0 j  y0 j1
2
 y0 j = e
X j
y1j1  2  y1j  y1j1
h
Выразим из этих уравнений:
y0 j1 : h 2  (e
x j
h2
 y1j = 0
 y0 j )  y0 j1  2  y0 j
y1j1 : h  y1j  y1j1  2  y1j
2
27
2  y0 N
B  6.446
y1N
j: 0..N y j : y0 j  B  y1j y N  2
B :
Решение дифференциального уравнения представлено на рис. 15
(возможна анимация графика только по параметру h, 100 кадров).
2
0
y
yt ( t)
2
4
0
1
2
x t
3
4
Рис. 15
Произвольно задаем:
m : 0.5 
1
 FRAME
50
y01 : y00 
h
m
y11 : h y11  0
Зададим параметры, необходимые для построения графика
(рис. 16).
ba
N : 0 j: 1..N  1 a : 0 b : 4 h :
h  0.1
N
y00 : 1 y10 : 0 x j : j  h x 0 : a x N : b
y0 j1 : h 2  (e
x j
 y0 j )  y0 j1  2  y0 j
y1j1 : h 2  y1j  y1j1  2  y1j B :
2  y0 N
y1N
j: 0..N y j : y0 j  B  y1j y N  2
1
sin(t)  1 4

yt(t) :  (e t  cos(t)) 
  2   (e  cos(4)) 
2
sin(4) 
2

yt(0)  1 yt(4)  2
28
Рис. 16
Полученный график (см. рис. 16, возможна анимация графика,
100 кадров) не отличается от точного решения!
Упражнение 2.2
Решить численно методом стрельбы дифференциальное уравнение y '' y  e x с граничными условиями: y(0)  1, y(1)  2.
Сравнить его решение с точным, построить график, снять анимационный клип.
2.2. Метод прогонки
Это один из вариантов метода Гаусса решения системы линейных алгебраических уравнений с сильно разреженной матрицей
[2, с. 552], имеющей вид:
Zi,k 1 = Ai,k  Z0,k  Bi,k  Z1,k ..  Dm 1,k  Zm 1,k  Ci,k i  0..m  1 k  0..K
Здесь m — порядок дифференциального уравнения; K — число
дискретных точек отсчета; i — порядок производной; Zi , k — дискретные значения искомого решения, записываемые в матрицу Z.
Иллюстрацию этого метода проведем на решении уравнения:
Z '' P( x)  Z  f ( x) с граничными условиями: Z (0)  Z 0 , Z ( xK )  Z K .
Перейдем к дискретным переменным: j: 0..K x j : j  h
x 0 : a x K : b
29
Запишем рекуррентные формулы вычисления решения исходного дифференциального уравнения, представленного в разностном виде:
Z j 1  2Z j  Z j 1
h2
 P( x j )Z j = f ( x j ).
Найдем из этого уравнения
Z j 1  h2 f j  h2 ( Pj Z j )  2Z j  Z j 1,
или
Zj 
Обозначим: Q j 
1
1
Z j 1 
( Z j 1  f j h 2 ).
2
2  h Pj
2  h 2 Pj
(4)
1
; 1  Q1 ( Z0  f1h2 ).
2
2  h Pj
Изменяя j  1...K и выражая всякий раз Z j через Z j 1 , дойдем, наконец, до уравнения
Z n  Cn Z n 1  n ,
(5)
где Cn и  n — известные коэффициенты.
Подставим (5) в (n  1)-e уравнение (4). Вновь разрешая его,
получим
Z n 1  Cn 1Z n  2  n 1 ,
1
(6)
; n 1  Cn 1 (n  f n 1h 2 ).
(2  h Pn 1  Cn )
Таким образом, коэффициенты уравнений (5), связывающих
последующие значения Z n и Z n 1 , можно определять из рекуррентных соотношений (6) при начальных условиях: C0  0,
0  Z 0 . Так как Z K известно, после нахождения всех коэффициентов Cn , n можно последовательно определять Z K 1 , ..., Z1 из
(5). Процесс вычисления коэффициентов Cn , n принято называть
прямым ходом прогонки, а процесс вычисления Z n — обратным
ходом прогонки.
где Cn 1 
30
2
Рассмотрим особенности метода прогонки на примере решения
уравнения y '' P( x) y  e x с граничными условиями y(0)  1,
y(4)  2 (следует заметить, что не для любых условий Неймана,
Дирихле – Неймана краевые задачи имеют решение).
Найдем точное решение этого уравнения (при P( x)  1 ):
1
sin(t)  1 4

yt(t) :  (e t  cos(t)) 
  2   (e  cos(4) 
2
sin(4) 
2

yt(0)  1 yt(4)  2
Введем обозначения: f (x) : e x
Дано: P(x) : 1 N : 5  FRAME j: 0..N a : 0 b : 4 h :
h  0.8
Перейдем
x j : j  h  x 0
к
дискретным
переменным:
x 0 : a
ba
N
x N : b
Граничные условия: Y0 : 1 YN : 2 C0 : 0 0 : Y0
Здесь и далее введены обозначения: Y j — дискретные значения решения дифференциального уравнения; Y 1 j — дискретные
значения первой производной решения дифференциального уравнения. Согласно формулам (5) и (6), будем иметь:
Pj : P(x j )
f j : f (x j )
for _ j  0..N  1
1
C : C j1 
2
2  h  Pj1  C j
C
P1  1
f N  0.018
xN  4
for_ j  0..N  1
 :  j1  C j1  ( j  f j1  h 2 )

После нахождения всех коэффициентов Cn , n можно последовательно определять YN 1 , ..., Y1 таким образом: i : 0..N  2
YN 1 i : C N 1 i  YN  i   N 1 i . Решение представляется графически
(рис. 17, возможна анимация графика по параметру h, 50 кадров).
31
4
Yj
2
0
yt ( t)
2
4
0
2
4
6
8
10
xj  t
Рис. 17
Задание. Решить численно дифференциальное уравнение (4)
для различных функций P(x): x 2 , x3 , sin( x) и др., а также функций
f ( x) : sin( x), cos( x) и др.
2.3. Метод, основанный на разложении решения в ряд Тейлора
Отличие этого метода от предыдущих состоит в том, что исходное дифференциальное уравнение не надо представлять в разностном виде. Искомое решение разбивают на ряд участков (число
их в пределе должно стремиться к бесконечности), на каждом из
которых оно представлено рядом Тейлора. Затем эти участки припасовывают (сшивают).
Алгоритм припасовывания описывается системой линейных
алгебраических уравнений, имеющей, как правило, сильно разреженную матрицу. Именно эта матрица определяет пересчет краевых условий для каждого из участков. Решение же самой системы
линейных алгебраических уравнений можно проводить методом
Гаусса или другими методами, являющимися частными случаями
последнего.
По-прежнему будем рассматривать систему линейных алгебраических уравнений с сильно разреженной матрицей, задающую
алгоритм пересчета краевых условий от предыдущего участка к
последующему в общем виде и представляемую формулой
Zi , k 1  Ai , k  Bi , k Z1, k ..  Di, k Z m 1, k  Ci , k , i  0...m 1, k  0...K 1, (7)
где m — порядок дифференциального уравнения; K — число участков припасовывания или дискретных значений переменных, вводи32
мое для численного решения задачи; i — порядок производной или
номер краевого условия; k — номер участка припасовывания.
Zi , k — дискретные значения искомого решения, записываемые в
матрицу Z. В частном случае, когда заданы все Zi ,0 (начальные
условия задачи Коши), формула (7) служит для их пересчета (алгоритм пересчета может быть разным) в конечные значения Z(x) на
участке припасовывания (или начальные значения последующего
участка припасовывания). Вместо начальных условий могут быть
заданы краевые условия. Отличие краевых условий от начальных
условий состоит в том, что какая-то часть начальных условий задана в начале, а другая — в конце интервала изменения переменных.
Описанный ниже алгоритм справедлив для дифференциального уравнения z  P( x)  z  f ( x) с заданными начальными условиями Z ( X 0 )  Z0,0 , Z ( X K )  Z0, K (или Z ( X K )  Z1, K ).
Для участка с номером k справедливы следующие соотношения:
Z 0, k ( x)  Z 0, k  Z1, k ( x  xk ) 

Z 2, k
2!
( x  xk )2 
xk  x  xk  h; значения Zi , k 
Z 3, k
3!
( x  xk )3 
Z 4, k
4!
( x  xk )4  ..., (8)
di
 Z0, k ( x)  вычислены в точке xk .
dxi 
Тогда
Z1, k ( x)  Z1, k  Z 2, k ( x  xk ) 
где Z1, k ( x) 
Z3, k
2!
( x  xk ) 2 
Z 4, k
3!
( x  xk )3  ..., (9)
d
 Z0, k ( x)  ;
dx 
Z 2, k  f k  Pk Z 0, k ; Z 3, k  f k  PkZ 0, k  Pk Z1, k ;
(10)
Z 4, k  f k  Pk Z0, k  2PkZ1, k  Pk ( f k  Pk Z0, k ).
(11)
Учитывая, что xk 1  xk  h, Zi , k ( xk  h)  Zi , k 1, и подставляя в
(8) и (9) выражения (10), (11), получаем
33
Z0, k 1  Ak Z0, k  Bk Z1, k  Ck ;
Z1, k 1  Dk Z0, k  Ek Z1, k  Gk , (12)
k  0...K 1;
Ak  1  Pk
Ck  f k
h3
h4
h2
h3
h4
h4
 Pk  Pk  ( Pk ) 2 ; Bk  h  Pk
 2 Pk ;
2!
3!
4!
4!
3!
4!
h2
h3
h4
h4
d
d
d
 f k  f k  f k Pk ; Dk  Ak ; Ek  Bk ; Gk  Ck .
dh
dh
dh
2!
3!
4!
4!
Здесь коэффициенты A, B, C, D, E, G известны, и их значения будут использованы ниже при решении конкретных задач. Будут использованы также формулы (12) как рекуррентные формулы при
нахождении решения краевой задачи. Они представляют собой
систему линейных алгебраических уравнений в виде четырехдиагональной матрицы.
Решать уравнения (12) можно методом Гаусса, последовательно исключая неизвестные переменные. В первой паре уравнений
(12) известным будет Z 0,0 . Следовательно, значения Z1,0 и Z1,1
можно будет выразить через Z1,0 . Этот процесс исключения можно продолжить для второй и последующих пар и всякий раз выражать Zi , k через Z0,1. Предположим, что нам удалось сделать это
для (k – 1)-й пары уравнений:
Zi , k 1  i , k 1Z1,0  i , k 1 , i  0...1.
(13)
Тогда, подставляя (13) в (12), получаем: Zi , k  i , k Z1,0  i , k . Сравнивая результат подстановки с последним выражением, получим
рекуррентные формулы вычисления коэффициентов ,  :
0, k  Ak 10, k 1  Bk 11, k 1; 0, k  Ak 10, k 1  Bk 11, k 1  Ck 1;
1, k  Dk 10, k 1  Ek 11, k 1; 1, k  Dk 10, k 1  Ek 11, k 1  Gk 1.
(13а)
Приведем пример решения уравнения z  z  e t с граничными

условиями z (0)  1, Z    2. Точное решение этого уравнения:
2
34

1
1
 
yt(t) :  (e t  cos(t))   (4  e 2 )  sin(t) yt(0)  1 y    2
2
2
2
j
d
Дано: x 0 : 0 P(x) : 1 F(x) : e  x f ( j, x) : j F(x)
dx
b  x0

KK : 1000 j: 0..2 h :
Зададим дискрет по x: b :
2
KK
j
d
h  1.5708 103 k : 0..KK x k : x 0  k  h p( j, x) : j P(x)
dx
a
:

1
Y0,0 : a Y0,KK : 2
Краевые условия:
Получим дискретные значения функций p ( j , xk ), f ( j , xk ), вычисленные в 3(KK + 1) точках.
Введем дискретные значения коэффициентов, вычисленные в
(KK + 1) точках:
AA(k, h) : 1  p(0, x k ) 
D(k, h) :
h2
h3
h4
h4
 p(1, x k )   p(2, x k ) 
 p 2 (0, x k ) 
2!
3!
4!
4!
d
AA(k, h)
dh
CC(k, h) :
: f (0, x k ) 
GG(k, h) :
h2
h3
h4
h4
 f (1, x k )   f (2, x k ) 
 f (0, x k )  p(0, x k ) 
2!
3!
4!
4!
d
CC(k, h)
dh
B(k, h) : h  p(0, x k ) 
h3
h4
 2  p(1, x k ) 
3!
4!
E(k, h) :
d
B(k, h)
dh
Обозначим (для единообразия): 0,0 : 0 1,0 : 1 0,0 : a 1,0 : 0
(таким образом, что Y0,0  0,0  Y1,0  0,0 Y1,0  1,0  Y1,0  1,0 ) и
вычислим:
35
 0,0  0
1,0  1
 : for k  0..KK-1
 0,k+1  AA(k, h)   0,k  B(k, h)  1,k
1,k+1  D(k, h)   0,k  E(k, h)  1,k

0,0  a
1,0  0
 : for k  0..KK-1
0,k+1  AA(k, h) 0,k  B(k, h) 1,k  CC(k, h)
1,k+1  D(k, h) 0,k  E(k, h) 1,k  GG(k, h)

Для визуальной проверки выведем на дисплей значения:
0,KK  0.6039 1,KK  0.6039 0,KK  1 1,KK  2.613 1010
Заметим, что коэффициенты  i , k , 0, k в данном примере не зависят от краевых (граничных) условий. Коэффициент 1, k зависит
от Y0,0 таким образом: при Y0,0  0 1, KK  0.3961; при Y0,0  1
1, KK  0.3961  1; при Y0,0  2 1, KK  0.3961  2 и т. д.
Напомним граничные условия: xKK  1,5708; Y0,0  1; Y0, KK  2.
Исходя из (13), если задано Y0, KK , вычисляем: Y1,0 :
Если же задано Y1, KK , то получаем: Y1,0 :
Вычислим
далее:
k : 0..KK
 0,KK
Y1,KK  1,KK
1,KK
Y0,k : 0,k  Y1,0  0,k
Y1,k : 1,k  Y1,0  1,k
Выведем на дисплей значение: Y1,KK  0.6039
36
Y0,KK  0,KK
Остальные компоненты представлены в виде разворачиваемой
в электронной версии пособия матрицы Y:
0
Y= 0
1
1
1.0022
1.3961
1
1.3961
2
1.0044
1.396
3
1.0066
1.396
4
1.0088
1.396
5
1.011
1.396
6
1.0132
1.396
Полученные приближенное и точное решения можно сравнить
на графике (рис. 18).
2
Y0  k
yt ( t) 0
2
0
1
2
3
4
xk  t
Рис. 18
Задание. Привести пример других краевых условий, когда
частного решения нет (в качестве примера можно взять граничные
условия y (0)  1, y( Pi / 2)  1).
37
3. РЕШЕНИЕ ЗАДАЧ ДИФФУЗИИ
МЕТОДОМ КОНЕЧНЫХ РАЗНОСТЕЙ
3.1. Постановка задачи
Рассмотрим стационарную задачу о нахождении распределения плотности потока нейтронов в одномерном реакторе, все характеристики которого зависят лишь от одной пространственной
переменной х, т. е. задачу об определении одномерного нейтронного поля [1].
Пусть среда реактора занимает слой a  x  b, где a, b — границы слоя. Будем считать, что плотность потока нейтронов зависит только от параметра х и удовлетворяет стационарному уравнению диффузии, представляющему собой частный случай
уравнения Больцмана:

или
d 
d

D( x)  ( x)   S ( x)  ( x)  Q( x),

dx 
dx

 div{D( x)  grad[( x)]}  S ( x)  ( x)  Q( x).
d 
d
 d
D( x)  ( x)   I ( x) — скорость изменения плотноdx 
dx
 dx
сти потока нейтронов, или утечка нейтронов, 1/(см3с);
( x)    n( x) плотность потока нейтронов (1012...1013 1/см2 с); 
— средняя скорость движения нейтронов, см/с; n( x) — плотность
Здесь
d


I ( x)    D( x)  ( x)  — плотность тока
dx


нейтронов, 1/(см2с); D( x) — коэффициент диффузии нейтронов
нейтронов, 1/см3;
38
(0,1...5 см); S ( x)    N ( x) — макроскопическое сечение поглощения нейтронов ядрами среды (10–2...10–1 см–1);  — эффективное
микроскопическое сечение поглощения нейтронов, см–2; N ( x) —
ядерная плотность среды, см–3; S ( x)  ( x) — скорость убыли
нейтронов за счет поглощения (1010...1012 см–3с–1); Q( x) — скорость возрастания плотности нейтронов от внешних источников.
Поставленная задача решается с краевыми условиями третьего
рода, которые записываются так:
 d

D(x)   (x)   0.5(x) = 0 при x  a (аналогично при x  b ).
 dx

Функции D( x), S ( x), Q( x) считаются кусочно-постоянными.
Для нахождения решения записанное выше уравнение Больцмана преобразуем к конечно-разностному виду (подробнее см. [1]):
b0  0  C01  d0 ;
ai i 1  bi i  Ci i 1  di , i  1...N  1;
aN N 1  bN  N  d N .
Эту систему конечно-разностных уравнений можно записать в
векторно-матричной форме
A    d.
(14)
3.2. Алгоритм решения задачи в одной из систем
компьютерной математики
Матрица А размером ( N  1)  ( N  1) с элементами Ai , j —
трехдиагональная, симметричная ( Ai , j  Aj ,i ) является квадратичной формой. Элементы Ai , j удовлетворяют условиям Ai , j  0 при
i  j  m, где m  1. Матрицы такого типа называются (2m  1) диагональными. Матрица сильно разреженная. Решение уравнения
(14) следует проводить методом прогонки (, d — ( N  1) компонентные векторы) [4].
39
Условия зачетной лабораторной работы по коэффициенту
диффузии D( x) записаны в матрицу М повариантно:
a  0.2
b4
n  0.2
M : for j 1..20
M 0,j  a  n  ( j  1)
M1, j  b  n  ( j  1)
M
Дано: N — количество точек отсчета ( N : 100 );  — количество зон в реакторе (  : 2 ); h — дискрет по переменной x
x N  x0 

 h :
 ; L — вектор координат зон реактора; VD — вектор,
N 

задающий коэффициент диффузии; x 0 : 0 x N : 1 i : 0..N
h  0.01 L 0 : x 0 L1 : 0.5 L : x N LT  (0,0.5,1)
xi  x0  i  h
x 50  0.5 VD: M 20 VD 0  4 VD1  0.2
Номер столбца матрицы М является одновременно номером
варианта.
Коэффициент диффузии D(t ) выразим через функцию Хевисайда (t ) :
n
D(t) : VD0  Ф(t  L0 )   (VDi  VDi 1 )  Ф(t  Li )  VD1  Ф(t  L )
i 1
Дадим графическую интерпретацию коэффициента диффузии
(рис. 19) и функции Хевисайда (рис. 20).
Переопределим индекс i: i : 0..N  1
Запишем эффективное значение коэффициента диффузии на
 1 xi1 1

отрезке  xi , xi 1  : IDi :   
dt 
 h x D(t) 
i


40
1
Ci :  IDi a i 1 : Ci
Зададим в каждой зоне вектор скорости возрастания плотности
нейтронов от внешних источников VQ  (VQ0 , VQ1 , ..., VQ1 ) :
VQ0 : 1010
VQ1 : 1012
VQT  (11010 , 11012 )
и вектор макроскопических сечений поглощения нейтронов ядрами среды VS  (VS0 ,VS1,..,VS1 ) :
VS0 : 0.03 
FRAME
FRAME
VST  (0.03,0.03)
VS1 : 0.03 
500
500
4
2
D ( t) 2
  tL1 1
0
0
0
0.5
1
t
0
1
t
Рис. 19
Рис. 20
2
Используя функцию Хевисайда, зададим:
1
Q(t) : VQ0  Ф(t  L0 )    (VQi  VQi 1 )  Ф(t  Li )   VQ1  Ф(t  L )
i 1
1
S(t) : VS0  Ф(t  L0 )   (VSi  VSi 1 )  Ф(t  Li )   VS1  Ф(t  L )
i 1
Построим графики этих функций (рис. 21, 22) и определим их
средние значения на отрезке  xi 1/ 2 , xi 1/ 2  : i : 1..N  1
x i  x i 1
x i  x i 1
2
2
1
1
IQi :   Q(t)dt ISi :   S(t)dt
h x i1  xi
h x i1  xi
2
2
41
Введем обозначения: bi : a i  Ci  h 2  ISj
h h2
b0 : ID0  
2 2
b N : ID N 1 
h2
d N :
2
 x 0  x1

2 2


S(t)dt 

h x

0


h2
d 0 :
2
di : h 2  IQi
 x 0  x1

2 2


Q(t)dt 

h x

0


xN

h h 2  2

 
S(t)dt

2 2  h x N1 x N


2


 2 xN



Q(t)dt
 h x N1 x N



2


1 10
12
S ( t) 0.02
Q ( t) 5 1011
0
0
0
0.5
1
t
Рис. 21
0
0.5
1
t
Рис. 22
Рассмотрим алгоритм решения задачи методом прогонки.
Численное решение представлено вектором   (0 , 1 , ...,  N )
и отыскивается из уравнения n   n n 1  n , n  0, N 1.
Рекуррентные формулы вычисления коэффициентов при пряC0
d
мом ходе: n  1..N  1 b N  0.205 a N  0.2 0 :
0 : 0
b0
b0
Cn
d  a n n 1
n :
n : n
a n  n 1  bn
a n   n 1  bn
Вычисляя таким образом коэффициенты  и , дойдем до шага
n  N  1 и получим уравнение
42
 N 1   N 1 N   N 1 .
(15)
Но у нас есть еще последнее уравнение, связывающее  N 1 и  N :
aN  N 1   N  N  d N .
(16)
Решая уравнения (15) и (16) совместно, найдем
N 
d N  aN N 1
.
aN  N 1  bN
Другой вариант: при n  N имеем  N   N  N 1   N . В этом выd  aN  N 1
ражении должно быть:  N  0 и  N   N , но  N  N
,
aN  N 1  bN
что и требовалось доказать. Таким образом:
N 
d N  aN N 1
.
aN  N 1  bN
Получаем первый результат (компонента вектора решений):
 N   N . Затем при обратном ходе (n  ( N  1...0)) вычисляем все
остальные компоненты вектора решений:
N  4.987 1011 n : N  1..0 n :  n  n 1  n
0  4.783  1011 5  4.813  1011 n : 0..N
Возможна анимация (по параметру VS): в 35 кадрах записан
диапазон изменения коэффициента диффузии 0,03…0,10.
Это позволяет в электронной версии методических указаний
получить решение ( x) уравнения диффузии в виде клипа, отснятого по параметру VS (рис. 23).
Результаты решения представлены ниже:
T =
0
1
2
3
4
5
0 4.783·1011 4.789·1011 4.795·1011 4.801 1011 4.807·1011 4.813·1011
43
7 10
11
6 10
11
n
6 10
11

0
50
n
100
5 10
11
4 10
11
0
0.5
1
x
Рис. 23
3.3. Векторно-матричная запись уравнения диффузии
и его решение
Запишем алгоритм формирования матрицы A:
for i  0..N
for j 1..N
Ai,j  0 if |i  j | >1
A :
Ai,j  bi if i = j
A
В программе все элементы матрицы формируются согласно
условиям задания. Если таковые отсутствуют, то элементам матрицы по умолчанию присваиваются нули.
Зададим параметры:
i : 0..N  1 Ai,i 1 : Ci Ai 1,i : Ci
A 2,0  0 b 2  8 A 2,2  8 C1  4 A 2,1  4 A1,2  4  : A1  d
Получим решение:
T =
44
0
1
2
3
4
5
0 4.783·1011 4.789·1011 4.795·1011 4.801 1011 4.807·1011 4.813·1011
Сравнив решения ( x) и ( x), видим полное совпадение результатов. Время на их получение методом прогонки и при непосредственном решении векторно-матричного уравнения приблизительно одинаковое, если используются достаточно мощные
персональные компьютеры. Это же можно сказать и о точности получаемых решений для данной задачи, имеющей сравнительно небольшой объем исходной информации, определяемой в основном
матрицей А. Однако при увеличении размерности матрицы А временные затраты на получение решения методом прогонки значительно меньше, чем при решении векторно-матричного уравнения.
Число арифметических операций, необходимых для получения решения в последнем случае (их число равно N 3 , где N  N — размерность матрицы А) намного превосходит их число при решении
методом прогонки. Это приводит к увеличению времени счета.
45
СПИСОК ЛИТЕРАТУРЫ
1. Богомолов Г.И., Красников П.В. Метод конечных разностей в решении задач диффузии: Метод. указания к лаб. работе по курсу
«Спецглавы высшей математики». М.: Изд-во МГТУ им. Н.Э. Баумана,
2001.
2. Бахвалов Н.С. Численные методы. М.: Наука, 1975.
3. Титов К.В. Решение одного класса нелинейных дифференциальных уравнений // Современные естественно-научные и гуманитарные
проблемы: Сб. тр. М.: Логос, 2005.
4. Титов К.В. Решение задач математической физики в среде
MathCAD. М.: Изд-во МГТУ им. Н.Э. Баумана, 2006.
46
ОГЛАВЛЕНИЕ
Предисловие ..................................................................................................... 3
1. Введение в численные методы решения обыкновенных
дифференциальных уравнений ................................................................... 4
1.1. Метод Эйлера ........................................................................................ 5
1.2. Метод Адамса ........................................................................................ 8
1.3. Метод разложения решения в ряд Тейлора ...................................... 11
1.4. Сравнительный анализ численных результатов, полученных
разными методами ............................................................................... 12
2. Численные методы решения краевых задач ............................................ 23
2.1. Метод стрельбы (пристрелки) ............................................................ 23
2.2. Метод прогонки ................................................................................... 29
2.3. Метод, основанный на разложении решения в ряд Тейлора ........... 32
3. Решение задач диффузии методом конечных разностей ....................... 38
3.1. Постановка задачи ............................................................................... 38
3.2. Алгоритм решения задачи в одной из систем компьютерной
математики ........................................................................................... 39
3.3. Векторно-матричная запись уравнения диффузии
и его решение ....................................................................................... 44
Список литературы ........................................................................................ 46
47
Учебное издание
Титов Константин Викторович
ЧИСЛЕННЫЕ МЕТОДЫ
РЕШЕНИЯ ЗАДАЧ ДИФФУЗИИ
Редактор Е.К. Кошелева
Корректор Г.С. Беляева
Компьютерная верстка С.А. Серебряковой
Подписано в печать 25.02.2009. Формат 6084/16.
Усл. печ. л. 2,79. Изд. № 39.
Тираж 500 экз. Заказ
.
Издательство МГТУ им. Н.Э. Баумана
Типография МГТУ им. Н.Э. Баумана
105005, Москва, 2-я Бауманская ул., 5
48
Download