Вы находитесь на странице: 1из 121

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное автономное образовательное учреждение высшего образования


«Южно-Уральский государственный университет
(национальный исследовательский университет)»

Высшая школа электроники и компьютерных наук


Кафедра «Системы автоматического управления»

ДОПУСТИТЬ К ЗАЩИТЕ
Заведующий кафедрой
/ В.И. Ширяев
«_____» ________________ 2018 г.

Численное моделирование переноса излучения конечно-разностным методом

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЕ
ЮУрГУ – 09.03.01.2018.111.00 ПЗ ВКР

Руководитель работы
Младший научный сотрудник
РФЯЦ-ВНИИТФ им. акад.
Е.И. Забабахина

/ Назаров К.С.
«____» _________________ 2018 г.

Автор работы
студент группы КЭ-483

/ Дембовский Д.В.
«____» _________________ 2018 г.

Нормоконтролер
К.т.н., доцент каф. САУ

/ Брагина А.А.
«____» _________________ 2018 г.

Челябинск 2018
АННОТАЦИЯ

Дембовский Д.В. Численное моделирование переноса


излучения конечно-разностным методом: ЮУрГУ (НИУ),
ВШ ЭКН; 2018, 122 с. 40 ил., библиогр. список – 20 наим.,
10 листов слайдов презентации ф. А4, 47 таблиц.

Разработана программа на языке С++ для численного моделирования пе-


реноса излучения с использованием конечно-разностных схем с применением па-
раллельного программирования. Проведён комплексный анализ разностных схем
и выявлены среди них наиболее эффективные при программной реализации.
Запрограммирован метод квазидиффузии. Проведён сравнительный ана-
лиз стандартного DSn метода и метода квазидиффузии. Сделаны выводы по целе-
сообразности использования метода квазидиффузии.

09.03.01.2018.111.00 ПЗ
Изм. Лист № докум. Подпись Дата
Разраб. Дембовский Д.В. Лит. Лист Листов
Провер. Назаров К.С. Численное моделирование Д 4 122
переноса излучения конеч-
ЮУрГУ
Н. Контр. Брагина А.А. но-разностным методом
Кафедра САУ
Утверд. Ширяев В.И.
ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ ............................................................................................................. 7

1 ИССЛЕДОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ .......................................... 9


1.1 Линейное одномерное уравнение переноса............................................ 9
1.1.1 Явная схема с левой разностью ...................................................... 9
1.1.2 Явная схема с правой разностью.................................................. 12
1.1.3 Схема Лакса – Вендроффа ............................................................ 13
1.1.4 Неявная схема с левой разностью ................................................ 16
1.1.5 Неявная схема с правой разностью .............................................. 18
1.2 Уравнение переноса излучения ............................................................. 20
1.3 Аналитическое решение для интенсивности........................................ 23
1.4 Аналитическое решение для плотности энергии излучения .............. 24
1.5 Поток энергии излучения ....................................................................... 27
1.6 Численное интегрирование .................................................................... 28
1.7 Метод квазидиффузии ............................................................................ 30
Вывод по разделу один……………………………………………………..29
2 АНАЛИЗ РАЗНОСТНЫХ СХЕМ................................................................ 34
2.1 Схемы с левой и правой разностями ..................................................... 35
2.2 Схема Лакса – Вендроффа...................................................................... 49
2.3 Неявная схема с левой разностью ......................................................... 57
2.4 TVD – ограничители ............................................................................... 67
2.4.1 Minmod ............................................................................................ 70
2.4.2 Superbee ........................................................................................... 73
2.4.3 VanAlbada ....................................................................................... 76
2.4.4 Сравнение разных видов TVD – ограничителей ........................ 79
2.5 Результаты выполненного анализа ........................................................ 82
2.6 Составление разностных аппроксимаций............................................. 83
Вывод по разделу два……………………………………………………….82

Лист
09.03.01.2018.111.00 ПЗ 5
Изм. Лист № докум. Подпись Дата
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ .............................................................. 84
3.1 Программа на основе DSn метода .......................................................... 84
3.1.1 Блок – схема алгоритма программы ............................................ 84
3.1.2 Перенос интенсивности излучения .............................................. 85
3.1.3 Перенос плотности излучения ...................................................... 86
3.2 Программа на основе метода квазидиффузии ...................................... 87
3.2.1 Блок – схема алгоритма программы ............................................ 87
3.2.2 Перенос плотности излучения ...................................................... 87
3.3 Сравнительный анализ метода квазидиффузии и DSn ........................ 90
Вывод по разделу три………………………………………………………89
ЗАКЛЮЧЕНИЕ ..................................................................................................... 91
БИБЛИОГРАФИЧЕСКИЙ СПИСОК ................................................................. 92

ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ А – Листинг вспомогательной программы .................... 94
ПРИЛОЖЕНИЕ Б – Листинг итоговой программы ................................ 111

Лист
09.03.01.2018.111.00 ПЗ 6
Изм. Лист № докум. Подпись Дата
ВВЕДЕНИЕ
Построение эффективных методов решения уравнения переноса является
актуальной задачей при математическом моделировании динамических задач
высокотемпературной радиационной газовой динамики для различных
приложений от взрыва сверхновой до термоядерного синтеза, в которых
важнейшую роль в перераспределении энергии в системе имеет перенос
собственного излучения.
Моделирование переноса излучения подразумевает определение таких его
характеристик как интенсивность, плотность, поток и д. р. Такая задача даже в
случае нерассеивающей среды, находящейся в условиях локального
термодинамического равновесия, когда уравнение переноса имеет простейший
вид, оказывается трудоёмкой, поскольку подразумевает нахождение значений
интенсивности излучения в каждой точке по пространственной переменной и по
угловой переменной. Найденное таким образом поле значений необходимо
проинтегрировать, дабы определить плотность или поток излучения.
Помимо большой размерности, трудности решения уравнения переноса
связаны с несколькими факторами:
 построение аппроксимации дифференциального оператора в левой
части уравнения связано с дилеммой точность – монотонность;
 интеграл рассеяния в правой части уравнения приводит к
итерационному процессу решения уравнения переноса;
 система уравнений, объединяющая уравнение переноса излучения с
описывающими другие физические процессы уравнениями, может
обладать сильной нелинейностью.
В данной работе был рассмотрен квазидиффузионный метод, который
относится к моделям нелокального усреднения, составляющих отдельную группу
методов интегрирования уравнения переноса по частоте электромагнитного
излучения, которые ориентированы на решения задач радиационной газовой
динамики, то есть в тех случаях, когда уравнение переноса излучения
интегрируется многократно совместно с другими уравнениями динамики

Лист
09.03.01.2018.111.00 ПЗ 7
Изм. Лист № докум. Подпись Дата
сплошной среды. Суть квазидиффузионного метода состоит во введении дробно-
линейных функционалов решения уравнения переноса, позволяющих существенно
повысить эффективность вычислительной процедуры.
Метод квазидиффузии заключается в постепенном понижении размерности
используемых уравнений за счёт усреднения уравнения переноса по угловым
переменным, в результате которого получается многогрупповая система уравнений
квазидиффузии. При внешнем усложнении подхода метод квазидиффузии
позволяет решить некоторые из вышеперечисленных проблем: система уравнений
квазидиффузии может эффективно объединиться с уравнениями, описывающими
другие физические процессы и, как следствие, учесть их взаимное влияние друг на
друга; метод квазидиффузии является нелинейным; метод квазидиффузии
обеспечивает быструю сходимость итераций по рассеиванию.
Однако, при моделировании необходимо использовать не только
эффективные математические методы, но и эффективные методы программной
реализации, поэтому одна из целей данной работы разработать улучшенную
версию, по сравнению с имеющейся на предприятии, программы моделирования
переноса излучения на основе численных методов (метод DSn). Также
преследовалась ещё одна цель: выполнить программную реализацию и сделать
выводы по разумности использования метода квазидиффузии.
Из вышесказанного можно выделить следующие задачи:
1. Выполнить анализ имеющихся разностных схем и определить
наиболее эффективную для программной реализации.
2. На основе выбранной разностной схемы написать программу
моделирования переноса излучения.
3. Разобрать метод квазидиффузии.
4. Добавить метод квазидиффузии в разработанную программу.
5. Сделать выводы о целесообразности использования метода
квазидиффузии.

Лист
09.03.01.2018.111.00 ПЗ 8
Изм. Лист № докум. Подпись Дата
1 ИССЛЕДОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 Линейное одномерное уравнение переноса
Простейшим представителем семейства гиперболических уравнений
является уравнение переноса [1].
u ( x, t ) u ( x, t )
a  0, a  const ,
t x
где u(x,t) – некоторая функция.
Класс гиперболических уравнений определяется наличием действительных
характеристик, число которых совпадает с числом неизвестных для системы
уравнений первого порядка.
Решение уравнения переноса заключается в сносе неизменного профиля по
характеристикам.
Важнейшее свойство рассматриваемого решения – сохранение начального
профиля: если начальное решение представляет собой, например, профиль буквы
М, то оно будет таким всегда.
Рассмотрим разностные схемы для уравнения переноса.
1.1.1 Явная схема с левой разностью
Рассмотрим на шаблоне (рисунок 1.1) явную схему с левой разностью,
называемую также «левый уголок».
ut  aux  0
Заменим производные по формулам численного
дифференцирования, получим
uij 1  uii u j  uij1
a i 0
t x
Рисунок 1.1 Следовательно,
at j
uij 1  uii  (ui  uij1 )  0,
x
at j
uij 1  uii  (ui  uij1 ),
x
 at  i at j
uij 1  1   ui  ui 1 ,
 x  x

Лист
09.03.01.2018.111.00 ПЗ 9
Изм. Лист № докум. Подпись Дата
uij 1  1  K  uii  Kuij1, (1.1)

at
где K  - число Куранта.
x
Число Куранта не может быть отрицательным (т.к. является отношением
двух расстояний), однако, содержит в себе скорость а, которая может быть и
a t
отрицательной величиной, поэтому примем K  , дабы избежать ошибок,
x
также необходимо учесть знак скорости, перепишем полученное выше уравнение
с учётом этих поправок
uij 1  1  sign(a)  K   uii  sign(a)  K  uij1.
Однако, при замене производных на разностные уравнения возникает ошибка
аппроксимации [2, 3]. Найдём погрешность аппроксимации на точном решении,
разложив функцию u в ряд Тейлора в окрестности узла (x, t)
1
u ( x, t  t )  u ( x, t )  t  ut ( x, t )  (t ) 2 utt ( x, t )  O((t )3 ),
2
1
u ( x  x, t )  u ( x, t )  x  u x ( x, t )  (x) 2 u xx ( x, t )  O((x)3 ).
2
Отсюда формулы аппроксимации
u ( x, t  t )  u ( x, t )
ut ( x, t )   O(t ),
t
u ( x, t )  u ( x  x, t )
u x ( x, t )   O(x).
x
Подставим полученные формулы аппроксимации в исходное уравнение
переноса
u ( x, t  t )  u ( x, t ) u ( x, t )  u ( x  x, t )
a  O(x)  O(t ).
t x
Видно, что ошибка аппроксимации равна O(t  x) , следовательно, данная
схема имеет первый порядок аппроксимации.
Исследуем устойчивость при помощи метода гармоник Фурье [2, 4], для
этого подставим в полученное выше разностное уравнение частное решение –
гармонику uxt   t ei xx

Лист
09.03.01.2018.111.00 ПЗ 10
Изм. Лист № докум. Подпись Дата
 t 1ei xx   t ei xx  t ei xx   t ei ( x 1) x
a  0.
x t
t i xx
Сократим на  e и выделим λ
 1 1  e ix
a  0,
t x
at at
 1 (1  e  ix ),  K,
x x
  1  K (1  e ix ),
  1  K  Ke ix ,
e ix  eix  eix e ix  eix
  1  K  2K , cos(x)  ,
2 2
  1  K  2 K cos(x)  Keix ,
  1  K  K cos(x)   K  cos(x)  eix  ,
eix  cos(x)  i  sin(x)  cos(x)  eix  i  sin(x),
  (1  K  K cos(x))  iK sin(x).
Согласно методу, чтобы система являлась устойчивой необходимо и
достаточно соблюдение следующего неравенства   1.
Вычислим модуль лямбда
  (1  K  K cos(x)) 2  ( K sin(x)) 2 
2

 (1  K ) 2  2 K (1  K )cos(x)  K 2 sin 2 (x) 


 x 
 1  4 K (1  K )sin 2  .
 2 
Отсюда видно, что при К меньших, либо равных единице неравенство будет
верным (т.к. в скобке будет положительное число (причём меньшее единицы), всё
правое слагаемое – положительно, следовательно, разность единицы и
положительного числа однозначно будет меньше единицы), а если К больше
единицы, то неравенство не выполняется (т.к. в скобке будет отрицательное число,
всё правое слагаемое – отрицательно, следовательно, разность единицы и
отрицательного числа однозначно будет больше единицы). Отсюда вывод: система
условно устойчива (устойчива при K  1 ).

Лист
09.03.01.2018.111.00 ПЗ 11
Изм. Лист № докум. Подпись Дата
Рассмотрим ситуацию, когда скорость а будет отрицательной, в этом случае
 x 
выражение для лямбда примет вид   1  4 K (1  K )sin 2 
2
.
 2 
Аналогично рассуждая, можно прийти к выводу, что в данном случае система
будет неустойчива при любом К.
1.1.2 Явная схема с правой разностью
Рассмотрим на шаблоне (рисунок 1.2) явную схему с правой разностью,
называемую также «правый уголок».
Эта схема очень похожа на предыдущую и имеет
тот же порядок аппроксимации, но является безусловно
(абсолютно) неустойчивой, однако, если сменить
направление скорости на противоположное, то данная
схема будет вести себя также как и с левой разностью.
Рисунок 1.2 Аналогично пункту 1.1.1 запишем уравнения для правой
разности.
ut  au x  0,
uij 1  uii uij1  uij
a  0,
t x
at j
uij 1  uii  (ui 1  uij )  0,
x
uij 1  uii  K (uij1  uij ),
uij 1  1  K  uii  Kuij1 , (1.2)
uij 1  1  sign(a ) K  uii  sign(a ) Kuij1.
В подтверждение сказанного выше, проведём анализ устойчивости данной
схемы по методу гармоник Фурье, аналогично пункту 1.1.1 данной работы.
 t 1ei xx   t ei xx  t ei ( x1) x   t ei xx
a  0,
x t
 1 eix  1
a  0,
t x
at at
 1 (1  eix ),  K,
x x

Лист
09.03.01.2018.111.00 ПЗ 12
Изм. Лист № докум. Подпись Дата
  1  K (1  eix ),
  1  K  Keix ,
eix  eix  eix eix  eix
  1  K  2K , cos(x)  ,
2 2
  1  K  2 K cos(x)  Ke ix ,
  1  K  K cos(x)   K  cos(x)  eix  ,
eix  cos(x)  i  sin(x)  cos(x)  eix  i  sin(x),
  (1  K  K cos(x))  iK sin(x),
  (1  K  K cos(x)) 2  ( K sin(x)) 2 
2

 (1  K ) 2  2 K (1  K )cos(x)  K 2 sin 2 (x) 


 x 
 1  4 K (1  K )sin 2  .
 2 
Можно заметить, что полученное выражение полностью совпадает с
выражением для левой схемы с отрицательной скоростью, как следствие, тот же
вывод – система абсолютно неустойчива.
Рассмотрим ситуацию, когда скорость а будет отрицательной, в этом случае
выражение для лямбда примет вид
 x 
  1  4 K (1  K )sin 2 
2
.
 2 
Здесь ситуация опять повторяется, данное выражение полностью совпадает с
выражением для левой схемы с положительной скоростью, следовательно, система
условно устойчива и условие устойчивости K  1 .

1.1.3 Схема Лакса – Вендроффа


Можно получить точность второго порядка по шагу и по времени, избежав
большой численной диффузии путём обобщения явного двухшагового метода [5],
основанного на разложении в ряд
Тейлора по времени. Как и для
обыкновенных дифференциальных
уравнений, двухшаговый метод Лакса
– Вендроффа обеспечивает
центрирование по времени путём
определения вспомогательных или
промежуточных значений функции
Лист
09.03.01.2018.111.00 ПЗ 13
Изм. Лист № докум. Подпись Дата
на полуцелых шагах. Метод Лакса используется на первом шаге или для
вспомогательных вычислений на каждом шаге по времени.
Вспомогательный шаг
j
1
1 t
u 2
 (uij  uij1 )  ( Fi j1  Fi j )
2x
1
i 2
2

или
1
j 1
u 1
2
 (uij  uij1 )  K (uij1  uij ).
i 2
2

Эти значения теперь используются для определения потоков в


промежуточных временных пространственных точках
1 1
j j
F 1
2
 F (u 1
2
).
i i
2 2

Наконец на основном шаге вычислений используется центрированная по


времени и пространству формула интегрирования (рисунок 1.3).
Основной шаг
j 1 t j
1
j
1
ui  ui  j
(F 1  F 12 )
2
x i  2 i
2

или
1 1
j j
j 1
ui  ui  K (u
j
1
2
u 1
2
).
i i
2 2

После каждого основного шага промежуточные значения величин


оказываются ненужными и в дальнейшем формировании решения участия не
принимают.
Объединим вспомогательный шаг и основной в единое уравнение
1
uij 1  uij  K ((1  K )uij1  (1  K )uij1  2 Kuij ). (1.3)
2
Или с учётом знака скорости
1
uij 1  uij  sign(a) K ((1  sign(a) K )uij1  (1  sign(a) K )uij1  sign(a)2 Kuij .
2
Найдём погрешность аппроксимации на точном решении, разложив
функцию u в ряд Тейлора в окрестности узла (x, t)
1 1
u ( x, t  t )  u ( x, t )  t  ut ( x, t )  (t ) 2 utt ( x, t )  (t )3 uttt ( x, t )  O(( t ) 4 ),
2 6
1 1
u ( x  x, t )  u ( x, t )  x  u x ( x, t )  (x) 2 u xx ( x, t )  ( x)3 u xxx ( x, t )  O(( x) 4 ).
2 6
Подставим пученные разложения в полученное выше уравнение

Лист
09.03.01.2018.111.00 ПЗ 14
Изм. Лист № докум. Подпись Дата
 
u ( x, t )  tut ( x, t )  O  (t ) 2   u ( x, t )  K (1  K ) u ( x, t )  xu x ( x, t )  O  (x) 2  
1
2

 
 K (1  K ) u ( x, t )  xu x ( x, t )  O  (x) 2   K 2u ( x, t )
1
2

tut ( x, t )  O  (t ) 2    Ku ( x, t )  K xu x ( x, t )  O  (x) 2   K 2u ( x, t ) 


1 1 1
2 2 2

K xu x ( x, t )  O  (x) 2   Ku ( x, t )  K xu x ( x, t )  O  (x) 2   K 2u ( x, t ) 


1 2 1 1 1

2 2 2 2

 K 2 xu x ( x, t )  O  (x) 2   K 2u ( x, t ) 
1
2
  K xu x ( x, t )  O  (x) 2   K 2u ( x, t )  K 2u ( x.t ) ,
tut ( x, t )  O  (t ) 2   K xu x ( x, t )  O  (x) 2  ,
tut ( x, t )  K xu x ( x, t )  O  (t ) 2  (x) 2 .
Зная, что точное решение получается решением данного уравнения
ut ( x, t )  aux ( x, t )  0,
вычтем из него получившееся расчётное

ut ( x, t )  au x ( x, t )  tut ( x, t )  K xu x ( x, t )  O  (t ) 2  (x) 2  , 
 t 
ut ( x, t )  au x ( x, t )   tut ( x, t )  a x u x ( x, t )  O  (t ) 2  (x) 2   ,
 x 
ut ( x, t )  au x ( x, t )  t  ut ( x, t )  au x ( x, t )   O  (t ) 2  ( x) 2 .
Однако, ut ( x, t )  aux ( x, t )  0 , получаем остаток O  (t )2  (x)2  .
Вывод: ошибка аппроксимации равна O  (t )2  (x)2  , следовательно,
данная схема имеет второй порядок аппроксимации.
Исследуем устойчивость при помощи метода гармоник Фурье [2, 4], для
этого подставим в полученное выше уравнение частное решение – гармонику
uxt   t ei xx и разделим на неё.

Лист
09.03.01.2018.111.00 ПЗ 15
Изм. Лист № докум. Подпись Дата
1
 t 1ei xx   t ei xx  K ((1  K ) t ei ( x 1) x  (1  K ) t ei ( x 1) x  2 K  t ei xx ,
2
1
  1  K ((1  K )eix  (1  K )e ix  2 K ),
2
1
  1  K (eix  Keix  e ix  Ke ix  2 K ),
2
1 eix  e ix eix  e ix
  1  K (2  2K  2 K ),
2 2 2
eix  eix eix  eix
i sin(x)  , cos(x)  ,
2 2
  1  K (i sin(x)  K cos(x)  K ),
  1  K (i sin(x)  K (cos(x)  1)),
  1  K 2 (cos(x)  1)  iK sin(x),
  (1  K 2 (cos(x)  1)) 2  K 2 sin 2 (x),
2

  1  2 K 2 (cos(x)  1)  K 4 (cos(x)  1) 2 ,
2

  1  K 2 (2(cos(x)  1)  K 2 (cos(x)  1) 2 ),
2

  1  K 2 (2(1  cos(x))  K 2 (1  cos(x)) 2 ),


2

  1  K 2 (1  K 2 )(1  cos(x) 2 .
2

Видно, что за счёт квадратов у числа Куранта, система останется устойчивой


при любом знаке скорости. Пользуясь простой логикой, можно определить, что
система будет устойчивой только при K  1 , т.е. система условно устойчива.
1.1.4 Неявная схема с левой разностью
Рассмотрим неявный аналог схемы с левой разностью.
Аналогично пункту 1.1.1 выведем уравнение вычисления будущего шага.
ut  au x  0,
uij 1  uij uij 1  uij11
a  0,
t x
at j 1
uij 1  uij  (ui  uij11 )  0,
x

uij 1  uij  Kuij 1  Kuij11  0,


uij  1  K  uij 1  Kuij11 , (1.4)
uij  1  sign(a) K  uij 1  sign(a) Kuij11.
Найдём погрешность аппроксимации на точном решении, разложив
функцию u в ряд Тейлора в окрестности узла (x, t)

Лист
09.03.01.2018.111.00 ПЗ 16
Изм. Лист № докум. Подпись Дата
1 1
u ( x, t  t )  u ( x, t )  t  ut ( x, t )  (t ) 2 utt ( x, t )  (t )3 uttt ( x, t )  O(( t ) 4 ),
2 6
1 1
u ( x  x, t )  u ( x, t )  x  u x ( x, t )  (x) 2 u xx ( x, t )  ( x)3 u xxx ( x, t )  O(( x) 4 ).
2 6
Подставим пученные разложения в полученное выше уравнение

u( x, t )  1  K  u( x, t  t )  Ku( x  x, t  t ),
u ( x, t )  u ( x, t )  tut ( x, t )  O  (t ) 2   Ku ( x, t )  K tut ( x, t )  O  (t ) 2  
 Ku ( x, t  t )  K xu x ( x, t  t )  O  (x) 2  ,

0  tut ( x, t )  O  (t ) 2   Ku ( x, t )  K tut ( x, t ) O  (t ) 2  

 Ku ( x, t )  K tut ( x, t ) O  (t ) 2   K xu x ( x, t )  K xtutx ( x, t ) 

O  (t ) 2   O  (x) 2  ,
tut ( x, t )  K xu x ( x, t )  K xtutx ( x, t )  O  (t ) 2   O  (x) 2  ,
ut ( x, t )  au x ( x, t )  tut ( x, t )  atu x ( x, t )  a ( t ) 2 utx ( x, t )  O  ( t ) 2  ( x ) 2  ,
ut ( x, t )  au x ( x, t )  t (ut ( x, t )  au x ( x, t ))  a ( t ) 2 utx ( x, t )  O  (t ) 2  (x) 2  ,
a (t ) 2 utx ( x, t )  O  (t ) 2  (x) 2 .
Вывод: т.к. не сократившаяся старшая производная является производной
первого порядка (причём остались производные, как по пространству, так и по
времени), то порядок аппроксимации здесь первый, а невязка равна O  t  x .
Проведём анализ устойчивости данной схемы по методу гармоник Фурье,
аналогично пункту 1.1.1 данной работы.
 t ei xx  1  K   t 1ei xx  K  t 1ei ( x 1) x ,
1  (1  K )  K  e ix ,
1   (1  K  Ke ix ),
 1  1  K (1  eix ), eix  cos(x)  i sin(x),
1
 , 1  cos(x)  2sin 2 (x / 2),
1  K (1  cos(x))  iK sin(x)

Лист
09.03.01.2018.111.00 ПЗ 17
Изм. Лист № докум. Подпись Дата
1  2 K sin 2 (x / 2)  iK sin(x)
 ,
1  2K sin (x / 2)    K sin(x) 
2 2 2

1  2K sin (x / 2)    K sin(x) 


2 2 2

 
2
,
1  2K sin (x / 2))    K sin(x)  
2 2
2 2

1
 
2
.
1  2K sin (x / 2)    K sin(x) 
2 2 2

Здесь отчётливо видно, что какое бы число Куранта мы не взяли, данное


выражение никогда не будет больше единицы, следовательно, данная схема
безусловно устойчива.
Запишем аналогичное выражение для отрицательной скорости
1
 
2
.
   
2
   
2 2
1 2 K sin ( x / 2) K sin( x )
Видно, что при числе Куранта, меньшего единицы, знаменатель становится
меньше числителя, и всё выражение становится больше единицы, следовательно,
система не устойчива, однако, при числе Куранта большего единицы уже
знаменатель будет больше числителя, следовательно, всё выражение меньше
единицы, т.е. система условно устойчива и условие устойчивости K  1 .
1.1.5 Неявная схема с правой разностью
Рассмотрим неявный аналог схемы с правой разностью.
Аналогично пункту 1.1.1 выведем уравнение
вычисления будущего шага.
ut  au x  0,
uij 1  uij uij11  uij 1
a  0,
t x
at j 1
uij 1  uij  (ui 1  uij 1 )  0,
x
j 1 j 1 j 1
ui  ui  Kui 1  Kui  0,
j

uij  1  K  uij 1  Kuij11 , (1.5)


uij  1  sign(a) K  uij 1  sign(a) Kuij11.
Найдём погрешность аппроксимации на точном решении, разложив
функцию u в ряд Тейлора в окрестности узла (x, t)

Лист
09.03.01.2018.111.00 ПЗ 18
Изм. Лист № докум. Подпись Дата
1 1
u ( x, t  t )  u ( x, t )  t  ut ( x, t )  (t ) 2 utt ( x, t )  (t )3 uttt ( x, t )  O(( t ) 4 ),
2 6
1 1
u ( x  x, t )  u ( x, t )  x  u x ( x, t )  (x) 2 u xx ( x, t )  ( x)3 u xxx ( x, t )  O(( x) 4 ).
2 6
Подставим пученные разложения в полученное выше уравнение
u ( x, t )  1  K  u ( x, t  t )  Ku ( x  x, t  t ),
u ( x, t )  u ( x, t )  tut ( x, t )  O  (t ) 2   Ku ( x, t )  K tut ( x, t )  O  (t ) 2  
 Ku ( x, t  t )  K xu x ( x, t  t )  O  (x) 2  ,

0  tut ( x, t )  O  (t ) 2   Ku ( x, t )  K tut ( x, t ) O  (t ) 2  

 Ku ( x, t )  K tut ( x, t ) O  (t ) 2   K xu x ( x, t )  K xtutx ( x, t ) 

O  (t ) 2   O  (x) 2  ,
tut ( x, t )  K xu x ( x, t )  K xtutx ( x, t )  O  (t ) 2   O  (x) 2  ,
ut ( x, t )  au x ( x, t )  tut ( x, t )  atu x ( x, t )  a (t ) 2 utx ( x, t )  O  ( t ) 2  ( x) 2  ,

ut ( x, t )  au x ( x, t )  t (ut ( x, t )  au x ( x, t ))  a (t ) 2 utx ( x, t )  O  (t ) 2  (x) 2  ,


a(t )2 utx ( x, t )  O  (t ) 2  (x) 2 .
Вывод: т.к. не сократившаяся старшая производная является производной
первого порядка (причём остались производные, как по пространству, так и по
времени), то порядок аппроксимации здесь первый, а невязка равна O  t  x .
Проведём анализ устойчивости данной схемы по методу гармоник Фурье,
аналогично пункту 1.1.1 данной работы.
 t ei xx  1  K   t 1ei xx  K  t 1ei ( x 1) x ,
1  (1  K )  K  eix ,
1   (1  K  Keix ),
 1  1  K (1  eix ), eix  cos(x)  i sin(x),
1
 ,
1  K (1  cos(x))  iK sin(x)
1  K (1  cos(x))  iK sin(x)
 ,
1  K (1  cos(x))    K sin(x) 
2 2

1  K (1  cos(x))    K sin(x)  ,
2 2

 
2

 1  K (1  cos( x )) 
2
  K sin(x )  
2 2

Лист
09.03.01.2018.111.00 ПЗ 19
Изм. Лист № докум. Подпись Дата
1
 
2
.
1  K (1  cos(x))    K sin(x) 
2 2

Видно, что при числе Куранта, меньшего единицы, знаменатель становится


меньше числителя, и всё выражение становится больше единицы, следовательно,
система не устойчива, однако, при числе Куранта большего единицы уже
знаменатель будет больше числителя, следовательно, всё выражение меньше
единицы, т.е. система условно устойчива и условие устойчивости K  1 .
Запишем аналогичное выражение для отрицательной скорости
1
 
2
.
1  K (1  cos(x))    K sin(x) 
2 2

Здесь отчётливо видно, что какое бы число Куранта мы не взяли, данное


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

1.2 Уравнение переноса излучения


Кинетические уравнения описывают широкий круг физических процессов и
явлений в природе. С точки зрения практики представляет интерес исследование
уравнений в частных производных, моделирующих распространение излучения в
веществе. Такие уравнения называются уравнения переноса излучения. Они
используются в газодинамике, физике плазмы, теории распространения звука, при
описании переноса нейтронов. Поэтому представляет интерес разработка
численных методов решения такого рода уравнений и изучение их свойств.
Рассмотрим точечный изотропный источник, находящийся в однородной
поглощающей среде. Рассматриваемый источник является источником света
(рисунок 1.6) [9].

Рисунок 1.6 – Распространение излучения


Излучение источника характеризуется частотой колебаний
электромагнитного поля ν или длиной волны 𝜆, связанной с частотой через
скорость света 𝑐: 𝜆 = 𝑐/ν. С квантовой точки зрения излучение рассматривается
Лист
09.03.01.2018.111.00 ПЗ 20
Изм. Лист № докум. Подпись Дата
как совокупность квантов света – фотонов, энергия которых связана с частотой
эквивалентного поля через постоянную Планка ℎ: 𝐸 = ℎν.
Поле излучения, заполняющего пространство, описывается распределением
интенсивности излучения по частотам, в пространстве и по направлениям переноса
лучистой энергии. Если говорить об излучении как о совокупности частиц –
фотонов, то поле можно охарактеризовать функцией распределения фотонов,
которая аналогична функции распределения любых частиц. Пусть
⃗⃗⃗, 𝑡)𝑑ν𝑑𝑟⃗𝑑Ω
𝑓(ν, 𝑟⃗, Ω ⃗⃗⃗ есть число фотонов в спектральном интервале от ν до ν + 𝑑ν,

находящихся в момент времени 𝑡 в элементе объёма 𝑑𝑟⃗ около точки 𝑟⃗ и имеющих


⃗⃗⃗ около единичного вектора Ω
направление движения в элементе телесного угла 𝑑Ω ⃗⃗⃗.
Функция 𝑓 называется функцией распределения [8].
Каждый квант обладает энергией ℎν и движется со скоростью 𝑐, поэтому
⃗⃗⃗, 𝑡)𝑑ν𝑑Ω
𝐼ν (𝑟⃗, Ω ⃗⃗⃗ = ℎν𝑐𝑓(ν, 𝑟⃗, Ω
⃗⃗⃗, 𝑡)𝑑ν𝑑Ω
⃗⃗⃗,

то есть интенсивность излучения квантов данной частоты (𝐼ν ) прямо


пропорциональна их функции распределения.
Составим кинетическое уравнение для функции распределения квантов
данной частоты. Поскольку эта функция с точностью до постоянного множителя
ℎν𝑐 совпадает с интенсивностью излучения, можно записывать уравнение прямо
для интенсивности. Уравнение, записанное в такой форме, называется уравнение
переноса излучения [8].
Будем рассматривать излучение частоты ν, распространяющееся внутри
⃗⃗⃗. Рассмотрим баланс
единичного телесного угла в определённом направлении Ω
излучения в элементарном цилиндре с площадью основания 𝑑𝜎 и высотой 𝑑𝑠,
⃗⃗⃗
расположенном в данной точке пространства таким образом, что направление Ω
совпадает с образующей цилиндра и перпендикулярно его основаниям (рисунок
1.7).
За время 𝑑𝑡 в левое основание втекает количество излучения, равное 𝐼ν 𝑑σ𝑑𝑡.
Из правого основания за тот же промежуток времени 𝑑𝑡 вытекает количество
излучения (𝐼ν + 𝑑𝐼ν )𝑑σ𝑑𝑡.

Лист
09.03.01.2018.111.00 ПЗ 21
Изм. Лист № докум. Подпись Дата
Рисунок 1.7 – Элементарный цилиндр
Интенсивность 𝐼ν есть функция координат и времени. Приращение
интенсивности пучка света при переходе от левого основания к правому
складывается из локального приращения за время прохождения светом пути 𝑑𝑠 и
из приращения при переходе от координаты 𝑠 к координате 𝑠 + 𝑑𝑠 в данный момент
времени:
𝜕𝐼ν 𝑑𝑠 𝜕𝐼ν
𝑑𝐼ν = + 𝑑𝑠.
𝜕𝑡 𝑐 𝜕𝑠

Вследствие поглощения света происходит изменение интенсивности в


рассматриваемом цилиндре. За время 𝑑𝑡 в нём поглощается количество излучения
ϰν 𝐼ν 𝑑𝜎𝑑𝑠𝑑𝑡 (где ϰν – коэффициент поглощения среды для квантов данной частоты).
Составим баланс, заменив производную вдоль направления 𝜕𝐼ν /𝜕𝑠
⃗⃗⃗∇
эквивалентным векторным выражением Ω ⃗⃗𝐼ν :

Поделим полученное выражение на произведение дифференциалов 𝑑𝜎𝑑𝑠𝑑𝑡,


получим
1 𝜕𝐼ν
⃗⃗⃗∇
+Ω ⃗⃗𝐼ν = −ϰν 𝐼ν . (1.6)
𝑐 𝜕𝑡

Лист
09.03.01.2018.111.00 ПЗ 22
Изм. Лист № докум. Подпись Дата
Раскрывая скалярное произведение в левой части (1.6) и учитывая, что
рассматриваемая задача – одномерная, получим

1 𝜕𝐼ν 𝜕𝐼ν
+ сos 𝜃 + ϰν 𝐼ν = 0,
𝑐 𝜕𝑡 𝜕𝑥
⃗⃗⃗.
где 𝜃 – угол между осью 𝑥 и телесным углом Ω
Индекс ν означает, что рассматривается пакет квантов данной частоты. Так
как мы рассматриваем пакет квантов некоторой фиксированной частоты,
впоследствии опустим этот индекс и окончательно получим уравнение переноса
излучения в поглощающей среде для одномерного случая в виде:
1 𝜕𝐼 𝜕𝐼
+𝜇 + ϰ𝐼 = 0, (1.7)
𝑐 𝜕𝑡 𝜕𝑥
где ϰ – коэффициент поглощения среды, 𝑐 – скорость света (положим с = 1),
𝜇 = сos 𝜃 характеризует направление распространения излучения.

1.3 Аналитическое решение для интенсивности


Рассмотрим стационарный случай (интенсивность не зависит от времени)
значит, первое слагаемое в (1.7) равно 0. Тогда уравнение переноса излучения
принимает вид
𝜕𝐼
𝜇 + ϰ𝐼 = 0. (1.8)
𝜕𝑥
Заменяя частную производную по 𝑥 дифференциалами, решаем полученное
дифференциальное уравнение методом разделения переменных:
𝑑𝐼
𝜇 + ϰ𝐼 = 0,
𝑑𝑥

𝜇𝑑𝐼 + ϰ𝐼𝑑𝑥 = 0,
𝜇𝑑𝐼 = −ϰ𝐼𝑑𝑥,
𝜇𝑑𝐼
= −ϰ𝑑𝑥,
𝐼
𝑑𝐼 ϰ
= − 𝑑𝑥.
𝐼 𝜇
Интегрируя с учётом ϰ(𝑥) = 𝑐𝑜𝑛𝑠𝑡, 𝐼(𝑥 = 0) = 𝐼0 , получим
Лист
09.03.01.2018.111.00 ПЗ 23
Изм. Лист № докум. Подпись Дата
ϰ
ln 𝐼 = − 𝑥 + 𝐶
𝜇
ϰ
− 𝑥
𝐼 = 𝐼0 𝑒 𝜇 . (1.9)

Выражение (1.9) представляет собой интенсивность излучения в зависимости


от направления распространения в пространстве. При 𝜇 = 1 оно принимает вид 𝐼 =
𝐼0 𝑒 −ϰ𝑥 . Это известное выражение, которое носит название закон Бугера [9] и
представляет собой зависимость интенсивности излучения от пространственной
координаты 𝑥 при распространении излучения параллельно оси 𝑥.
Полученное выражение (1.9) справедливо при определённом фиксированном
направлении распространения излучения. Для определения интенсивности
излучения источника во всех направлениях вводится интегральная величина –
плотность излучения.

1.4 Аналитическое решение для плотности энергии излучения


Поскольку каждый квант обладает энергией ℎν и движется со скоростью 𝑐,
величина
⃗⃗⃗, 𝑡)𝑑Ω
𝐼(𝑟⃗, Ω ⃗⃗⃗ = ℎν𝑐𝑓(ν, 𝑟⃗, Ω
⃗⃗⃗, 𝑡)𝑑Ω
⃗⃗⃗
есть количество лучистой энергии, протекающей в 1 сек через площадку в
1см², помещённую в точке 𝑟⃗ перпендикулярно к направлениям распространения
⃗⃗⃗ около вектора Ω
энергии, которые лежат в элементе телесного угла 𝑑Ω ⃗⃗⃗. Задание
функций 𝐼 или 𝑓 полностью определяет поле излучения. Количество лучистой
энергии, находящейся в 1см³ пространства в точке 𝑟⃗ в момент 𝑡, или плотность
излучения, определяется [8]:
1
⃗⃗⃗ = ∫ 𝐼𝑑Ω
𝑈(𝑟⃗, 𝑡) = ℎν ∫ 𝑓𝑑Ω ⃗⃗⃗, (1.10)
𝑐
где интегрирование проводится по телесному углу 4𝜋.
⃗⃗⃗ к его проекции на ось 𝑥.
Перейдём от векторно заданного телесного угла Ω
Тогда окончательно получим плотность излучения:

Лист
09.03.01.2018.111.00 ПЗ 24
Изм. Лист № докум. Подпись Дата
1 1 1
1 1 1
𝑈(𝑥) = ∫ 𝐼𝑑 (Ω сos 𝜃) = ∫ 𝐼𝑑 (сos 𝜃) = ∫ 𝐼𝑑𝜇 (1.11)
𝑐 𝑐 𝑐
−1 −1 −1

⃗⃗⃗ единичный телесный угол).


(так как Ω
Поскольку при постоянном коэффициенте поглощения среды
ϰ = 𝑐𝑜𝑛𝑠𝑡, интенсивность излучения, вообще говоря, является функцией двух
переменных
ϰ
− 𝑥
𝐼(𝑥, 𝜇) = 𝐼0 𝑒 𝜇 ,
получим следующую зависимость для плотности энергии излучения:
1 1 1
1 1 ϰ
− 𝑥 𝐼0 ϰ
− 𝑥
𝑈(𝑥) = ∫ 𝐼(𝑥, 𝜇)𝑑𝜇 = ∫ 𝐼0 𝑒 𝑑𝜇 = ∫ 𝑒 𝑑𝜇.
𝜇 𝜇 (1.12)
𝑐 𝑐 𝑐
−1 −1 −1

Учитывая, что в первой четверти координатной плоскости


ϰ
0 < сos 𝜃 < 1 и в то же время 𝑥 > 0, получим 𝑥 > 0. А во второй
𝜇
ϰ
−1 < сos 𝜃 < 0 и соответственно 𝑥 < 0, то 𝑥 > 0. Таким образом, функция
𝜇

интенсивности является чётной по 𝜇: 𝐼(𝑥, 𝜇) = 𝐼(𝑥, −𝜇).


Функция монотонно возрастает на отрезке 𝜇 ∈ [0,1].
Интеграл (2.7) принимает вид
1 1 1 1 1 0
𝑈(𝑥) = ∫−1 𝐼(𝑥, 𝜇)𝑑𝜇 = ∫0 𝐼(𝑥, 𝜇)𝑑𝜇 + ∫−1 𝐼(𝑥, 𝜇)𝑑𝜇 =
𝑐 𝑐 𝑐
1 1
2 2𝐼0 ϰ (1.13)
− 𝑥
= ∫ 𝐼(𝑥, 𝜇)𝑑𝜇 = ∫ 𝑒 𝜇 𝑑𝜇.
𝑐 𝑐
0 0

Пусть
ϰ
𝜇 = 0: 𝑡 = lim 𝑥 → +∞.
𝜇→0+ 𝜇

Пределы интегрирования в этом случае:


1) 𝜇 = 1: 𝑡 = ϰ𝑥
ϰ
2) 𝜇 = 0: 𝑡 = lim 𝑥 → +∞.
𝜇→0+ 𝜇

Возвращаясь к (1.13), получим:

Лист
09.03.01.2018.111.00 ПЗ 25
Изм. Лист № докум. Подпись Дата
ϰ𝑥 ϰ𝑥 ϰ𝑥
2𝐼0 −𝑡
ϰ 2𝐼0 𝑒 −𝑡 2ϰ𝑥𝐼0 𝑒 −𝑡
𝑈(𝑥) = ∫ 𝑒 (− 2 𝑥)𝑑𝑡 = − ∫ ϰ𝑥 2 𝑑𝑡 = − ∫ 2 𝑑𝑡 =
𝑐 𝑡 𝑐 𝑡 𝑐 𝑡
+∞ +∞ +∞
+∞
(1.14)
−𝑡
2ϰ𝑥𝐼0 𝑒
= ∫ 2 𝑑𝑡.
𝑐 𝑡
ϰ𝑥

Для вычисления интеграла (1.14) применим метод интегрирования по частям:


𝑏 𝑏

∫ 𝑢𝑑𝑣 = 𝑢𝑣|𝑏𝑎 − ∫ 𝑣𝑑𝑢


𝑎 𝑎

𝑢 = 𝑒 −𝑡 , 𝑑𝑢 = −𝑒 −𝑡 𝑑𝑡
1 1 1 1
𝑑𝑣 = 𝑑𝑡 = −𝑑 ( ) = 𝑑 (− ), 𝑣=− .
𝑡2 𝑡 𝑡 𝑡

Получим:
+∞ +∞
2ϰ𝑥𝐼0 𝑒 −𝑡 1
𝑈(𝑥) = ((− )| − ∫ (− ) (−𝑒 −𝑡 )𝑑𝑡) =
𝑐 𝑡 ϰ𝑥 𝑡
ϰ𝑥
+∞
2ϰ𝑥𝐼0 𝑒 −𝑡 𝑒 −ϰ𝑥 𝑒 −𝑡
= ( lim (− )+ − ∫ 𝑑𝑡).
𝑐 𝑡→+∞ 𝑡 ϰ𝑥 𝑡
ϰ𝑥
𝑒 −𝑡 𝑒 −∞ 1
Предел lim (− )=− =− = 0, тогда интеграл (1.14)
𝑡→+∞ 𝑡 +∞ +∞𝑒 +∞
+∞ +∞
2ϰ𝑥𝐼0 𝑒 −ϰ𝑥 𝑒 −𝑡 2𝐼0 −ϰ𝑥 2ϰ𝑥𝐼0 𝑒 −𝑡
𝑈(𝑥) = ( − ∫ 𝑑𝑡) = 𝑒 − ∫ 𝑑𝑡.
𝑐 ϰ𝑥 𝑡 𝑐 𝑐 𝑡
ϰ𝑥 ϰ𝑥

+∞ 𝑒 −𝑡
Несобственный интеграл вида ∫𝑥 𝑑𝑡, называется интегральная
𝑡

показательная функция, не берётся в элементарных функциях. Это спецфункция,


+∞ 𝑒 −𝑡
которая обозначается 𝐸1 (𝑥) [10]. То есть 𝐸1 (𝑥) = ∫𝑥 𝑑𝑡. Таким образом, в
𝑡
+∞ 𝑒 −𝑡
нашем случае ∫ϰ𝑥 𝑑𝑡 = 𝐸1 (ϰ𝑥).
𝑡

Окончательно получим выражение для плотности излучения:


2𝐼0 −ϰ𝑥 2ϰ𝑥𝐼0
𝑈(𝑥) = 𝑒 − 𝐸1 (ϰ𝑥). (1.15)
𝑐 𝑐

Лист
09.03.01.2018.111.00 ПЗ 26
Изм. Лист № докум. Подпись Дата
Поскольку при моделировании будут получатся профили значений
интенсивности запишем расчётную формулу для значений плотности, преобразуя
интеграл в (1.11) по методу трапеций:
1 
U    I    .
c  

1.5 Поток энергии излучения


Представим себе единичную площадку с направлением нормали 𝒏. Кванты
пересекают ее слева направо и справа налево. Количество лучистой энергии в
интервале 𝑑ν, протекающей в 1 сек через площадку слева направо, равно
2𝜋
ℎ𝜈𝑐 ∫0 сos 𝜃 𝑑Ω, где 𝜃 – угол между направлением движения квантов Ω и
нормалью 𝒏; интеграл берется по правой полусфере, основанием которой служит
площадка (рисунок 1.8).
Ω
𝜃

Рисунок 1.8 – К выводу формулы для потока энергии излучения


Интеграл по левой полусфере равен количеству энергии, протекающей
справа налево. Разность односторонних потоков слева направо и справа налево дает
полный поток энергии через указанную площадку. Поскольку сos 𝜃 имеет
различные знаки в правой и левой полусферах, поток энергии через площадку с
нормалью 𝒏 равен
4𝜋 4𝜋
𝑆𝜈 (𝑟, 𝑡, 𝒏) = ℎ𝜈𝑐 ∫0 𝑓 сos 𝜃 𝑑Ω = ∫0 𝐼𝜈 сos 𝜃 𝑑Ω, (1.16)

где интеграл берется по всему телесному углу.

Лист
09.03.01.2018.111.00 ПЗ 27
Изм. Лист № докум. Подпись Дата
Поток – векторная величина. Выписанное выражение (1.16) представляет
собой проекцию вектора потока на направление 𝒏. Сам же вектор потока равен:
𝑆𝜈 = ∫ 𝐼𝜈 Ω 𝑑Ω,
где Ω – единичный вектор направления движения квантов.
При изотропном распределении излучения, когда функция распределения f и
интенсивность 𝐼𝜈 не зависят от направления Ω, плотность излучения равна
4𝜋
𝑈𝜈 = 4𝜋ℎ𝜈𝑓 = 𝐼𝜈, ,
𝑐

т.к. 𝑆𝜈 = 0, то проекции на все направления также равны нулю (так как в каждом
направлении энергии переносится ровно столько, сколько и в противоположном).
Аналогично предыдущему пункту получим расчётную формулу для
значений потока:
1
 
S   I  d  , S    I      .
1   

1.6 Численное интегрирование


Основная идея большинства методов численного интегрирования состоит в
замене подынтегральной функции на более простую, интеграл от которой легко
вычисляется аналитически.
Представлены квадратурные формулы для численного нахождения
интегралов. Рассмотрена квадратурная формула интерполяционного типа –
формула прямоугольников.
Согласно определению, например, интеграла Римана,
𝑏 𝑁

𝐼 = ∫ 𝑓(𝑥)𝑑𝑥 = lim ∑ 𝑓(𝜉𝑖 ) ℎ𝑖 , 𝜆𝑅 = max ℎ𝑖 , ℎ𝑖 = 𝑥𝑖 − 𝑥𝑖−1 > 0.


𝜆𝑅 →0 1≤𝑖≤𝑁
𝑎 𝑖=1

При этом набор точек 𝑥0 , 𝑥1 , … , 𝑥𝑁 , лежащих на [a, b], называется


разбиением R этого отрезка, 𝜆𝑅 – диаметром разбиения, точки 𝜉𝑖 ∈ [𝑥𝑖 − 𝑥𝑖−1 ]
выбираются произвольно, как и точки разбиения, но 𝑥0 = 𝑎, 𝑥𝑁 = 𝑏.
Отсюда возникает идея приближенного вычисления интеграла I путем его
замены на

Лист
09.03.01.2018.111.00 ПЗ 28
Изм. Лист № докум. Подпись Дата
𝐾

𝐼ℎ = ∑ 𝑐𝑘 𝑓(𝑥̃𝑘 ).
𝑘=1

Приближенное равенство 𝐼 ≈ 𝐼ℎ называется квадратурной формулой, 𝐼ℎ -


квадратурной суммой, точки 𝑥̃𝑘 – узлами квадратурной суммы, 𝑐𝑘 – ее
коэффициентами, разность 𝜓ℎ = 𝐼 − 𝐼ℎ - погрешность квадратурной формулы.
Довольно часто выражение для 𝐼ℎ также называется квадратурной формулой.
При этом мы будем считать, что функция f известна в узлах сетки
̃ ℎ = {𝑥̃𝑖 : 𝑎 ≤ 𝑥̃1 < 𝑥̃2 < ⋯ < 𝑥̃𝑛 ≤ 𝑏}.
Ω
𝑏−𝑎.
Ограничимся пока равномерной сеткой ℎ𝑖 = ℎ =
𝑛

При этом сетка Ωр = {𝑥𝑖 : 𝑥𝑖 = 𝑎 + 𝑖ℎ, 𝑖 = 0,1, … , 𝑛}.


Для построения квадратурной формулы часто достаточно рассмотреть
частичный отрезок [𝑥𝑖−1 , 𝑥𝑖 ], так как
𝑏 𝑛 𝑥𝑖

𝐼 = ∫ 𝑓(𝑥)𝑑𝑥 = ∑ ∫ 𝑓(𝑥)𝑑𝑥.
𝑎 𝑖=1 𝑥𝑖−1

В случае квадратурной формулы центральных прямоугольников

𝐼ℎ,𝑖 = 𝑓 (𝑥𝑖−1⁄ ) ℎ, где 𝑥𝑖−1⁄ = 𝑥𝑖−1 + ℎ⁄2 = 1⁄2 (𝑥𝑖 + 𝑥𝑖−1 ).


2 2

При этом истинная площадь криволинейной трапеции отличается от


рассчитываемой площади прямоугольника (рисунок 1.9).

Рисунок 1.9 - Одномерный определённый интеграл как площадь


криволинейной трапеции под графиком

Лист
09.03.01.2018.111.00 ПЗ 29
Изм. Лист № докум. Подпись Дата
Погрешность квадратурной формулы составляет
𝑥𝑖

𝜓ℎ,𝑖 = ∫ 𝑓(𝑥)𝑑𝑥 − 𝐼ℎ,𝑖


𝑥𝑖−1

1.7 Метод квазидиффузии


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

Рассмотрим кинетическое уравнение в плоском одномерном случае (1.7):


1. Проинтегрируем уравнение (1.7) по 𝜇:

1 1 1 1
1 ∂I ∂I
∫ 𝑑μ + ∫ μ 𝑑μ + ∫ ϰI 𝑑μ = ∫ ϰ𝐼𝑅 𝑑μ
−1 с ∂t −1 ∂x −1 −1

1∂ 1 ∂ 1 1 1
∫ 𝐼𝑑𝜇 + ∫ 𝜇𝐼 𝑑μ + ϰ ∫ I 𝑑μ = ϰ ∫ 𝐼𝑅 𝑑μ
с ∂t −1 ∂x −1 −1 −1

Получим:
∂𝑈 ∂S
+ + ϰс𝑈 = ϰс𝑈𝑅 , (1.17)
∂t ∂x

где
1 1
𝑈 = ∫ 𝐼𝑑𝜇 − плотность энергии излучения, (1.18)
𝑐 −1

Лист
09.03.01.2018.111.00 ПЗ 30
Изм. Лист № докум. Подпись Дата
1
𝑆 = ∫ 𝜇𝐼𝑑𝜇 − поток энергии излучения,
−1

1 1
𝑈𝑅 = ∫ 𝐼𝑅 𝑑𝜇 − плотность равновестного излучения.
𝑐 −1

2. Помножим уравнение (2.17) на 𝜇 и проинтегрируем его:

1 1 1 1
𝜇 𝜕𝐼 2
𝜕𝐼
∫ 𝑑𝜇 + ∫ 𝜇 𝑑𝜇 + ∫ 𝜇𝜘𝐼 𝑑𝜇 = ∫ 𝜇𝜘𝐼𝑅 𝑑𝜇,
−1 𝑐 𝜕𝑡 −1 𝜕𝑥 −1 −1

1𝜕 1 𝜕 1 2 1 1
∫ 𝜇𝐼𝑑𝜇 + ∫ 𝜇 𝐼 𝑑𝜇 + 𝜘 ∫ 𝜇𝐼 𝑑𝜇 = 𝜘 ∫ 𝜇𝐼𝑅 𝑑𝜇
𝑐 𝜕𝑡 −1 𝜕𝑥 −1 −1 −1

1
Помножим второе слагаемое на ∫−1 I dμ и разделим полученное уравнение на
с:

1 1
1 𝜕 1 1 𝜕 ∫−1 𝜇2 𝐼 𝑑𝜇 ∗ ∫−1 𝐼 𝑑𝜇 𝜘 1 𝜘𝐼𝑅 1
∫ 𝜇𝐼𝑑𝜇 + 1 + ∫ 𝜇𝐼𝑑𝜇 = ∫ 𝜇𝑑𝜇
𝑐 2 𝜕𝑡 −1 𝑐 𝜕𝑥 ∫ 𝐼 𝑑𝜇 𝑐 −1 𝑐 −1
−1

1 1
𝜇2 1 1
Учитывая, что ∫ 𝜇𝑑𝜇 = | = − = 0, получим:
−1 2 −1 2 2

1 𝜕𝑆 𝜕(𝐷𝑈) 𝜘
+ + 𝑆 = 0, (1.19)
с2 𝜕𝑡 𝜕𝑥 с

где
1
∫−1 𝜇2 𝐼𝑑𝜇
𝐷= 1 − коэффициент квазидиффузии.
∫−1 𝐼 𝑑𝜇

Постановка граничных условий:

Лист
09.03.01.2018.111.00 ПЗ 31
Изм. Лист № докум. Подпись Дата
Запишем поток на левой границе (1.19) в виде суммы двух слагаемых [12]:
0 0
𝑆 = ∫ 𝜇𝐼𝑑𝜇 + ∫ 𝜇𝐼𝑑𝜇. (1.20)
−1 −1

Первое слагаемое в этой формуле полностью определяется заданной


граничной интенсивностью 𝑓𝑙 (𝜇, 𝜀, 𝑡). Второе слагаемое запишем в виде дробно –
линейного функционала. Тогда выражение (1.20) примет следующий вид
1 0
∫−1 𝜇𝐼𝑑𝜇
𝑆 = ∫ 𝜇𝑓𝑙 (𝜇, 𝜀, 𝑡)𝑑𝜇 + 1 .
0
∫−1 𝐼𝑑𝜇
Если ввести обозначения
0 1
∫−1 𝜇𝐼𝑑𝜇
𝛼0 = 1 ; 𝛽0 = ∫ 𝑓𝑙 (𝜇, 𝜀, 𝑡) 𝑑𝜇.
∫−1 𝐼 𝑑𝜇 0

то для квазидиффузионных уравнений граничной условие на левой границе


можно записать в следующем виде:

𝑆0 = 𝛼0 𝑈 + 𝛽0 (1.21)

Отметим, что коэффициент 𝛼 вычисляется аналогично коэффициенту D.


Коэффициент 𝛽 – заданная функция времени и энергии фотона.
На правой границе согласование граничных условий происходит аналогично:
1 0
∫0 𝜇𝐼𝑑𝜇
𝛼𝑁 = 1 ; 𝛽𝑁 = ∫ 𝑓𝑟 (𝜇, 𝜀, 𝑡)𝑑𝜇.
∫−1 𝐼 𝑑𝜇 −1

𝑆𝑁 = 𝛼𝑁 𝑈 + 𝛽𝑁
Если из каких – либо соображений точно известны коэффициенты D и 𝛼, то
система дифференциальных уравнений квазидиффузии полностью эквивалента
кинетическому уравнению (1.17). Теоретические коэффициент D меняется в
пределах от 0 до 1, для большинства практически важных задач – от 1/3 до 1.
Значение коэффициента 𝛼 находится в пределах от 0,5 до 1 на левой границе и от -
1 до -0,5 на правой границе.
Рассмотрим вопрос о численном нахождении коэффициента квазидиффузии
[12]. Очень важно, чтобы при вычислении коэффициентов квазидиффузии в случае

Лист
09.03.01.2018.111.00 ПЗ 32
Изм. Лист № докум. Подпись Дата
изотропного распределения излучения по угловой переменной их значение было
равно 1/3, а при сильно анизотропном распределении излучения, когда все фотоны
летят в направлении с µ = 1, D было равно 1 при любой сетке по угловой
переменной. Применение метода средних прямоугольников не удовлетворяет
вышесказанным требованиям в изотропном случае, но дает точно значение в случае
сильно анизотропии.
Интегралы будем вычислять по методу средних прямоугольников, а затем
перевычислять значение коэффициента квазидиффузии по следующей формуле:
𝐷 = (𝑎𝐷 ∗ + 𝑏)𝐷∗ .
Здесь 𝐷∗ - коэффициент квазидиффузии, рассчитанный по формуле
прямоугольников, и введены обозначения
〈𝜇2 〉 − 1⁄3 〈𝜇2 〉2 − 1⁄3
𝑎=− 2 ;𝑏 = − 2 ;
〈𝜇 〉(〈𝜇2 〉 − 1) 〈𝜇 〉(〈𝜇2 〉 − 1)
1
1
〈𝜇2 〉 = ∫ 𝜇2 𝑑𝜇.
2
−1

Интеграл в последней формуле также рассчитывается по методу


прямоугольников на заданной сетке по угловой переменной. Если сетка по угловой
переменной достаточно подробна, так что значение 〈𝜇2 〉 становится близко к 1/3,
то получаем значение 𝑎 = 0, 𝑏 = 1.
Таким образом, на подробной сетке по 𝜇 значение D будет близко к 〈𝜇2 〉, то
коэффициент квазидиффузии будет равен 1/3. Если 𝐷 ∗ = 1.0, то и D = 1.0 [12].
Аналогичные требования накладываются и на вычисление интегралов, т.е. в
случае изотропного распределения излучения 𝛼 = 0,5, а в случае сильно
анизотропии 𝛼 = 1. Для выполнения этих требований достаточно применения
интегрирования по методу прямоугольников.
В качестве итога по данному методу приведём конечную систему уравнений
квазидиффузии:

Лист
09.03.01.2018.111.00 ПЗ 33
Изм. Лист № докум. Подпись Дата
 U S
    cU  0;
 t x
 1 S   DU 
 2    S  0;
 c t x
 E 
   Ud  .
  t 0

где
1 1
1
U   Id   I d
2
1 
c 1 E
t 1 0
1
D 1
1   Id  d  .
S   I d   Id 
1
1

Вывод по разделу один


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

2 АНАЛИЗ РАЗНОСТНЫХ СХЕМ


Для проведения данного анализа была написана программа, способная
работать со всеми рассмотренными разностными схемами (явные и неявные схемы
с правой и левой разностью, схема Лакса-Вендроффа), также был реализован выбор
переносимого профиля: в виде буквы «П», буквы «М», экспоненты, «крыши»
(математические модели данных профилей приведены ниже). В качестве входных
данных программа принимает число Куранта, скорость, конечное время переноса,
начальную и конечную точки периодического отрезка, а также параметры профиля.
Было реализовано чтение из файла исходных данных и запись в файл результатов
решения. Программа считает невязки по нормам С, L1, L2, а также значения
функции TV(u) с выводом в отдельные файлы. Листинг данной программы
представлен в приложении А.

Лист
09.03.01.2018.111.00 ПЗ 34
Изм. Лист № докум. Подпись Дата
 y1 , x  [ X н ; l1 ),

Профиль «П» u ( x)   y2 , x  [l1; l2 ),
 y , x  [l ; X ].
 1 2 к

 y1 , x  [ X н ; l1 ),
 ( x  l )( y  y )
 1 12 2
 y2 , x  [l1; l12 ),
 l12  l1
Профиль «М» u ( x)  
 ( x  l12 )( y2  y12 )  y , x  [l ; l ),
 l2  l12
12 12 2


 y1 , x  [l2 ; X к ].

Экспонента u( x)  e ( xl12 )  y1.


2

 y1 , x  [ X н ; l1 ),
 ( x  l )( y  y )
 1 2 1
 y1 , x  [l1; l12 ),
 l12  l1
«Крыша» u ( x)  
 ( x  l12 )( y1  y2 )  y , x  [l ; l ),
 l2  l12
2 12 2


 y1 , x  [l2 ; X к ].

2.1 Схемы с левой и правой разностями


В ходе работы с данной программой были просчитаны различные ситуации
и, как следствие, доказано, что при отрицательной скорости схема с левой
разностью абсолютно неустойчива (уже после первого шага наблюдались «скачки»
(рисунок 2.1)). Однако, схема с правой разностью наоборот, с той же
отрицательной скоростью, становилась устойчивой (рисунок 2.2), а при
положительной «разбалтывалась» (рисунок 2.3). Также, при числе Куранта равном
единице, наблюдалось точное решение.
Все графики в данном отчете, для простоты восприятия, были построены в
прикладном пакете MATLAB R2012a по числовым данным, рассчитанным в
разработанной программе.
Также следует отметить следующий факт: левая (при отрицательной
скорости) и правая (при положительной скорости) неустойчивые схемы
«разбалтываются» зеркально друг другу, аналогично их устойчивые варианты (при
Лист
09.03.01.2018.111.00 ПЗ 35
Изм. Лист № докум. Подпись Дата
инверсированных скоростях) сдвигаются вправо для левой схемы и влево для
правой, т.е. тоже зеркально друг другу.
Рассмотрим более подробно числовые данные программы для различных
значений числа Куранта, различных профилей и различных схем. Однако, при
фиксированных значениях скорости (а = 1 для левой и а = -1 для правой), конечном
времени переноса (Т = 10), начальной (Хн = 0) и конечной (Хк = 10) точек
периодического отрезка, а также параметров профиля (таблицы 2.1 – 2.12).

Рисунок 2.1

Рисунок 2.2

Лист
09.03.01.2018.111.00 ПЗ 36
Изм. Лист № докум. Подпись Дата
Рисунок 2.3

Таблица 2.1 Профиль «П», число Куранта – 1, левая схема.


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1
у1 1 1 1 1 2 2 2 2 1 1
у2 1 1 1 1 1 2 2 2 2 1
у3 1 1 1 1 1 1 2 2 2 2
у4 2 1 1 1 1 1 1 2 2 2
у5 2 2 1 1 1 1 1 1 2 2
у6 2 2 2 1 1 1 1 1 1 2
у7 2 2 2 2 1 1 1 1 1 1
у8 1 2 2 2 2 1 1 1 1 1
у9 1 1 2 2 2 2 1 1 1 1
у10 1 1 1 2 2 2 2 1 1 1
Таблица 2.2 Профиль «П», число Куранта – 1, правая схема.
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1
у1 1 1 2 2 2 2 1 1 1 1
у2 1 2 2 2 2 1 1 1 1 1
у3 2 2 2 2 1 1 1 1 1 1
у4 2 2 2 1 1 1 1 1 1 2
у5 2 2 1 1 1 1 1 1 2 2

Лист
09.03.01.2018.111.00 ПЗ 37
Изм. Лист № докум. Подпись Дата
у6 2 1 1 1 1 1 1 2 2 2
у7 1 1 1 1 1 1 2 2 2 2
у8 1 1 1 1 1 2 2 2 2 1
у9 1 1 1 1 2 2 2 2 1 1
у10 1 1 1 2 2 2 2 1 1 1

Таблица 2.3 Профиль «М», число Куранта – 1, левая схема.


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1.875 1.625 1.625 1.875 1 1 1
у1 1 1 1 1 1.875 1.625 1.625 1.875 1 1
у2 1 1 1 1 1 1.875 1.625 1.625 1.875 1
у3 1 1 1 1 1 1 1.875 1.625 1.625 1.875
у4 1.875 1 1 1 1 1 1 1.875 1.625 1.625
у5 1.625 1.875 1 1 1 1 1 1 1.875 1.625
у6 1.625 1.625 1.875 1 1 1 1 1 1 1.875
у7 1.875 1.625 1.625 1.875 1 1 1 1 1 1
у8 1 1.875 1.625 1.625 1.875 1 1 1 1 1
у9 1 1 1.875 1.625 1.625 1.875 1 1 1 1
у10 1 1 1 1.875 1.625 1.625 1.875 1 1 1

Таблица 2.4 Профиль «М», число Куранта – 1, правая схема.


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1
у1 1 1 1,875 1,625 1,625 1,875 1 1 1 1
у2 1 1,875 1,625 1,625 1,875 1 1 1 1 1
у3 1,875 1,625 1,625 1,875 1 1 1 1 1 1
у4 1,625 1,625 1,875 1 1 1 1 1 1 1,875
у5 1,625 1,875 1 1 1 1 1 1 1,875 1,625
у6 1,875 1 1 1 1 1 1 1,875 1,625 1,625
у7 1 1 1 1 1 1 1,875 1,625 1,625 1,875
у8 1 1 1 1 1 1,875 1,625 1,625 1,875 1
у9 1 1 1 1 1,875 1,625 1,625 1,875 1 1
у10 1 1 1 1,875 1,625 1,625 1,875 1 1 1

Лист
09.03.01.2018.111.00 ПЗ 38
Изм. Лист № докум. Подпись Дата
Таблица 2.5 Профиль «П», число Куранта – 0.5, левая схема.
Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 2 2 2 2 1 1 1

у1 1 1 1 1,5 2 2 2 1,5 1 1

у2 1 1 1 1,25 1,75 2 2 1,75 1,25 1

у3 1 1 1 1,125 1,5 1,875 2 1,875 1,5 1,125

у4 1,0625 1 1 1,0625 1,3125 1,6875 1,9375 1,9375 1,6875 1,3125

у5 1,1875 1,03125 1 1,03125 1,1875 1,5 1,8125 1,9375 1,8125 1,5

у6 1,34375 1,10938 1,01563 1,01563 1,10938 1,34375 1,65625 1,875 1,875 1,65625

у7 1,5 1,22656 1,0625 1,01563 1,0625 1,22656 1,5 1,76563 1,875 1,76563

у8 1,63281 1,36328 1,14453 1,03906 1,03906 1,14453 1,36328 1,63281 1,82031 1,82031

у9 1,72656 1,49805 1,25391 1,0918 1,03906 1,0918 1,25391 1,49805 1,72656 1,82031

у10 1,77344 1,6123 1,37598 1,17285 1,06543 1,06543 1,17285 1,37598 1,6123 1,77344

у11 1,77344 1,69287 1,49414 1,27441 1,11914 1,06543 1,11914 1,27441 1,49414 1,69287

у12 1,73315 1,73315 1,59351 1,38428 1,19678 1,09229 1,09229 1,19678 1,38428 1,59351

у13 1,66333 1,73315 1,66333 1,48889 1,29053 1,14453 1,09229 1,14453 1,29053 1,48889

у14 1,57611 1,69824 1,69824 1,57611 1,38971 1,21753 1,11841 1,11841 1,21753 1,38971

у15 1,48291 1,63718 1,69824 1,63718 1,48291 1,30362 1,16797 1,11841 1,16797 1,30362

у16 1,39326 1,56004 1,66771 1,66771 1,56004 1,39326 1,23579 1,14319 1,14319 1,23579

у17 1,31453 1,47665 1,61388 1,66771 1,61388 1,47665 1,31453 1,18949 1,14319 1,18949

у18 1,25201 1,39559 1,54527 1,64079 1,64079 1,54527 1,39559 1,25201 1,16634 1,16634

у19 1,20918 1,3238 1,47043 1,59303 1,64079 1,59303 1,47043 1,3238 1,20918 1,16634

у20 1,18776 1,26649 1,39711 1,53173 1,61691 1,61691 1,53173 1,39711 1,26649 1,18776

Таблица 2.6 Профиль «П», число Куранта – 0.5, правая схема.


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 2 2 2 2 1 1 1

у1 1 1 1,5 2 2 2 1,5 1 1 1

у2 1 1,25 1,75 2 2 1,75 1,25 1 1 1

у3 1,125 1,5 1,875 2 1,875 1,5 1,125 1 1 1

у4 1,3125 1,6875 1,9375 1,9375 1,6875 1,3125 1,0625 1 1 1,0625

у5 1,5 1,8125 1,9375 1,8125 1,5 1,1875 1,03125 1 1,03125 1,1875

Лист
09.03.01.2018.111.00 ПЗ 39
Изм. Лист № докум. Подпись Дата
у6 1,65625 1,875 1,875 1,65625 1,34375 1,10938 1,01563 1,01563 1,10938 1,34375

у7 1,76563 1,875 1,76563 1,5 1,22656 1,0625 1,01563 1,0625 1,22656 1,5

у8 1,82031 1,82031 1,63281 1,36328 1,14453 1,03906 1,03906 1,14453 1,36328 1,63281

у9 1,82031 1,72656 1,49805 1,25391 1,0918 1,03906 1,0918 1,25391 1,49805 1,72656

у10 1,77344 1,6123 1,37598 1,17285 1,06543 1,06543 1,17285 1,37598 1,6123 1,77344

у11 1,69287 1,49414 1,27441 1,11914 1,06543 1,11914 1,27441 1,49414 1,69287 1,77344

у12 1,59351 1,38428 1,19678 1,09229 1,09229 1,19678 1,38428 1,59351 1,73315 1,73315

у13 1,48889 1,29053 1,14453 1,09229 1,14453 1,29053 1,48889 1,66333 1,73315 1,66333

у14 1,38971 1,21753 1,11841 1,11841 1,21753 1,38971 1,57611 1,69824 1,69824 1,57611

у15 1,30362 1,16797 1,11841 1,16797 1,30362 1,48291 1,63718 1,69824 1,63718 1,48291

у16 1,23579 1,14319 1,14319 1,23579 1,39326 1,56004 1,66771 1,66771 1,56004 1,39326

у17 1,18949 1,14319 1,18949 1,31453 1,47665 1,61388 1,66771 1,61388 1,47665 1,31453

у18 1,16634 1,16634 1,25201 1,39559 1,54527 1,64079 1,64079 1,54527 1,39559 1,25201

у19 1,16634 1,20918 1,3238 1,47043 1,59303 1,64079 1,59303 1,47043 1,3238 1,20918

у20 1,18776 1,26649 1,39711 1,53173 1,61691 1,61691 1,53173 1,39711 1,26649 1,18776

Таблица 2.7 Профиль «М», число Куранта – 0.5, левая схема.


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1 1 1 1,4375 1,75 1,625 1,75 1,4375 1 1

у2 1 1 1 1,21875 1,59375 1,6875 1,6875 1,59375 1,21875 1

у3 1 1 1 1,10938 1,40625 1,64063 1,6875 1,64063 1,40625 1,10938

у4 1,05469 1 1 1,05469 1,25781 1,52344 1,66406 1,66406 1,52344 1,25781

у5 1,15625 1,02734 1 1,02734 1,15625 1,39063 1,59375 1,66406 1,59375 1,39063

у6 1,27344 1,0918 1,01367 1,01367 1,0918 1,27344 1,49219 1,62891 1,62891 1,49219

у7 1,38281 1,18262 1,05273 1,01367 1,05273 1,18262 1,38281 1,56055 1,62891 1,56055

у8 1,47168 1,28271 1,11768 1,0332 1,0332 1,11768 1,28271 1,47168 1,59473 1,59473

у9 1,5332 1,3772 1,2002 1,07544 1,0332 1,07544 1,2002 1,3772 1,5332 1,59473

у10 1,56396 1,4552 1,2887 1,13782 1,05432 1,05432 1,13782 1,2887 1,4552 1,56396

у11 1,56396 1,50958 1,37195 1,21326 1,09607 1,05432 1,09607 1,21326 1,37195 1,50958

у12 1,53677 1,53677 1,44077 1,2926 1,15466 1,0752 1,0752 1,15466 1,2926 1,44077

у13 1,48877 1,53677 1,48877 1,36668 1,22363 1,11493 1,0752 1,11493 1,22363 1,36668

у14 1,42773 1,51277 1,51277 1,42773 1,29516 1,16928 1,09506 1,09506 1,16928 1,29516

Лист
09.03.01.2018.111.00 ПЗ 40
Изм. Лист № докум. Подпись Дата
у15 1,36144 1,47025 1,51277 1,47025 1,36144 1,23222 1,13217 1,09506 1,13217 1,23222

у16 1,29683 1,41585 1,49151 1,49151 1,41585 1,29683 1,1822 1,11362 1,11362 1,1822

у17 1,23951 1,35634 1,45368 1,49151 1,45368 1,35634 1,23951 1,14791 1,11362 1,14791

у18 1,19371 1,29793 1,40501 1,47259 1,47259 1,40501 1,29793 1,19371 1,13076 1,13076

у19 1,16224 1,24582 1,35147 1,4388 1,47259 1,4388 1,35147 1,24582 1,16224 1,13076

у20 1,1465 1,20403 1,29864 1,39513 1,4557 1,4557 1,39513 1,29864 1,20403 1,1465

Таблица 2.8 Профиль «М», число Куранта – 0.5, правая схема.


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1 1 1,4375 1,75 1,625 1,75 1,4375 1 1 1

у2 1 1,21875 1,59375 1,6875 1,6875 1,59375 1,21875 1 1 1

у3 1,10938 1,40625 1,64063 1,6875 1,64063 1,40625 1,10938 1 1 1

у4 1,25781 1,52344 1,66406 1,66406 1,52344 1,25781 1,05469 1 1 1,05469

у5 1,39063 1,59375 1,66406 1,59375 1,39063 1,15625 1,02734 1 1,02734 1,15625

у6 1,49219 1,62891 1,62891 1,49219 1,27344 1,0918 1,01367 1,01367 1,0918 1,27344

у7 1,56055 1,62891 1,56055 1,38281 1,18262 1,05273 1,01367 1,05273 1,18262 1,38281

у8 1,59473 1,59473 1,47168 1,28271 1,11768 1,0332 1,0332 1,11768 1,28271 1,47168

у9 1,59473 1,5332 1,3772 1,2002 1,07544 1,0332 1,07544 1,2002 1,3772 1,5332

у10 1,56396 1,4552 1,2887 1,13782 1,05432 1,05432 1,13782 1,2887 1,4552 1,56396

у11 1,50958 1,37195 1,21326 1,09607 1,05432 1,09607 1,21326 1,37195 1,50958 1,56396

у12 1,44077 1,2926 1,15466 1,0752 1,0752 1,15466 1,2926 1,44077 1,53677 1,53677

у13 1,36668 1,22363 1,11493 1,0752 1,11493 1,22363 1,36668 1,48877 1,53677 1,48877

у14 1,29516 1,16928 1,09506 1,09506 1,16928 1,29516 1,42773 1,51277 1,51277 1,42773

у15 1,23222 1,13217 1,09506 1,13217 1,23222 1,36144 1,47025 1,51277 1,47025 1,36144

у16 1,1822 1,11362 1,11362 1,1822 1,29683 1,41585 1,49151 1,49151 1,41585 1,29683

у17 1,14791 1,11362 1,14791 1,23951 1,35634 1,45368 1,49151 1,45368 1,35634 1,23951

у18 1,13076 1,13076 1,19371 1,29793 1,40501 1,47259 1,47259 1,40501 1,29793 1,19371

у19 1,13076 1,16224 1,24582 1,35147 1,4388 1,47259 1,4388 1,35147 1,24582 1,16224

у20 1,1465 1,20403 1,29864 1,39513 1,4557 1,4557 1,39513 1,29864 1,20403 1,1465

Таблица 2.9 Профиль «П», число Куранта – 0.3, левая схема.


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
Лист
09.03.01.2018.111.00 ПЗ 41
Изм. Лист № докум. Подпись Дата
у0 1 1 1 2 2 2 2 1 1 1

у1 1 1 1 1,7 2 2 2 1,3 1 1

у2 1 1 1 1,49 1,91 2 2 1,51 1,09 1

у3 1 1 1 1,343 1,784 1,973 2 1,657 1,216 1,027

у4 1,0081 1 1 1,2401 1,6517 1,9163 1,9919 1,7599 1,3483 1,0837

у5 1,03078 1,00243 1 1,16807 1,52822 1,83692 1,96922 1,8295 1,47178 1,16308

у6 1,07047 1,01093 1,00073 1,11765 1,42018 1,74431 1,92953 1,87142 1,5791 1,25569

у7 1,12604 1,0288 1,00379 1,08257 1,32942 1,64707 1,87396 1,88885 1,66679 1,35271

у8 1,19404 1,05797 1,01129 1,05894 1,25536 1,55177 1,8059 1,88438 1,73341 1,44694

у9 1,26991 1,09879 1,02529 1,04464 1,19644 1,46285 1,72966 1,86084 1,7787 1,53288

у10 1,3488 1,15012 1,04734 1,03884 1,1509 1,38293 1,64962 1,82148 1,80334 1,60663

у11 1,42615 1,20973 1,07818 1,04139 1,11728 1,31332 1,56961 1,76992 1,80879 1,66564

у12 1,49799 1,27465 1,11764 1,05243 1,09451 1,25451 1,49272 1,70983 1,79713 1,70858

у13 1,56117 1,34166 1,16475 1,07199 1,08189 1,20651 1,42126 1,6447 1,77094 1,73515

у14 1,61336 1,40751 1,21782 1,09982 1,07892 1,16912 1,35683 1,57767 1,73307 1,74588

у15 1,65312 1,46927 1,27473 1,13522 1,08519 1,14206 1,30052 1,51142 1,68645 1,74204

у16 1,6798 1,52442 1,33309 1,17707 1,1002 1,125 1,25298 1,44815 1,63394 1,72536

у17 1,69347 1,57103 1,39049 1,22388 1,12326 1,11756 1,21459 1,3896 1,5782 1,69793

у18 1,69481 1,60776 1,44465 1,27386 1,15344 1,11927 1,18548 1,33709 1,52162 1,66201

у19 1,68497 1,63388 1,49359 1,3251 1,18957 1,12952 1,16562 1,29161 1,46626 1,61989

у20 1,66545 1,6492 1,53567 1,37564 1,23023 1,14754 1,15479 1,25381 1,41387 1,57381

у21 1,63795 1,65408 1,56973 1,42365 1,27385 1,17234 1,15261 1,2241 1,36585 1,52582

у22 1,60431 1,64924 1,59504 1,46748 1,31879 1,2028 1,15853 1,20266 1,32333 1,47783

у23 1,56637 1,63576 1,6113 1,50574 1,3634 1,23759 1,17181 1,18942 1,28713 1,43148

у24 1,5259 1,61494 1,61864 1,53741 1,4061 1,27534 1,19155 1,18414 1,25781 1,38817

у25 1,48458 1,58823 1,61753 1,56178 1,44549 1,31457 1,21668 1,18636 1,23571 1,34907

у26 1,44393 1,55714 1,60874 1,5785 1,48038 1,35384 1,24605 1,19546 1,22091 1,31506

у27 1,40527 1,52317 1,59326 1,58757 1,50982 1,3918 1,27839 1,21063 1,21327 1,28681

у28 1,36973 1,4878 1,57223 1,58928 1,53314 1,42721 1,31241 1,23096 1,21248 1,26475

у29 1,33824 1,45238 1,5469 1,58417 1,54998 1,45899 1,34685 1,2554 1,21802 1,24907

у30 1,31149 1,41814 1,51855 1,57299 1,56024 1,48629 1,38049 1,28283 1,22924 1,23976

у31 1,28997 1,38614 1,48842 1,55666 1,56406 1,50847 1,41223 1,31213 1,24531 1,2366

у32 1,27396 1,35729 1,45774 1,53619 1,56184 1,52515 1,4411 1,34216 1,26536 1,23921

Лист
09.03.01.2018.111.00 ПЗ 42
Изм. Лист № докум. Подпись Дата
у33 1,26353 1,33229 1,4276 1,51265 1,55414 1,53616 1,46632 1,37184 1,2884 1,24706

у34 1,26189 1,32541 1,41807 1,50415 1,55 1,53796 1,4733 1,38129 1,29674 1,25119

Таблица 2.10 Профиль «П», число Куранта – 0.3, правая схема.


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 2 2 2 2 1 1 1

у1 1 1 1,3 2 2 2 1,7 1 1 1

у2 1 1,09 1,51 2 2 1,91 1,49 1 1 1

у3 1,027 1,216 1,657 2 1,973 1,784 1,343 1 1 1

у4 1,0837 1,3483 1,7599 1,9919 1,9163 1,6517 1,2401 1 1 1,0081

у5 1,16308 1,47178 1,8295 1,96922 1,83692 1,52822 1,16807 1 1,00243 1,03078

у6 1,25569 1,5791 1,87142 1,92953 1,74431 1,42018 1,11765 1,00073 1,01093 1,07047

у7 1,35271 1,66679 1,88885 1,87396 1,64707 1,32942 1,08257 1,00379 1,0288 1,12604

у8 1,44694 1,73341 1,88438 1,8059 1,55177 1,25536 1,05894 1,01129 1,05797 1,19404

у9 1,53288 1,7787 1,86084 1,72966 1,46285 1,19644 1,04464 1,02529 1,09879 1,26991

у10 1,60663 1,80334 1,82148 1,64962 1,38293 1,1509 1,03884 1,04734 1,15012 1,3488

у11 1,66564 1,80879 1,76992 1,56961 1,31332 1,11728 1,04139 1,07818 1,20973 1,42615

у12 1,70858 1,79713 1,70983 1,49272 1,25451 1,09451 1,05243 1,11764 1,27465 1,49799

у13 1,73515 1,77094 1,6447 1,42126 1,20651 1,08189 1,07199 1,16475 1,34166 1,56117

у14 1,74588 1,73307 1,57767 1,35683 1,16912 1,07892 1,09982 1,21782 1,40751 1,61336

у15 1,74204 1,68645 1,51142 1,30052 1,14206 1,08519 1,13522 1,27473 1,46927 1,65312

у16 1,72536 1,63394 1,44815 1,25298 1,125 1,1002 1,17707 1,33309 1,52442 1,6798

у17 1,69793 1,5782 1,3896 1,21459 1,11756 1,12326 1,22388 1,39049 1,57103 1,69347

у18 1,66201 1,52162 1,33709 1,18548 1,11927 1,15344 1,27386 1,44465 1,60776 1,69481

у19 1,61989 1,46626 1,29161 1,16562 1,12952 1,18957 1,3251 1,49359 1,63388 1,68497

у20 1,57381 1,41387 1,25381 1,15479 1,14754 1,23023 1,37564 1,53567 1,6492 1,66545

у21 1,52582 1,36585 1,2241 1,15261 1,17234 1,27385 1,42365 1,56973 1,65408 1,63795

у22 1,47783 1,32333 1,20266 1,15853 1,2028 1,31879 1,46748 1,59504 1,64924 1,60431

у23 1,43148 1,28713 1,18942 1,17181 1,23759 1,3634 1,50574 1,6113 1,63576 1,56637

у24 1,38817 1,25781 1,18414 1,19155 1,27534 1,4061 1,53741 1,61864 1,61494 1,5259

у25 1,34907 1,23571 1,18636 1,21668 1,31457 1,44549 1,56178 1,61753 1,58823 1,48458

у26 1,31506 1,22091 1,19546 1,24605 1,35384 1,48038 1,5785 1,60874 1,55714 1,44393

у27 1,28681 1,21327 1,21063 1,27839 1,3918 1,50982 1,58757 1,59326 1,52317 1,40527

Лист
09.03.01.2018.111.00 ПЗ 43
Изм. Лист № докум. Подпись Дата
у28 1,26475 1,21248 1,23096 1,31241 1,42721 1,53314 1,58928 1,57223 1,4878 1,36973

у29 1,24907 1,21802 1,2554 1,34685 1,45899 1,54998 1,58417 1,5469 1,45238 1,33824

у30 1,23976 1,22924 1,28283 1,38049 1,48629 1,56024 1,57299 1,51855 1,41814 1,31149

у31 1,2366 1,24531 1,31213 1,41223 1,50847 1,56406 1,55666 1,48842 1,38614 1,28997

у32 1,23921 1,26536 1,34216 1,4411 1,52515 1,56184 1,53619 1,45774 1,35729 1,27396

у33 1,24706 1,2884 1,37184 1,46632 1,53616 1,55414 1,51265 1,4276 1,33229 1,26353

у34 1,24706 1,28005 1,3624 1,45933 1,53436 1,55829 1,52116 1,43714 1,33917 1,26518

Таблица 2.11 Профиль «М», число Куранта – 0.3, левая схема.


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1 1 1 1,6125 1,7 1,625 1,8 1,2625 1 1

у2 1 1 1 1,42875 1,67375 1,6475 1,7475 1,42375 1,07875 1

у3 1 1 1 1,30013 1,60025 1,65538 1,7175 1,52088 1,18225 1,02363

у4 1,00709 1 1 1,21009 1,51021 1,63884 1,69886 1,57986 1,28384 1,07121

у5 1,02632 1,00213 1 1,14706 1,42018 1,60025 1,68086 1,61556 1,37264 1,135

у6 1,05893 1,00939 1,00064 1,10294 1,33824 1,54623 1,65667 1,63515 1,44552 1,20629

у7 1,10314 1,02425 1,00326 1,07225 1,26765 1,48383 1,62354 1,64161 1,50241 1,27806

у8 1,15561 1,04792 1,00956 1,05155 1,20903 1,41898 1,58163 1,63619 1,54417 1,34537

у9 1,21254 1,08022 1,02107 1,03896 1,16179 1,35599 1,53283 1,61982 1,57177 1,40501

у10 1,27028 1,11992 1,03881 1,03359 1,12494 1,29773 1,47978 1,59372 1,58619 1,45504

у11 1,32571 1,16503 1,06314 1,03516 1,09753 1,24589 1,42517 1,55954 1,58845 1,49438

у12 1,37631 1,21323 1,09371 1,04355 1,07882 1,20139 1,37138 1,51923 1,57978 1,5226

у13 1,4202 1,26215 1,12957 1,0586 1,06824 1,16462 1,32038 1,47488 1,56161 1,53975

у14 1,45606 1,30957 1,16934 1,07989 1,06535 1,1357 1,27365 1,42853 1,53559 1,54631

у15 1,48314 1,35352 1,21141 1,10673 1,06971 1,1146 1,23227 1,38207 1,50347 1,5431

у16 1,50113 1,3924 1,25404 1,13813 1,08082 1,10113 1,19697 1,33713 1,46705 1,53121

у17 1,51015 1,42502 1,29555 1,1729 1,09801 1,09504 1,16822 1,29508 1,42807 1,51196

у18 1,51069 1,45056 1,33439 1,2097 1,12048 1,09593 1,14626 1,25702 1,38817 1,48679

у19 1,50352 1,4686 1,36924 1,24711 1,14724 1,10329 1,13116 1,22379 1,34883 1,45721

у20 1,48963 1,47908 1,39905 1,28375 1,1772 1,11648 1,1228 1,196 1,31132 1,42469

у21 1,47015 1,48224 1,42306 1,31834 1,20917 1,1347 1,1209 1,17404 1,27672 1,39068

у22 1,44631 1,47861 1,44081 1,34975 1,24192 1,15704 1,12504 1,1581 1,24592 1,35649

Лист
09.03.01.2018.111.00 ПЗ 44
Изм. Лист № докум. Подпись Дата
у23 1,41936 1,46892 1,45215 1,37707 1,27427 1,1825 1,13464 1,14818 1,21957 1,32332

у24 1,39055 1,45406 1,45718 1,3996 1,30511 1,21003 1,149 1,14412 1,19816 1,2922

у25 1,36105 1,435 1,45625 1,41687 1,33346 1,23855 1,16731 1,14558 1,18195 1,26399

у26 1,33193 1,41282 1,44987 1,42868 1,35848 1,26702 1,18868 1,1521 1,17104 1,23937

у27 1,30416 1,38855 1,43876 1,43504 1,37954 1,29446 1,21218 1,16308 1,16536 1,21887

у28 1,27857 1,36323 1,42369 1,43616 1,39619 1,31999 1,23687 1,17781 1,16467 1,20282

у29 1,25585 1,33784 1,40556 1,43242 1,40818 1,34285 1,2618 1,19553 1,16861 1,19137

у30 1,23651 1,31324 1,38524 1,42436 1,41545 1,36245 1,28612 1,21541 1,17669 1,18455

у31 1,22092 1,29022 1,36364 1,41262 1,41812 1,37835 1,30902 1,23662 1,1883 1,18219

у32 1,2093 1,26943 1,34161 1,39793 1,41647 1,39028 1,32982 1,25834 1,2028 1,18402

у33 1,20172 1,25139 1,31996 1,38103 1,41091 1,39814 1,34796 1,27978 1,21946 1,18966

у34 1,20051 1,24642 1,3131 1,37493 1,40792 1,39942 1,35297 1,2866 1,22549 1,19264

Таблица 2.12 Профиль «М», число Куранта – 0.3, правая схема.


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1 1 1,2625 1,8 1,625 1,7 1,6125 1 1 1

у2 1 1,07875 1,42375 1,7475 1,6475 1,67375 1,42875 1 1 1

у3 1,02363 1,18225 1,52088 1,7175 1,65538 1,60025 1,30013 1 1 1

у4 1,07121 1,28384 1,57986 1,69886 1,63884 1,51021 1,21009 1 1 1,00709

у5 1,135 1,37264 1,61556 1,68086 1,60025 1,42018 1,14706 1 1,00213 1,02632

у6 1,20629 1,44552 1,63515 1,65667 1,54623 1,33824 1,10294 1,00064 1,00939 1,05893

у7 1,27806 1,50241 1,64161 1,62354 1,48383 1,26765 1,07225 1,00326 1,02425 1,10314

у8 1,34537 1,54417 1,63619 1,58163 1,41898 1,20903 1,05155 1,00956 1,04792 1,15561

у9 1,40501 1,57177 1,61982 1,53283 1,35599 1,16179 1,03896 1,02107 1,08022 1,21254

у10 1,45504 1,58619 1,59372 1,47978 1,29773 1,12494 1,03359 1,03881 1,11992 1,27028

у11 1,49438 1,58845 1,55954 1,42517 1,24589 1,09753 1,03516 1,06314 1,16503 1,32571

у12 1,5226 1,57978 1,51923 1,37138 1,20139 1,07882 1,04355 1,09371 1,21323 1,37631

у13 1,53975 1,56161 1,47488 1,32038 1,16462 1,06824 1,0586 1,12957 1,26215 1,4202

у14 1,54631 1,53559 1,42853 1,27365 1,1357 1,06535 1,07989 1,16934 1,30957 1,45606

у15 1,5431 1,50347 1,38207 1,23227 1,1146 1,06971 1,10673 1,21141 1,35352 1,48314

у16 1,53121 1,46705 1,33713 1,19697 1,10113 1,08082 1,13813 1,25404 1,3924 1,50113

у17 1,51196 1,42807 1,29508 1,16822 1,09504 1,09801 1,1729 1,29555 1,42502 1,51015

Лист
09.03.01.2018.111.00 ПЗ 45
Изм. Лист № докум. Подпись Дата
у18 1,48679 1,38817 1,25702 1,14626 1,09593 1,12048 1,2097 1,33439 1,45056 1,51069

у19 1,45721 1,34883 1,22379 1,13116 1,10329 1,14724 1,24711 1,36924 1,4686 1,50352

у20 1,42469 1,31132 1,196 1,1228 1,11648 1,1772 1,28375 1,39905 1,47908 1,48963

у21 1,39068 1,27672 1,17404 1,1209 1,1347 1,20917 1,31834 1,42306 1,48224 1,47015

у22 1,35649 1,24592 1,1581 1,12504 1,15704 1,24192 1,34975 1,44081 1,47861 1,44631

у23 1,32332 1,21957 1,14818 1,13464 1,1825 1,27427 1,37707 1,45215 1,46892 1,41936

у24 1,2922 1,19816 1,14412 1,149 1,21003 1,30511 1,3996 1,45718 1,45406 1,39055

у25 1,26399 1,18195 1,14558 1,16731 1,23855 1,33346 1,41687 1,45625 1,435 1,36105

у26 1,23937 1,17104 1,1521 1,18868 1,26702 1,35848 1,42868 1,44987 1,41282 1,33193

у27 1,21887 1,16536 1,16308 1,21218 1,29446 1,37954 1,43504 1,43876 1,38855 1,30416

у28 1,20282 1,16467 1,17781 1,23687 1,31999 1,39619 1,43616 1,42369 1,36323 1,27857

у29 1,19137 1,16861 1,19553 1,2618 1,34285 1,40818 1,43242 1,40556 1,33784 1,25585

у30 1,18455 1,17669 1,21541 1,28612 1,36245 1,41545 1,42436 1,38524 1,31324 1,23651

у31 1,18219 1,1883 1,23662 1,30902 1,37835 1,41812 1,41262 1,36364 1,29022 1,22092

у32 1,18402 1,2028 1,25834 1,32982 1,39028 1,41647 1,39793 1,34161 1,26943 1,2093

у33 1,18966 1,21946 1,27978 1,34796 1,39814 1,41091 1,38103 1,31996 1,25139 1,20172

у34 1,18966 1,21343 1,27296 1,34294 1,39686 1,4139 1,38714 1,32681 1,25636 1,20292

Рассмотрим неустойчивые случаи для обеих схем, составим четыре таблицы:


для левой схемы с двумя различными профилями и, аналогично, для правой, число
Куранта будет неизменно и равно единице (таблицы 2.13 – 2.16).

Таблица 2.13 Профиль «П», скорость а = -1, левая схема.


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1

у1 1 1 1 3 2 2 2 0 1 1

у2 1 1 1 5 1 2 2 -2 2 1

у3 1 1 1 9 -3 3 2 -6 6 0

у4 2 1 1 17 -15 9 1 -14 18 -6

у5 10 0 1 33 -47 33 -7 -29 50 -30

у6 50 -10 2 65 -127 113 -47 -51 129 -110

у7 210 -70 14 128 -319 353 -207 -55 309 -349

Лист
09.03.01.2018.111.00 ПЗ 46
Изм. Лист № докум. Подпись Дата
у8 769 -350 98 242 -766 1025 -767 97 673 -1007

у9 2545 -1469 546 386 -1774 2816 -2559 961 1249 -2687

у10 7777 -5483 2561 226 -3934 7406 -7934 4481 1537 -6623

Таблица 2.14 Профиль «П», скорость а = 1, правая схема.


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1

у1 1 1 0 2 2 2 3 1 1 1

у2 1 2 -2 2 2 1 5 1 1 1

у3 0 6 -6 2 3 -3 9 1 1 1

у4 -6 18 -14 1 9 -15 17 1 1 2

у5 -30 50 -29 -7 33 -47 33 1 0 10

у6 -110 129 -51 -47 113 -127 65 2 -10 50

у7 -349 309 -55 -207 353 -319 128 14 -70 210

у8 -1007 673 97 -767 1025 -766 242 98 -350 769

у9 -2687 1249 961 -2559 2816 -1774 386 546 -1469 2545

у10 -6623 1537 4481 -7934 7406 -3934 226 2561 -5483 7777

Таблица 2.15 Профиль «М», скорость а = -1, левая схема.


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1 1 1 2,75 1,375 1,625 2,125 0,125 1 1

у2 1 1 1 4,5 0 1,875 2,625 -1,875 1,875 1

у3 1 1 1 8 -4,5 3,75 3,375 -6,375 5,625 0,125


-
у4 1,875 1 1 15 -17 12 3
16,125
17,625 -5,375

у5 9,125 0,125 1 29 -49 41 -6 -35,25 51,375 -28,38

у6 46,625 -8,875 1,875 57 -127 131 -53 -64,5 138 -108,1


-
у7 201,375
64,375
12,625 112,125 -311 389 -237 -76 340,5 -354,2
- -
у8 757
330,12
89,625 211,625
734,12
1089 -863 85 757 -1049
- -
у9 2563
1417,2
509,375 333,625
1679,9
2912,125 -2815 1033 1429 -2855
- - -
у10 7981
5397,5
2436 157,875
3693,4
7504,125
8542,1
4881 1825 -7139

Лист
09.03.01.2018.111.00 ПЗ 47
Изм. Лист № докум. Подпись Дата
Таблица 2.16 Профиль «М», скорость а = 1, правая схема.
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1 1 0,125 2,125 1,625 1,375 2,75 1 1 1

у2 1 1,875 -1,875 2,625 1,875 0 4,5 1 1 1

у3 0,125 5,625 -6,375 3,375 3,75 -4,5 8 1 1 1


-
у4 -5,375 17,625
16,125
3 12 -17 15 1 1 1,875

у5 -28,38 51,375 -35,25 -6 41 -49 29 1 0,125 9,125

у6 -108,1 138 -64,5 -53 131 -127 57 1,875 -8,875 46,625

у7 -354,2 340,5 -76 -237 389 -311 112,125 12,625 -64,38 201,375
-
у8 -1049 757 85 -863 1089
734,12
211,625 89,625 -330,1 757
- -
у9 -2855 1429 1033 -2815 2912,125
1679,9
333,625 509,38
1417,2
2563
- - -
у10 -7139 1825 4881
8542,1
7504,125
3693,4
157,875 2436
5397,5
7981

Можно увидеть, что даже неустойчивые левая и правая схемы


«разбалтываются» зеркально друг другу.
Проанализируем значение числа Куранта на точность переноса, выведем на
график три профиля типа «П» при разных значениях числа Куранта за время 10
секунд (рисунок 2.4)

Рисунок 2.4
Лист
09.03.01.2018.111.00 ПЗ 48
Изм. Лист № докум. Подпись Дата
Из графика можно сделать вывод, что чем ближе число Куранта к единице,
тем точнее решение, причем при числе Куранта равном единице получаем точное
решение.

2.2 Схема Лакса – Вендроффа


Сравним результаты работы программы с данной схемой при положительной
и отрицательной скорости с неизменными остальными параметрами (значения
параметров возьмём такие же, как в пункте 2.1). Полученные данные запишем в
виде двух таблиц (таблицы 2.17 – 2.18).
Таблица 2.17 Профиль «П», число Куранта К = 1, схема Лакса – Вендроффа,
скорость а = 1.
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1
у1 1 1 1 1 2 2 2 2 1 1
у2 1 1 1 1 1 2 2 2 2 1
у3 1 1 1 1 1 1 2 2 2 2
у4 2 1 1 1 1 1 1 2 2 2
у5 2 2 1 1 1 1 1 1 2 2
у6 2 2 2 1 1 1 1 1 1 2
у7 2 2 2 2 1 1 1 1 1 1
у8 1 2 2 2 2 1 1 1 1 1
у9 1 1 2 2 2 2 1 1 1 1
у10 1 1 1 2 2 2 2 1 1 1

Таблица 2.18 Профиль «П», число Куранта К = 1, схема Лакса – Вендроффа,


скорость а = -1.
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1
у1 1 1 2 2 2 2 1 1 1 1
у2 1 2 2 2 2 1 1 1 1 1
у3 2 2 2 2 1 1 1 1 1 1
у4 2 2 2 1 1 1 1 1 1 2
у5 2 2 1 1 1 1 1 1 2 2
у6 2 1 1 1 1 1 1 2 2 2
у7 1 1 1 1 1 1 2 2 2 2

Лист
09.03.01.2018.111.00 ПЗ 49
Изм. Лист № докум. Подпись Дата
у8 1 1 1 1 1 2 2 2 2 1
у9 1 1 1 1 2 2 2 2 1 1
у10 1 1 1 2 2 2 2 1 1 1

Следует отметить, что в отличие от схем с левой или правой разностью схема
Лакса-Вендроффа устойчива при любой скорости, а от того какой у неё знак
зависит лишь направление переноса, поэтому для дальнейшего анализа будем
использовать только положительную скорость.
Рассмотрим более подробно числовые данные программы при различных
значениях числа Куранта и различных профилях, однако, при фиксированных
значениях скорости (а = 1), конечного времени переноса (Т = 10), начальной (Хн =
0) и конечной (Хк = 10) точек периодического отрезка, а также параметров профиля
(таблицы 2.17, 2.19 – 2.23).
Таблица 2.19 Профиль «М», число Куранта К = 1
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1
у1 1 1 1 1 1,875 1,625 1,625 1,875 1 1
у2 1 1 1 1 1 1,875 1,625 1,625 1,875 1
у3 1 1 1 1 1 1 1,875 1,625 1,625 1,875
у4 1,875 1 1 1 1 1 1 1,875 1,625 1,625
у5 1,625 1,875 1 1 1 1 1 1 1,875 1,625
у6 1,625 1,625 1,875 1 1 1 1 1 1 1,875
у7 1,875 1,625 1,625 1,875 1 1 1 1 1 1
у8 1 1,875 1,625 1,625 1,875 1 1 1 1 1
у9 1 1 1,875 1,625 1,625 1,875 1 1 1 1
у10 1 1 1 1,875 1,625 1,625 1,875 1 1 1

Таблица 2.20 Профиль «П», число Куранта К = 0.5


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 2 2 2 2 1 1 1

у1 1 1 0,875 1,625 2 2 2,125 1,375 1 1

у2 1 1,01563 0,82813 1,29688 1,85938 1,98438 2,17188 1,70313 1,14063 1

Лист
09.03.01.2018.111.00 ПЗ 50
Изм. Лист № докум. Подпись Дата
у3 0,99805 1,0332 0,83984 1,05078 1,63281 1,91406 2,16016 1,94922 1,36914 1,05273

у4 1,01416 1,04419 0,88599 0,89893 1,37939 1,77783 2,09424 2,10083 1,62622 1,17822

у5 1,07193 1,0527 0,9437 0,83401 1,14941 1,58887 1,97476 2,15768 1,8602 1,36673

у6 1,18488 1,07354 0,99828 0,83572 0,97621 1,37584 1,80719 2,12627 2,03344 1,58863

у7 1,35021 1,1247 1,04682 0,87912 0,87357 1,17206 1,60554 2,01822 2,12385 1,8059

у8 1,54928 1,219 1,09699 0,9427 0,83834 1,00594 1,3914 1,85026 2,12399 1,9821

у9 1,75287 1,35811 1,16203 1,01361 0,85653 0,89491 1,1895 1,64397 2,03908 2,08941

у10 1,92842 1,53065 1,25411 1,0889 0,91063 0,84369 1,02221 1,42416 1,88462 2,1126

у11 2,04721 1,71438 1,37847 1,17314 0,98585 0,84648 0,90503 1,21587 1,68345 2,05013

у12 2,08991 1,88118 1,5301 1,27355 1,07351 0,89143 0,84422 1,04086 1,46227 1,91299

у13 2,04965 2,00334 1,69382 1,39476 1,17128 0,96561 0,83734 0,91444 1,2479 1,72186

у14 1,93252 2,0594 1,84728 1,53484 1,28079 1,05877 0,8758 0,84384 1,06361 1,50315

у15 1,75565 2,03833 1,96587 1,68376 1,40382 1,1649 0,94841 0,82836 0,92625 1,28465

у16 1,54369 1,94138 2,02831 1,82455 1,53866 1,28155 1,0446 0,86114 0,84474 1,09138

у17 1,32436 1,78138 2,02118 1,93669 1,67801 1,40759 1,15639 0,93199 0,82006 0,94235

у18 1,12398 1,58002 1,94182 2,00071 1,80882 1,5404 1,27864 1,03013 0,84675 0,84874

у19 0,96376 1,36378 1,79878 2,00261 1,91433 1,67377 1,40786 1,14624 0,91527 0,81359

у20 0,85744 1,1594 1,61018 1,93721 1,97751 1,79722 1,54028 1,27322 1,01459 0,83295

Таблица 2.21 Профиль «М», число Куранта К = 0.5


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1 1 0,89063 1,57813 1,71875 1,59375 1,89063 1,32813 1 1

у2 1 1,01367 0,8457 1,30273 1,68164 1,60352 1,84961 1,58008 1,12305 1

у3 0,99829 1,02954 0,85156 1,08398 1,54932 1,60205 1,79102 1,73828 1,30981 1,04614

у4 1,01233 1,04007 0,88925 0,93866 1,36823 1,55865 1,72675 1,81161 1,50345 1,151

у5 1,06086 1,04852 0,93963 0,86644 1,18333 1,46623 1,6531 1,81831 1,66307 1,3005

у6 1,15227 1,06676 0,98961 0,85427 1,02914 1,33679 1,56238 1,77576 1,7666 1,46642

у7 1,28077 1,10847 1,03546 0,88317 0,92511 1,19322 1,45111 1,69689 1,80756 1,61826

у8 1,42886 1,18221 1,08188 0,93504 0,87586 1,06044 1,32368 1,59089 1,78972 1,73143

у9 1,57316 1,28724 1,13786 0,9975 0,87498 0,95832 1,19156 1,46583 1,72244 1,79111

у10 1,69063 1,41313 1,21142 1,06545 0,91051 0,89791 1,06981 1,3309 1,61763 1,79261

у11 1,76356 1,54241 1,30531 1,13955 0,97018 0,88115 0,97271 1,19715 1,48823 1,73974

у12 1,78227 1,65498 1,41494 1,22288 1,04483 0,90309 0,91032 1,0766 1,34764 1,64245

Лист
09.03.01.2018.111.00 ПЗ 51
Изм. Лист № докум. Подпись Дата
у13 1,74575 1,73272 1,52896 1,31716 1,12932 0,95534 0,88683 0,98037 1,20915 1,51442

у14 1,66063 1,76307 1,63185 1,42007 1,22151 1,02914 0,90083 0,91669 1,0852 1,37102

у15 1,53922 1,74106 1,70753 1,52431 1,32001 1,11732 0,94696 0,88968 0,98628 1,22764

у16 1,39715 1,66956 1,743 1,61855 1,42196 1,21462 1,01801 0,89908 0,91988 1,09818

у17 1,25098 1,55822 1,73102 1,68979 1,5216 1,31695 1,1066 0,94108 0,8898 0,99395

у18 1,11619 1,42141 1,67137 1,72628 1,61025 1,41999 1,20617 1,00956 0,89601 0,92276

у19 1,0055 1,27571 1,57077 1,72019 1,67754 1,51806 1,31093 1,09748 0,93525 0,88855

у20 0,92787 1,1375 1,44145 1,66949 1,71347 1,60376 1,41528 1,19781 1,00192 0,89144

Таблица 2.22 Профиль «П», число Куранта К = 0.3


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 2 2 2 2 1 1 1

у1 1 1 0,895 1,805 2 2 2,105 1,195 1 1

у2 1 1,01103 0,81993 1,60708 1,96198 1,98897 2,18008 1,39293 1,03803 1

у3 0,99884 1,02894 0,77454 1,41632 1,88993 1,96364 2,22546 1,58368 1,11122 1,00741

у4 0,99735 1,04978 0,75676 1,24144 1,78984 1,92178 2,24179 1,75844 1,21425 1,02856

у5 0,99793 1,07033 0,76301 1,08935 1,66905 1,86245 2,23014 1,90983 1,33987 1,06804

у6 1,004 1,08848 0,78867 0,96484 1,5357 1,78613 2,19208 2,03214 1,47955 1,12841

у7 1,01939 1,10349 0,82864 0,87055 1,39809 1,69467 2,12971 2,12135 1,62418 1,20995

у8 1,04772 1,11595 0,87783 0,80698 1,26407 1,59116 2,04575 2,17518 1,76462 1,31073

у9 1,09184 1,12765 0,9317 0,7728 1,1406 1,47964 1,94352 2,19305 1,89234 1,42685

у10 1,15341 1,14124 0,9866 0,76517 1,03328 1,36482 1,82686 2,17597 1,99985 1,5528

у11 1,23257 1,15985 1,04 0,7802 0,94619 1,25166 1,70011 2,12639 2,08114 1,68191

у12 1,32783 1,18661 1,09065 0,81343 0,88174 1,145 1,5679 2,04801 2,13188 1,80694

у13 1,43608 1,22423 1,13847 0,86032 0,84078 1,04926 1,43502 1,94558 2,14964 1,92061

у14 1,55281 1,27454 1,1844 0,91661 0,8227 0,9681 1,30619 1,8246 2,1339 2,01615

у15 1,67238 1,33827 1,2301 0,97869 0,82574 0,90425 1,18583 1,69103 2,08595 2,08776

у16 1,78846 1,41478 1,27759 1,04377 0,84732 0,85938 1,07788 1,55105 2,00875 2,13102

у17 1,89449 1,50205 1,32889 1,10999 0,88437 0,83408 0,98559 1,41073 1,90666 2,14315

у18 1,98419 1,59676 1,38564 1,17637 0,93364 0,82798 0,9114 1,27575 1,78512 2,12314

у19 2,05196 1,69448 1,44878 1,24266 0,99207 0,83982 0,85688 1,15122 1,6503 2,07182

у20 2,09337 1,78998 1,51834 1,30917 1,05692 0,86772 0,82265 1,04142 1,50872 1,99171

у21 2,1054 1,87767 1,59327 1,37644 1,12597 0,90935 0,80847 0,94969 1,36689 1,88685

Лист
09.03.01.2018.111.00 ПЗ 52
Изм. Лист № докум. Подпись Дата
у22 2,0867 1,95194 1,67149 1,44502 1,19756 0,96218 0,81331 0,87835 1,23094 1,76251

у23 2,03763 2,00766 1,74996 1,51517 1,27053 1,02371 0,83551 0,82864 1,10637 1,62481

у24 1,96028 2,04056 1,82487 1,58664 1,34415 1,0916 0,87293 0,80082 0,99777 1,48037

у25 1,85827 2,04756 1,89194 1,65856 1,41795 1,16381 0,92314 0,7942 0,90869 1,33587

у26 1,73652 2,02699 1,94679 1,72933 1,49156 1,23864 0,98361 0,80732 0,84151 1,19772

у27 1,60096 1,97877 1,98526 1,7967 1,56448 1,31474 1,05185 0,83811 0,79745 1,07169

у28 1,45808 1,90441 2,00379 1,85785 1,63598 1,39104 1,12556 0,88406 0,77658 0,96264

у29 1,3146 1,80694 1,99974 1,90961 1,70497 1,46668 1,20268 0,94244 0,778 0,87433

у30 1,17706 1,69069 1,97161 1,94867 1,76989 1,54086 1,28149 1,01045 0,79995 0,80932

у31 1,05142 1,56104 1,91924 1,97191 1,8288 1,61276 1,36053 1,08541 0,84002 0,76888

у32 0,94281 1,42405 1,84386 1,97667 1,87939 1,68137 1,4386 1,16482 0,89534 0,75309

у33 0,85529 1,28613 1,74805 1,96098 1,91916 1,74548 1,51469 1,2465 0,96282 0,7609

у34 0,83071 1,24165 1,71306 1,95116 1,92927 1,76542 1,53945 1,27402 0,98751 0,76776

Таблица 2.23 Профиль «М», число Куранта К = 0.3


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1 1 0,90813 1,73063 1,67375 1,59875 1,91813 1,17063 1 1

у2 1 1,00965 0,83968 1,57621 1,69272 1,57984 1,93433 1,3343 1,03327 1

у3 0,99899 1,02561 0,79549 1,42035 1,68185 1,56463 1,92821 1,48292 1,09547 1,00649

у4 0,99765 1,04458 0,77475 1,27105 1,64317 1,54931 1,90407 1,61043 1,18036 1,02463

у5 0,99799 1,06377 0,77526 1,1352 1,58046 1,53036 1,86572 1,71285 1,28058 1,05783

у6 1,00275 1,08123 0,79372 1,01826 1,49889 1,50492 1,81638 1,78805 1,38826 1,10755

у7 1,01494 1,09612 0,82621 0,924 1,40453 1,47104 1,75862 1,83555 1,49569 1,17329

у8 1,0373 1,10863 0,86857 0,85448 1,30385 1,42788 1,69446 1,85623 1,59582 1,25278

у9 1,07183 1,11992 0,91686 0,81004 1,2032 1,3757 1,62549 1,85203 1,68262 1,3423

у10 1,11952 1,13187 0,96768 0,78959 1,10842 1,31583 1,553 1,82565 1,75139 1,43706

у11 1,18015 1,1467 1,01839 0,79084 1,02447 1,25048 1,47812 1,78028 1,79887 1,5317

у12 1,25221 1,16669 1,0673 0,81068 0,95518 1,18251 1,40201 1,7194 1,8233 1,62071

у13 1,33305 1,1938 1,11363 0,84555 0,90314 1,11513 1,32588 1,6466 1,82431 1,69891

у14 1,41901 1,22937 1,15741 0,89178 0,86965 1,05167 1,25111 1,5654 1,80282 1,76178

у15 1,50576 1,27391 1,19934 0,9459 0,85485 0,99523 1,17921 1,47918 1,76084 1,80577

у16 1,58861 1,32695 1,24049 1,00488 0,85787 0,94854 1,11184 1,39112 1,7012 1,82851

Лист
09.03.01.2018.111.00 ПЗ 53
Изм. Лист № докум. Подпись Дата
у17 1,66286 1,38705 1,28209 1,06626 0,87701 0,91371 1,05067 1,3041 1,62736 1,82887

у18 1,72419 1,45186 1,32522 1,12822 0,91006 0,89217 0,99736 1,22074 1,54317 1,80701

у19 1,76894 1,51826 1,3706 1,18954 0,95448 0,88462 0,95339 1,14332 1,45259 1,76426

у20 1,79435 1,58265 1,4184 1,24953 1,00766 0,89102 0,92004 1,07381 1,35956 1,70299

у21 1,79876 1,64117 1,46816 1,30786 1,06707 0,91072 0,89823 1,01382 1,26778 1,62643

у22 1,7817 1,69007 1,51873 1,3644 1,13044 0,94252 0,88853 0,96462 1,1806 1,5384

у23 1,74388 1,72593 1,56835 1,41906 1,19579 0,98483 0,89107 0,9271 1,10091 1,44308

у24 1,68711 1,74598 1,61475 1,47161 1,26148 1,03581 0,90557 0,90183 1,03109 1,34477

у25 1,61417 1,74828 1,65537 1,52159 1,32615 1,09349 0,93136 0,88898 0,97295 1,24766

у26 1,52862 1,73188 1,68753 1,5682 1,38869 1,15589 0,96742 0,88843 0,92773 1,15561

у27 1,43454 1,6969 1,70871 1,61032 1,44814 1,22107 1,01247 0,89971 0,89614 1,07201

у28 1,3363 1,6445 1,71674 1,64653 1,5036 1,28725 1,06499 0,92207 0,87837 0,99965

у29 1,23829 1,57682 1,71002 1,67523 1,55419 1,35278 1,12333 0,95453 0,87416 0,94065

у30 1,14471 1,49682 1,6877 1,69472 1,59894 1,41615 1,1858 0,99588 0,88285 0,89643

у31 1,05932 1,40811 1,64974 1,70341 1,63681 1,47598 1,25066 1,04479 0,90346 0,86771

у32 0,98533 1,31473 1,59699 1,69994 1,66669 1,531 1,31621 1,09977 0,93478 0,85457

у33 0,92525 1,22086 1,53114 1,68335 1,68742 1,58001 1,38082 1,15930 0,97537 0,85648

у34 0,90816 1,19064 1,50722 1,67480 1,69203 1,59488 1,40175 1,17976 0,99084 0,85992
Аналогично предыдущему пункту сравним с помощью графика результаты
решения с разными числами Куранта (рисунок 2.5).

Лист
09.03.01.2018.111.00 ПЗ 54
Изм. Лист № докум. Подпись Дата
Рисунок 2.5
Заметно, что, также как и для схем с правой или левой разностью, отличие
между решениями с числом Куранта 0.3 и 0.5 практически отсутствуют, однако,
решение с числом Куранта 0.5 всё же немного точнее.
Сравним результаты работы программы, выведя их на график, для разных
схем. Поскольку ранее было сказано, что здесь будем использовать только
положительную скорость, то сравним левую схему и схему Лакса – Вендроффа
(рисунок 2.6). Число Куранта примем равным 0.5, также выведем точное решение.
Здесь отчётливо видно, что схема Лакса – Вендроффа даёт более точное
решение в левом верхнем и правом нижнем углах профиля, однако, в левом нижнем
и правом верхнем углах имеются значительные колебания, поэтому в этих углах
схема с левой разностью имеет более точное решение.

Лист
09.03.01.2018.111.00 ПЗ 55
Изм. Лист № докум. Подпись Дата
Рисунок 2.6
Проведём анализ на точность схем в целом, для этого посчитаем ошибки в
норме L1 (поскольку данная норма наименее строга по сравнению с остальными)
обеих схем на разных сетках. Полученные данные запишем в таблицу (таблица
2.24).
Таблица 2.24 Ошибки в норме L1
Сетка Левая разность Лакс-Вендрофф
10 0.234039101747369 0.236454892412426
20 0.168114051387309 0.158013978704723
40 0.119234872311572 0.100150839534952
80 0.083981616701090 0.069851298877798
160 0.059496953862020 0.044972429107141
320 0.042109005235275 0.029169624731358
640 0.029786710583521 0.018857566483580
1280 0.021062925686496 0.012280366426400
2560 0.014893475704227 0.008170252973249
5120 0.010531486613086 0.005352155063018

Лист
09.03.01.2018.111.00 ПЗ 56
Изм. Лист № докум. Подпись Дата
Анализируя полученные данные можно заметить, что схема с левой
разностью точнее лишь на самой грубой сетке (10 ячеек). А начиная со следующей
же сетки (20 ячеек) вплоть до самой подробной (5120 ячеек) уже схема Лакса-
Вендроффа является более точной, что не удивительно, т.к. она имеет, в отличие от
схемы с левой разностью, второй порядок по точности.

2.3 Неявная схема с левой разностью


Сравним результаты работы программы с данной схемой при положительной
и отрицательной скорости с неизменными остальными параметрами (значения
параметров возьмём такие же, как в пункте 2.1). Полученные данные запишем в
виде двух таблиц (таблицы 2.25 – 2.26).
Таблица 2.25 Профиль «П», число Куранта К = 1, схема левая неявная,
скорость а = 1.
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1

у1 1,05865 1,02933 1,01466 1,50733 1,75367 1,87683 1,93842 1,46921 1,2346 1,1173

у2 1,16842 1,09887 1,05677 1,28205 1,51786 1,69735 1,81788 1,64354 1,43907 1,27819

у3 1,29096 1,19491 1,12584 1,20395 1,3609 1,52912 1,6735 1,65852 1,5488 1,41349

у4 1,39236 1,29364 1,20974 1,20684 1,28387 1,4065 1,54 1,59926 1,57403 1,49376

у5 1,45622 1,37493 1,29233 1,24959 1,26673 1,33661 1,43831 1,51878 1,54641 1,52008

у6 1,48228 1,4286 1,36047 1,30503 1,28588 1,31125 1,37478 1,44678 1,49659 1,50834

у7 1,47981 1,45421 1,40734 1,35618 1,32103 1,31614 1,34546 1,39612 1,44636 1,47735

у8 1,46112 1,45766 1,4325 1,39434 1,35769 1,33691 1,34119 1,36865 1,4075 1,44243

у9 1,43713 1,4474 1,43995 1,41715 1,38742 1,36217 1,35168 1,36016 1,38383 1,41313

у10 1,41534 1,43137 1,43566 1,4264 1,40691 1,38454 1,36811 1,36414 1,37398 1,39356

Таблица 2.26 Профиль «П», число Куранта К = 1, схема левая неявная,


скорость а = -1.
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1
у1 1 1 2 2 2 2 1 1 1 1
у2 1 2 2 2 2 1 1 1 1 1

Лист
09.03.01.2018.111.00 ПЗ 57
Изм. Лист № докум. Подпись Дата
у3 2 2 2 2 1 1 1 1 1 1
у4 2 2 2 1 1 1 1 1 1 2
у5 2 2 1 1 1 1 1 1 2 2
у6 2 1 1 1 1 1 1 2 2 2
у7 1 1 1 1 1 1 2 2 2 2
у8 1 1 1 1 1 2 2 2 2 1
у9 1 1 1 1 2 2 2 2 1 1
у10 1 1 1 2 2 2 2 1 1 1

Видно, что при одном и том же числе Куранта, но при разной по знаку
скорости получается либо точное решение, либо «размазанное», т.е. данная схема
при положительной скорости не имеет точного решения, хотя и устойчива при
любых числах Куранта (см. п. 1.1.4).
Рассмотрим более подробно числовые данные программы при различных
значениях числа Куранта и различных профилях, однако, при фиксированных
значениях скорости (а = 1), конечного времени переноса (Т = 10), начальной (Хн =
0) и конечной (Хк = 10) точек периодического отрезка, а также параметров профиля
(таблицы 2.25, 2.27 – 2.31).
Таблица 2.27 Профиль «М», число Куранта К = 1
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1,04545 1,02273 1,01136 1,44318 1,53409 1,57955 1,72727 1,36364 1,18182 1,09091

у2 1,12877 1,07575 1,04356 1,24337 1,38873 1,48414 1,60571 1,48467 1,33324 1,21208

у3 1,2202 1,14798 1,09577 1,16957 1,27915 1,38164 1,49367 1,48917 1,41121 1,31164

у4 1,29484 1,22141 1,15859 1,16408 1,22161 1,30163 1,39765 1,44341 1,42731 1,36948

у5 1,34129 1,28135 1,21997 1,19202 1,20682 1,25422 1,32594 1,38467 1,40599 1,38773

у6 1,35995 1,32065 1,27031 1,23116 1,21899 1,23661 1,28127 1,33297 1,36948 1,37861

у7 1,35791 1,33928 1,30479 1,26798 1,24349 1,24005 1,26066 1,29682 1,33315 1,35588

у8 1,34423 1,34175 1,32327 1,29563 1,26956 1,2548 1,25773 1,27727 1,30521 1,33054

у9 1,32681 1,33428 1,32878 1,3122 1,29088 1,27284 1,26528 1,27128 1,28824 1,30939

у10 1,31106 1,32267 1,32572 1,31896 1,30492 1,28888 1,27708 1,27418 1,28121 1,2953

Лист
09.03.01.2018.111.00 ПЗ 58
Изм. Лист № докум. Подпись Дата
Таблица 2.28 Профиль «П», число Куранта К = 0.5
Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 2 2 2 2 1 1 1

у1 1,01219 1,00406 1,00135 1,66712 1,88904 1,96301 1,98767 1,32922 1,10974 1,03658

у2 1,0443 1,01748 1,00673 1,44699 1,74169 1,88924 1,95486 1,53777 1,25242 1,10853

у3 1,09674 1,0439 1,01912 1,30437 1,59591 1,79146 1,90039 1,65864 1,38783 1,20163

у4 1,16452 1,08411 1,04078 1,2165 1,46944 1,68412 1,8283 1,7152 1,49695 1,30007

у5 1,24003 1,13608 1,07255 1,16852 1,36914 1,57913 1,74525 1,72521 1,57304 1,39106

у6 1,31541 1,19586 1,11365 1,15023 1,29617 1,48481 1,65843 1,70295 1,61634 1,46615

у7 1,38396 1,25856 1,16195 1,15414 1,24882 1,40615 1,57434 1,66008 1,63092 1,52108

у8 1,44095 1,31936 1,21442 1,17423 1,22396 1,34542 1,49803 1,60606 1,62264 1,55493

у9 1,48372 1,37414 1,26766 1,20538 1,21777 1,30287 1,43298 1,54837 1,59788 1,56925

у10 1,51151 1,41993 1,31842 1,24306 1,2262 1,27731 1,38109 1,49261 1,56279 1,56709

у11 1,52511 1,45499 1,36394 1,28335 1,24525 1,26662 1,34293 1,44272 1,52277 1,55232

у12 1,52639 1,47879 1,40223 1,32298 1,27116 1,26813 1,318 1,40114 1,48222 1,52895

у13 1,51786 1,49182 1,43209 1,35935 1,30055 1,27894 1,30498 1,36909 1,44451 1,50081

у14 1,5023 1,49531 1,45316 1,39062 1,33058 1,29615 1,30204 1,34674 1,41192 1,47118

у15 1,48244 1,49102 1,46578 1,41567 1,35894 1,31708 1,30705 1,33351 1,38578 1,44271

у16 1,46074 1,48093 1,47083 1,43406 1,38398 1,33938 1,31783 1,32828 1,36662 1,41735

у17 1,43927 1,46704 1,46957 1,4459 1,40462 1,36113 1,33226 1,32961 1,35428 1,39633

у18 1,4196 1,45123 1,46345 1,45175 1,42033 1,38086 1,34846 1,33589 1,34815 1,38027

у19 1,40283 1,43509 1,454 1,4525 1,43105 1,39759 1,36484 1,34554 1,34728 1,36927

у20 1,38956 1,41992 1,44264 1,44921 1,43711 1,41076 1,38015 1,35708 1,35055 1,36303

Таблица 2.29 Профиль «М», число Куранта К = 0.5


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1,00975 1,00325 1,00108 1,58369 1,61123 1,62041 1,79014 1,26338 1,08779 1,02926

у2 1,03496 1,01382 1,00533 1,39091 1,53779 1,59287 1,72438 1,41705 1,19754 1,08536

у3 1,0754 1,03435 1,015 1,2656 1,44706 1,54427 1,66434 1,49948 1,29819 1,1563

у4 1,12688 1,06519 1,03173 1,18765 1,36059 1,48304 1,60391 1,53429 1,37689 1,22983

у5 1,18346 1,10461 1,05603 1,14377 1,28832 1,41813 1,54198 1,53685 1,43021 1,29662

у6 1,23928 1,1495 1,08718 1,12491 1,23385 1,35671 1,48022 1,51798 1,45947 1,3509

Лист
09.03.01.2018.111.00 ПЗ 59
Изм. Лист № докум. Подпись Дата
у7 1,28952 1,19618 1,12351 1,12445 1,19738 1,3036 1,42135 1,48577 1,46823 1,39001

у8 1,33091 1,24109 1,16271 1,1372 1,17732 1,2615 1,36807 1,44653 1,461 1,41368

у9 1,36169 1,28129 1,20223 1,15888 1,17117 1,23139 1,32251 1,40519 1,4424 1,42325

у10 1,38149 1,31469 1,23972 1,18582 1,17606 1,21295 1,28599 1,36546 1,41675 1,42108

у11 1,39099 1,34012 1,27318 1,21494 1,18902 1,20497 1,25898 1,32997 1,38782 1,41

у12 1,39162 1,35729 1,30122 1,2437 1,20725 1,20573 1,24123 1,30039 1,35868 1,39289

у13 1,38524 1,36661 1,32301 1,27014 1,22821 1,21322 1,2319 1,27756 1,33164 1,37247

у14 1,37385 1,36902 1,33835 1,29288 1,24977 1,2254 1,22973 1,26162 1,3083 1,35108

у15 1,35943 1,36582 1,34751 1,31109 1,27021 1,24034 1,23327 1,25217 1,28959 1,33058

у16 1,34374 1,35846 1,35116 1,32444 1,28829 1,25632 1,24095 1,24843 1,27587 1,31234

у17 1,32824 1,34839 1,35024 1,33304 1,3032 1,27195 1,25128 1,24938 1,26704 1,29724

у18 1,31406 1,33695 1,34581 1,3373 1,31457 1,28616 1,26291 1,25389 1,26266 1,28571

у19 1,30198 1,32529 1,33897 1,33785 1,32233 1,29821 1,27468 1,26082 1,26204 1,27782

у20 1,29244 1,31434 1,33076 1,33549 1,32672 1,30771 1,28569 1,26911 1,2644 1,27335

Таблица 2.30 Профиль «П», число Куранта К = 0.3


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 2 2 2 2 1 1 1

у1 1,00283 1,00065 1,00015 1,76927 1,94675 1,98771 1,99716 1,23011 1,0531 1,01225

у2 1,0115 1,00316 1,00084 1,59194 1,86487 1,95936 1,98844 1,40511 1,13434 1,04043

у3 1,02811 1,00892 1,00271 1,45596 1,77051 1,91578 1,97167 1,53586 1,227 1,08348

у4 1,05349 1,0192 1,00651 1,35224 1,67399 1,85998 1,9459 1,63048 1,32011 1,13809

у5 1,08732 1,03492 1,01307 1,27397 1,58167 1,79576 1,91125 1,69528 1,40669 1,20007

у6 1,12838 1,05649 1,02309 1,21608 1,49731 1,72688 1,86871 1,7353 1,48252 1,26525

у7 1,17488 1,08381 1,0371 1,17477 1,42288 1,65673 1,81979 1,7548 1,54535 1,32989

у8 1,22473 1,11633 1,05539 1,14722 1,35926 1,58808 1,76632 1,75745 1,5943 1,39091

у9 1,27578 1,15313 1,07794 1,13124 1,30664 1,52313 1,7102 1,74655 1,62943 1,44595

у10 1,326 1,19302 1,1045 1,12507 1,26474 1,46351 1,65327 1,72502 1,65149 1,49338

у11 1,37359 1,23469 1,13454 1,12725 1,23301 1,41031 1,5972 1,69553 1,66165 1,53222

у12 1,41707 1,27678 1,16737 1,13651 1,21074 1,36426 1,54345 1,66043 1,66137 1,56202

у13 1,45533 1,31798 1,20212 1,15165 1,19711 1,32569 1,49319 1,62184 1,65225 1,58284

у14 1,48758 1,35712 1,23789 1,17155 1,19121 1,29465 1,44738 1,58158 1,63594 1,5951

у15 1,5134 1,39319 1,27373 1,19513 1,19211 1,27099 1,40667 1,54121 1,61408 1,59948

Лист
09.03.01.2018.111.00 ПЗ 60
Изм. Лист № докум. Подпись Дата
у16 1,53267 1,42537 1,30872 1,22135 1,19886 1,25434 1,37152 1,50205 1,58823 1,59688

у17 1,54551 1,4531 1,34204 1,2492 1,21048 1,24422 1,34214 1,46515 1,55983 1,58833

у18 1,5523 1,47599 1,37295 1,27776 1,226 1,24002 1,31858 1,43133 1,53017 1,57491

у19 1,55355 1,49389 1,40086 1,30617 1,2445 1,24105 1,30069 1,40118 1,5004 1,55772

у20 1,54992 1,50682 1,42531 1,33366 1,26508 1,2466 1,2882 1,37511 1,47149 1,53782

у21 1,54214 1,51497 1,446 1,35959 1,28689 1,25589 1,28075 1,35333 1,44422 1,51622

у22 1,53099 1,51867 1,46277 1,3834 1,30916 1,26819 1,27785 1,33591 1,41923 1,49384

у23 1,51726 1,51834 1,4756 1,40467 1,3312 1,28273 1,27897 1,32277 1,39697 1,47148

у24 1,5017 1,5145 1,48457 1,42311 1,35241 1,29881 1,28355 1,31372 1,37776 1,44985

у25 1,48505 1,50771 1,48991 1,43853 1,37228 1,31576 1,29099 1,30848 1,36177 1,42953

у26 1,46795 1,49853 1,4919 1,45084 1,39041 1,33299 1,30068 1,30668 1,34906 1,41096

у27 1,451 1,48756 1,4909 1,46009 1,40649 1,34995 1,31205 1,30792 1,33956 1,39448

у28 1,43469 1,47536 1,48731 1,46637 1,42031 1,36619 1,32454 1,31175 1,33314 1,38033

у29 1,41944 1,46246 1,48158 1,46988 1,43175 1,38132 1,33765 1,31773 1,32959 1,36862

у30 1,40558 1,44933 1,47414 1,47086 1,44078 1,39504 1,35089 1,32538 1,32862 1,35939

у31 1,39335 1,43641 1,46543 1,46961 1,44743 1,40713 1,36387 1,33426 1,32992 1,35259

у32 1,38291 1,42407 1,45588 1,46644 1,45182 1,41744 1,37623 1,34395 1,33316 1,3481

у33 1,37434 1,41259 1,44589 1,4617 1,4541 1,4259 1,38769 1,35404 1,33798 1,34577

у34 1,37169 1,40887 1,44253 1,45996 1,45463 1,42851 1,3914 1,35744 1,33975 1,34522

Таблица 2.31 Профиль «М», число Куранта К = 0.3


Х 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1,00232 1,00054 1,00012 1,67311 1,6361 1,62756 1,8179 1,18875 1,04356 1,01005

у2 1,00933 1,00256 1,00069 1,51793 1,60883 1,62324 1,77298 1,32357 1,10817 1,0327

у3 1,02256 1,00718 1,00218 1,39891 1,56039 1,60874 1,73508 1,41853 1,1798 1,06664

у4 1,04249 1,01533 1,00522 1,30806 1,50216 1,58414 1,70024 1,48354 1,24989 1,10893

у5 1,06872 1,02765 1,01039 1,23937 1,44152 1,55123 1,66586 1,52561 1,31352 1,15614

у6 1,10018 1,04438 1,01824 1,18834 1,38309 1,51243 1,63045 1,54981 1,36805 1,20504

у7 1,13541 1,06539 1,02912 1,1516 1,32967 1,47025 1,59348 1,55989 1,41232 1,25288

у8 1,17281 1,09018 1,04321 1,12658 1,2828 1,42699 1,55506 1,55877 1,44611 1,29747

у9 1,21076 1,11801 1,06047 1,11133 1,24323 1,38459 1,51572 1,54884 1,46982 1,33724

у10 1,24777 1,14795 1,08066 1,10425 1,21116 1,34456 1,47622 1,53208 1,48419 1,37115

Лист
09.03.01.2018.111.00 ПЗ 61
Изм. Лист № докум. Подпись Дата
у11 1,28258 1,17902 1,10336 1,10404 1,18644 1,30807 1,43742 1,51024 1,4902 1,39863

у12 1,31417 1,21021 1,12802 1,10958 1,1687 1,27591 1,40015 1,48483 1,48896 1,41947

у13 1,34178 1,24057 1,15399 1,11983 1,15742 1,24857 1,36517 1,45722 1,48163 1,43382

у14 1,36492 1,26927 1,18059 1,13385 1,15198 1,22628 1,33312 1,42858 1,46939 1,44203

у15 1,38331 1,29559 1,20713 1,15076 1,1517 1,20907 1,30449 1,39994 1,45336 1,44464

у16 1,39693 1,31897 1,23294 1,16972 1,15586 1,19679 1,27964 1,37218 1,43463 1,44233

у17 1,40591 1,33904 1,25742 1,18996 1,16373 1,18916 1,25876 1,34601 1,41418 1,43583

у18 1,41053 1,35554 1,28007 1,21076 1,17458 1,1858 1,24192 1,32199 1,3929 1,42593

у19 1,41119 1,36838 1,30045 1,23145 1,18771 1,18624 1,22907 1,30054 1,37159 1,41339

у20 1,40837 1,37761 1,31825 1,25148 1,20242 1,18997 1,22005 1,28197 1,35091 1,39897

у21 1,4026 1,38338 1,33328 1,27036 1,2181 1,19646 1,21461 1,26642 1,33141 1,38338

у22 1,39445 1,38593 1,34543 1,28768 1,23416 1,20516 1,21243 1,25396 1,31354 1,36726

у23 1,38446 1,38559 1,3547 1,30315 1,25008 1,21553 1,21314 1,24454 1,29762 1,35119

у24 1,3732 1,38273 1,36117 1,31654 1,26542 1,22704 1,21635 1,23804 1,28387 1,33565

у25 1,36117 1,37776 1,365 1,32772 1,27979 1,23921 1,22163 1,23425 1,27242 1,32106

у26 1,34884 1,37108 1,3664 1,33665 1,29291 1,25161 1,22854 1,23293 1,2633 1,30773

у27 1,33662 1,36313 1,36565 1,34334 1,30455 1,26382 1,23669 1,2338 1,2565 1,29591

у28 1,32488 1,3543 1,36303 1,34788 1,31455 1,27553 1,24565 1,23653 1,25189 1,28575

у29 1,31391 1,34498 1,35886 1,35042 1,32283 1,28645 1,25506 1,24081 1,24933 1,27735

у30 1,30394 1,33551 1,35348 1,35112 1,32936 1,29635 1,26459 1,2463 1,24863 1,27072

у31 1,29515 1,3262 1,34718 1,35021 1,33417 1,30508 1,27393 1,25268 1,24957 1,26584

у32 1,28764 1,3173 1,34029 1,34792 1,33734 1,31252 1,28284 1,25964 1,25189 1,26262

у33 1,28148 1,30903 1,33307 1,3445 1,33899 1,31863 1,2911 1,2669 1,25535 1,26094

у34 1,27958 1,30636 1,33064 1,34324 1,33938 1,32052 1,29377 1,26934 1,25662 1,26055

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


необходимо её исследовать и при больших числах Куранта, однако, с
установленными нами выше параметрами получается следующее
at atN 1  10  t
K    t
x ( X к  X н ) 10  0
Для анализа мы также установили предельное время 10 секунд – время, за
которое профиль пройдёт один оборот и вернётся на прежнее место, отсюда

Лист
09.03.01.2018.111.00 ПЗ 62
Изм. Лист № докум. Подпись Дата
понятно, что при числе куранта равном десяти профиль пройдёт лишь один полный
шаг. Посему возьмём числа Куранта большие единицы, но меньшие десяти, т.е. К
= 1.3, 1.5, 2, 3, 5 (таблицы 2.32 – 2.41).
Таблица 2.32 Профиль «П», число Куранта К = 1.3
Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1

у1 1,09195 1,05197 1,02938 1,45139 1,68991 1,82473 1,90094 1,50923 1,28782 1,16268

у2 1,23502 1,15544 1,10063 1,25313 1,44304 1,60899 1,73592 1,63736 1,48539 1,34508

у3 1,36275 1,27261 1,19784 1,22188 1,31803 1,44454 1,57123 1,59998 1,55016 1,46099

у4 1,44037 1,36743 1,29369 1,26247 1,28663 1,35528 1,44917 1,51474 1,53014 1,50008

у5 1,46724 1,42384 1,36726 1,3217 1,30645 1,32768 1,3805 1,43887 1,47855 1,48791

у6 1,46028 1,44444 1,41088 1,37211 1,34356 1,33666 1,35572 1,39187 1,42956 1,45493

у7 1,43889 1,4413 1,42808 1,40374 1,37758 1,35978 1,35802 1,37274 1,39744 1,42244

у8 1,42257 1,43243 1,43014 1,41624 1,39589 1,37689 1,36696 1,37 1,38444 1,40444

Таблица 2.33 Профиль «М», число Куранта К = 1.3


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1,07061 1,03991 1,02256 1,39318 1,49397 1,55094 1,69184 1,39104 1,22102 1,12493

у2 1,17827 1,11811 1,07657 1,21423 1,33586 1,42937 1,54349 1,4772 1,36582 1,26108

у3 1,27287 1,20558 1,14949 1,17764 1,24643 1,32597 1,42054 1,44518 1,41067 1,34564

у4 1,32962 1,27569 1,22082 1,20205 1,22134 1,26683 1,33366 1,38215 1,39455 1,37328

у5 1,34898 1,31711 1,27525 1,24342 1,23382 1,24817 1,28534 1,32743 1,35661 1,36386

у6 1,34374 1,33216 1,30742 1,27959 1,25969 1,25468 1,26801 1,29385 1,32114 1,33971

у7 1,32815 1,32989 1,32012 1,3025 1,28389 1,27119 1,26981 1,28026 1,29803 1,31615

у8 1,31631 1,32346 1,3217 1,3116 1,29701 1,28342 1,27626 1,27836 1,28872 1,30316

Таблица 2.34 Профиль «П», число Куранта К = 1.5


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1

у1 1,11349 1,06809 1,04086 1,42451 1,65471 1,79282 1,87569 1,52542 1,31525 1,18915

у2 1,2708 1,18972 1,13017 1,24791 1,41063 1,56351 1,68838 1,6232 1,50002 1,37567

Лист
09.03.01.2018.111.00 ПЗ 63
Изм. Лист № докум. Подпись Дата
у3 1,39199 1,31108 1,23872 1,24239 1,30969 1,41122 1,52208 1,56253 1,53752 1,47278

у4 1,4502 1,39455 1,33222 1,29629 1,30165 1,34547 1,41612 1,47468 1,49982 1,489

у5 1,45828 1,43279 1,39256 1,35405 1,33309 1,33804 1,36927 1,41144 1,44679 1,46368

у6 1,44137 1,43794 1,41979 1,39349 1,36933 1,35682 1,3618 1,38165 1,40771 1,4301

у7 1,42599 1,43197 1,42588 1,40969 1,38951 1,37316 1,36748 1,37457 1,39114 1,41062

Таблица 2.35 Профиль «М», число Куранта К = 1.5


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1,08679 1,05207 1,03124 1,36875 1,47125 1,53275 1,66965 1,40179 1,24107 1,14464

у2 1,20472 1,14366 1,0987 1,20672 1,31253 1,40062 1,50823 1,46565 1,37582 1,28335

у3 1,29422 1,234 1,17988 1,19061 1,23938 1,30387 1,38562 1,41763 1,40091 1,35388

у4 1,33667 1,2956 1,24931 1,22583 1,23125 1,2603 1,31043 1,35331 1,37235 1,36496

у5 1,34237 1,32366 1,29392 1,26669 1,25251 1,25563 1,27755 1,30785 1,33365 1,34617

у6 1,32999 1,32746 1,31404 1,2951 1,27806 1,26909 1,27247 1,28662 1,30543 1,32173

у7 1,31881 1,32313 1,31859 1,30684 1,29245 1,28077 1,27662 1,28162 1,29353 1,30763

Таблица 2.36 Профиль «П», число Куранта К = 2


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1

у1 1,16131 1,10754 1,07169 1,38113 1,58742 1,72495 1,81663 1,54442 1,36295 1,24196

у2 1,33294 1,2578 1,19577 1,25755 1,36751 1,48665 1,59665 1,57924 1,50714 1,41875

у3 1,42495 1,36924 1,31141 1,29346 1,31814 1,37431 1,44842 1,49203 1,49707 1,47096

у4 1,4445 1,41941 1,38341 1,35343 1,34167 1,35255 1,38451 1,42035 1,44592 1,45427

у5 1,43047 1,42678 1,41232 1,39269 1,37568 1,36797 1,37348 1,3891 1,40804 1,42345

Таблица 2.37 Профиль «М», число Куранта К = 2


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1,12253 1,08169 1,05446 1,32797 1,42698 1,49299 1,62033 1,41355 1,2757 1,1838

у2 1,25052 1,19424 1,14765 1,20776 1,28083 1,35155 1,44114 1,43194 1,3799 1,3145

у3 1,31821 1,27688 1,23381 1,22512 1,24369 1,27964 1,33348 1,3663 1,3708 1,3520

Лист
09.03.01.2018.111.00 ПЗ 64
Изм. Лист № докум. Подпись Дата
у4 1,33238 1,31388 1,28719 1,2665 1,2589 1,26581 1,28837 1,31434 1,3332 1,3395

у5 1,32211 1,31936 1,30864 1,29459 1,28269 1,27707 1,28083 1,292 1,30573 1,31697

Таблица 2.38 Профиль «П», число Куранта К = 3


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1

у1 1,2292 1,1719 1,12893 1,34669 1,51002 1,63252 1,72439 1,54329 1,40747 1,3056

у2 1,38651 1,33286 1,28187 1,29808 1,35106 1,42143 1,49717 1,5087 1,48339 1,43894

у3 1,42785 1,4041 1,37354 1,35468 1,35377 1,37069 1,40231 1,4289 1,44253 1,44163

у4 1,43051 1,41731 1,39543 1,37505 1,36441 1,36755 1,38493 1,40692 1,42472 1,43318

Таблица 2.39 Профиль «М», число Куранта К = 3


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1,17305 1,12978 1,09734 1,29175 1,37507 1,43755 1,54691 1,41018 1,30764 1,23073

у2 1,28989 1,24986 1,21173 1,23174 1,26757 1,31006 1,36928 1,3795 1,36154 1,32883

у3 1,32026 1,30266 1,27993 1,26788 1,2678 1,27837 1,3011 1,3207 1,33091 1,33039

у4 1,32219 1,31243 1,29618 1,28203 1,27492 1,27664 1,28887 1,30478 1,31785 1,32412

Таблица 2.40 Профиль «П», число Куранта К = 5


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 2 2 2 2 1 1 1

у1 1,29778 1,24815 1,20679 1,33899 1,44916 1,54097 1,61747 1,51456 1,4288 1,35733

у2 1,40698 1,38051 1,35156 1,34946 1,36608 1,39523 1,43227 1,44598 1,44312 1,42882

Таблица 2.41 Профиль «М», число Куранта К = 5


Х 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
у0 1 1 1 1,875 1,625 1,625 1,875 1 1 1

у1 1,22394 1,18662 1,15552 1,27543 1,33369 1,38224 1,46437 1,38697 1,32248 1,26873

у2 1,30497 1,28524 1,26362 1,26559 1,27694 1,29449 1,3228 1,3335 1,33166 1,32117

Лист
09.03.01.2018.111.00 ПЗ 65
Изм. Лист № докум. Подпись Дата
Сравним с помощью графика результаты решения с разными числами
Куранта (рисунок 2.7).

Рисунок 2.7
Можно заметить, что чем больше число Куранта, тем менее точное
получается решение.
Сравним результаты работы программы, выведя их на график, для разных
схем. Сравним левую схему, схему Лакса – Вендроффа и неявную левую схему
(рисунок 2.8). Число Куранта примем равным 0.5, также выведем точное решение.

Рисунок 2.8
Лист
09.03.01.2018.111.00 ПЗ 66
Изм. Лист № докум. Подпись Дата
Можно заметить, что наименее точной среди трёх представленных схем
является неявная схема с левой разностью. На данном этапе лучшей схемой
является схема левой разностью, т.к. выдаёт более точное решение, чем свой
неявный аналог, а так же в ней отсутствуют колебания на разрывах профиля, что
присуще схеме Лакса – Вендроффа.
Проведём анализ на точность схем в целом, для этого посчитаем ошибки в
норме L1 (поскольку данная норма наименее строга по сравнению с остальными)
всех трёх схем на разных сетках. Полученные данные запишем в таблицу (таблица
2.42).
Таблица 2.42 Ошибки в норме L1
Сетка Левая разность Лакс-Вендрофф Неявная левая разность
10 0.234039101747369 0.236454892412426 0.4757909556349825
20 0.168114051387309 0.158013978704723 0.4141072948261114
40 0.119234872311572 0.100150839534952 0.3245161324396562
80 0.083981616701090 0.069851298877798 0.2366476769931531
160 0.059496953862020 0.044972429107141 0.1680270985263768
320 0.042109005235275 0.029169624731358 0.1188656315301775
640 0.029786710583521 0.018857566483580 0.0840665014198147
1280 0.021062925686496 0.012280366426400 0.0594507856728274

Анализируя полученные данные можно заметить, что схема с левой


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

2.4 TVD – ограничители


Повышение точности без потери строгого теоретического обоснования
может быть достигнуто путём замены условия сохранения монотонности условием
уменьшения полной вариации TVD (сокращенно от английского Total Variation
Diminishing). Полная вариация численного решения определяется следующим
образом [6]:
Лист
09.03.01.2018.111.00 ПЗ 67
Изм. Лист № докум. Подпись Дата

TV  u j
  u j
i 1  uij
i 

Следовательно, численная схема будет схемой TVD, если


TV (u j 1 )  TV (u j )
Схемы TVD не приводят к образованию нефизических осцилляций, и с
помощью этих схем в областях гладкого изменения решения может быть получен
второй порядок точности. Чтобы эти схемы удовлетворяли энтропийному условию,
требуется введение дополнительных ограничений. Обычный путь получения более
высокого порядка точности состоит в введении «антидиффузионных потоков»,
обеспечивающих выполнение условия TVD.
Рассмотрим схему Лакса–Вендроффа. Эта схема может быть представлена в
виде
 
uij 1  uij  K (uij  uij1 )   f j 1  f j 1  , где
 i 2 i
2 

1
f j 1  K (1  K )(uij1  uij )
i 2
2

1
f j
1  K (1  K )(uij  uij1 )
i 2
2

Полная схема Лакса–Вендроффа не является схемой TVD; она даёт


осциллирующее решение на сильных скачках. Это означает, что
антидиффузионные потоки, присущие схеме Лакса–Вендроффа, слишком велики и
приводят к появлению осцилляций. Возникает необходимость ограничения
антидиффузионных потоков. Эффективный способ их ограничения состоит в
введении выражений
1 
f j 1    (ri )  K (1  K )(uij1  uij ) 
i
2 2 
1 
f j 1    (ri 1 )  K (1  K )(uij  uij1 ) 
i
2 2 
Вместо

Лист
09.03.01.2018.111.00 ПЗ 68
Изм. Лист № докум. Подпись Дата
1
f j
1  K (1  K )(uij1  uij )
i 2
2

1
f j
1  K (1  K )(uij  uij1 )
i 2
2

Функция  (ri ) называется TVD – ограничителем. Параметр ri равен


отношению прилежащих градиентов [7], т.е.
 uij  uij1
 u j  u j , a  0,
 i 1 i
ri   j
 ui  2  ui 1 , a  0.
j

 uij1  uij

Данная функция выбирается так, чтобы схема была схемой TVD. Используем
три различных функции.
Монотонный ограничитель  (ri )  max 0,min(ri ,1)
minmod (Harten, 1983) [8]
0, ri  0,

2ri , 0  ri  1 ,
 2
 1
Ограничитель типа superbee [7] sb (ri )  1,  ri  1,
 2
ri , 1  ri  2,

2, r  2.

0, ri  0,

Ограничитель типа vanAlbada va (ri )   ri (1  ri )
 1  r 2 , ri  0.
 i

Выведем на единый график все функции ограничителей (рисунок 2.9), взяв


r [2;4] .
Рассмотренные выше модификации были внесены в метод вычисления по
схеме Лакса–Вендроффа. В программу, разработанную в данной главе, были
внесены ещё три схемы Лакса–Вендроффа с различными TVD –
ограничителями.

Лист
09.03.01.2018.111.00 ПЗ 69
Изм. Лист № докум. Подпись Дата
Рисунок 2.9
2.4.1 Minmod
Выполним проверку, является ли вообще полученная схема схемой TVD, для
этого в каждый момент времени посчитаем TV(u) и выведем её значения в каждый
момент времени на график (рисунок 2.10), если полученная зависимость будет
убывающей или константой, то это значит, что соблюдается следующее условие
TV (u j 1 )  TV (u j ) , следовательно, схема является схемой TVD.

Рисунок 2.10
Видно, что условие TVD выполняется, следовательно, полученная схема
является схемой TVD.

Лист
09.03.01.2018.111.00 ПЗ 70
Изм. Лист № докум. Подпись Дата
TVD ограничитель, по сути, регулирует участие дисперсионной
составляющей схемы Лакса – Вендроффа, т.е. либо полностью отключает её и
остаётся только диффузионная составляющая (явная схема с левой разностью),
либо полностью задействует, либо возьмёт от неё лишь какую-то долю.
Проанализируем, на каком шаге, какую долю дисперсионной составляющей
задействует данный ограничитель, для этого выведем на график перенесённого

профиля дополнительно ещё и значения функции ϕ(r) в каждой ячейке (рисунок


2.11).

Рисунок 2.11
Если вспомнить график решения по схеме Лакса-Вендроффа без
ограничителя, то можно заметить, что ограничитель действует на месте, где
возникали колебания.
Проведём аналогичные рассуждения для профиля экспонента.
Посчитаем TV(u) и выведем её значения в каждый момент времени на график
(рисунок 2.12).

Лист
09.03.01.2018.111.00 ПЗ 71
Изм. Лист № докум. Подпись Дата
Видно, что условие TVD выполняется, следовательно, полученная схема
является схемой TVD и для данного профиля.
Проанализируем, на каком шаге, какую долю дисперсионной составляющей
задействует данный ограничитель, для этого выведем на график перенесённого

профиля дополнительно ещё и значения функции ϕ(r) в каждой ячейке (рисунок


2.13).

Рисунок 2.12

Рисунок 2.13

Лист
09.03.01.2018.111.00 ПЗ 72
Изм. Лист № докум. Подпись Дата
Если вспомнить график решения по схеме Лакса–Вендроффа без
ограничителя, то можно заметить, что ограничитель действует на месте, где
возникал сдвиг экспоненты.
2.4.2 Superbee
Выполним проверку, является ли вообще полученная схема схемой TVD, для
этого в каждый момент времени посчитаем TV(u) и выведем её значения в каждый
момент времени на график (рисунок 2.14), если полученная зависимость будет
убывающей или константой, то это значит, что соблюдается следующее условие
TV (u j 1 )  TV (u j ) , следовательно, схема является схемой TVD.

Рисунок 2.14
Видно, что условие TVD выполняется, следовательно, полученная схема
является схемой TVD.
TVD ограничитель, по сути, регулирует участие дисперсионной
составляющей схемы Лакса – Вендроффа, т.е. либо полностью отключает её и
остаётся только диффузионная составляющая (явная схема с левой разностью),
либо полностью задействует, либо возьмёт от неё лишь какую-то долю.
Проанализируем, на каком шаге, какую долю дисперсионной составляющей
задействует данный ограничитель, для этого выведем на график перенесённого

профиля дополнительно ещё и значения функции ϕ(r) в каждой ячейке (рисунок


2.15).
Лист
09.03.01.2018.111.00 ПЗ 73
Изм. Лист № докум. Подпись Дата
Рисунок 2.15
Если вспомнить график решения по схеме Лакса – Вендроффа без
ограничителя, то можно заметить, что ограничитель действует на месте, где
возникали колебания, причём сам профиль практически точно повторяет его.
Проведём аналогичные рассуждения для профиля экспонента.
Посчитаем TV(u) и выведем её значения в каждый момент времени на график
(рисунок 2.16).
Видно, что условие TVD выполняется, следовательно, полученная схема
является схемой TVD и для данного профиля.
Проанализируем, на каком шаге, какую долю дисперсионной составляющей
задействует данный ограничитель, для этого выведем на график перенесённого

профиля дополнительно ещё и значения функции ϕ(r) в каждой ячейке (рисунок


2.17).

Лист
09.03.01.2018.111.00 ПЗ 74
Изм. Лист № докум. Подпись Дата
Рисунок 2.16

Рисунок 2.17
Если вспомнить график решения по схеме Лакса – Вендроффа без
ограничителя, то можно заметить, что ограничитель действует на месте, где
возникал сдвиг экспоненты.

Лист
09.03.01.2018.111.00 ПЗ 75
Изм. Лист № докум. Подпись Дата
2.4.3 VanAlbada
Выполним проверку, является ли вообще полученная схема схемой TVD, для
этого в каждый момент времени посчитаем TV(u) и выведем её значения в каждый
момент времени на график (рисунок 2.18), если полученная зависимость будет
убывающей или константой, то это значит, что соблюдается следующее условие
TV (u j 1 )  TV (u j ) , следовательно, схема является схемой TVD.

Рисунок 2.18
Видно, что условие TVD выполняется, следовательно, полученная схема
является схемой TVD.
TVD ограничитель, по сути, регулирует участие дисперсионной
составляющей схемы Лакса – Вендроффа, т.е. либо полностью отключает её и
остаётся только диффузионная составляющая (явная схема с левой разностью),
либо полностью задействует, либо возьмёт от неё лишь какую-то долю.
Проанализируем, на каком шаге, какую долю дисперсионной составляющей
задействует данный ограничитель, для этого выведем на график перенесённого

профиля дополнительно ещё и значения функции ϕ(r) в каждой ячейке (рисунок


2.19).

Лист
09.03.01.2018.111.00 ПЗ 76
Изм. Лист № докум. Подпись Дата
Рисунок 2.19
Если вспомнить график решения по схеме Лакса – Вендроффа без
ограничителя, то можно заметить, что ограничитель действует на месте, где
возникали колебания, причём сам профиль немного «переезжает» до своего
точного решения, однако, довольно точно повторяет его.
Проведём аналогичные рассуждения для профиля экспонента.
Посчитаем TV(u) и выведем её значения в каждый момент времени на график
(рисунок 2.20).
Видно, что условие TVD выполняется, следовательно, полученная схема
является схемой TVD и для данного профиля.
Проанализируем, на каком шаге, какую долю дисперсионной составляющей
задействует данный ограничитель, для этого выведем на график перенесённого

профиля дополнительно ещё и значения функции ϕ(r) в каждой ячейке (рисунок


2.21).

Лист
09.03.01.2018.111.00 ПЗ 77
Изм. Лист № докум. Подпись Дата
Рисунок 2.20

Рисунок 2.21
Если вспомнить график решения по схеме Лакса – Вендроффа без
ограничителя, то можно заметить, что ограничитель действует на месте, где
возникал сдвиг экспоненты.

Лист
09.03.01.2018.111.00 ПЗ 78
Изм. Лист № докум. Подпись Дата
2.4.4 Сравнение разных видов TVD – ограничителей
Проведём анализ на точность схем в целом, для этого посчитаем ошибки в
норме L1 (поскольку данная норма наименее строга по сравнению с остальными)
всех трёх схем на разных сетках для двух профилей: «П» и экспонента. Полученные
данные запишем в таблицы (таблица 2.43 – 2.44).
Таблица 2.43 ошибки в норме L1. Профиль «П»
Сетка minmod superbee vanAlbada
10 0.3528850565875133 0.1594306757260844 0.2379326693123987
20 0.1555322135199440 0.0766470983800186 0.1341802414424949
40 0.0989405742007363 0.0404817480364035 0.0818414081527524
80 0.0632122919654260 0.0209979844404589 0.0499153376996465
160 0.0402510013522173 0.0108124349996742 0.0302411387311505
320 0.0255705389946291 0.0057192852118547 0.0182388854590285
640 0.0162160460435464 0.0028637508246573 0.0109699377766205
1280 0.0102679390740261 0.0014202604096626 0.0065874027250803
2560 0.0064947551390162 0.0006910447543650 0.0039535669441586
5120 0.0041045096736971 0.0003512434650460 0.0023737418785971

Анализируя полученные данные можно заметить, что для профиля «П» схема
с ограничителем superbee наиболее точна, на втором месте по точности стоит схема
с ограничителем vanAlbada и наименее точный результат получен у схемы с
ограничителем minmod.
Таблица 2.44 Ошибки в норме L1. Профиль экспонента
Сетка minmod superbee vanAlbada
10 0.1708060143486733 0.1344628848236806 0.1640698427458879
20 0.1008458292906067 0.0473873964203957 0.0875736359104670
40 0.0484455524331420 0.0232620785275121 0.0346015383836023
80 0.0171881185706726 0.0095238087943231 0.0103382575035656
160 0.0055459633969477 0.0037894264228787 0.0028801699398822
320 0.0018655626581873 0.0014190019445259 0.0007192858859892
640 0.0005170856398318 0.0004014456956402 0.0001718527910442
1280 0.0001402618301023 0.0001088968908657 0.0000403585853276
2560 0.0000375384277127 0.0000283250886225 0.0000092896676633
5120 0.0000098500526320 0.0000072236929769 0.0000021212128715

Лист
09.03.01.2018.111.00 ПЗ 79
Изм. Лист № докум. Подпись Дата
Для профиля экспонента схема с ограничителем vanAlbada наиболее точна,
на втором месте по точности стоит схема с ограничителем superbee и наименее
точный результат получен у схемы с ограничителем minmod.
Аналогично сравним схемы с левой разностью и Лакса-Вендроффа, а также
схему с ограничителем для профилей экспонента и «П». Т.к. для профиля «П»
наиболее точная схема получилась с ограничителем superbee, а для профиля
экспонента – схема с ограничителем vanAlbada, сравнивать будем с ними. Для
сравнения используем таблицы (таблица 2.45 – 2.46).
Таблица 2.45 Ошибки в норме L1. Профиль «П»
Сетка Левая разность Лакс-Вендрофф superbee
10 0.234039101747369 0.236454892412426 0.1594306757260844
20 0.168114051387309 0.158013978704723 0.0766470983800186
40 0.119234872311572 0.100150839534952 0.0404817480364035
80 0.083981616701090 0.069851298877798 0.0209979844404589
160 0.059496953862020 0.044972429107141 0.0108124349996742
320 0.042109005235275 0.029169624731358 0.0057192852118547
640 0.029786710583521 0.018857566483580 0.0028637508246573
1280 0.021062925686496 0.012280366426400 0.0014202604096626
2560 0.234039101747369 0.236454892412426 0.0006910447543650
5120 0.168114051387309 0.158013978704723 0.0003512434650460

Отчётливо видно, что схема с ограничителем ни в какое сравнение не идет со


схемами с левой разностью и Лакса-Вендроффа будучи на три порядка более
точной.
Таблица 2.46 Невязки в норме L1. Профиль экспонента
Сетка Левая разность Лакс-Вендрофф vanAlbada
10 0.208323200518996 0.235845677110544 0.1640698427458879
20 0.163524426863536 0.149504467935403 0.0875736359104670
40 0.121190968412482 0.062661451088182 0.0346015383836023
80 0.082705161802397 0.018324983576332 0.0103382575035656
160 0.051662864302191 0.005639914280707 0.0028801699398822
320 0.029813667784137 0.002669027454047 0.0007192858859892
640 0.016227856402709 0.001108672176345 0.0001718527910442
1280 0.008502181993251 0.000475306335912 0.0000403585853276
2560 0.004357019226522 0.000187950413504 0.0000092896676633
5120 0.002206244726705 0.000051089247206 0.0000021212128715

Лист
09.03.01.2018.111.00 ПЗ 80
Изм. Лист № докум. Подпись Дата
Здесь видно, что схема с ограничителем более точна, чем схемы с левой
разностью и Лакса-Вендроффа будучи на порядок более точной.
Сравним все три схемы, выведя их на один график, т.к. отличия практически
не различимы, рассмотрим один из углов профиля в увеличенном масштабе
(рисунок 2.22).

Рисунок 2.22
Здесь графически показано, что действительно superbee наиболее точен для
разрывного профиля «П».
Аналогично для профиля экспонента выведем её вершину (рисунок 2.23).

Рисунок 2.23

Лист
09.03.01.2018.111.00 ПЗ 81
Изм. Лист № докум. Подпись Дата
По графику довольно тяжело определить кто точнее, однако, отчетливо
видно, как superbee «сквадрачивает» экспоненту, minmod хоть и довольно точен,
однако, не «дотягивает» до точного решения, а vanAlbada находится между ними.

2.5 Результаты выполненного анализа


Выше был проведён комплексный сравнительный анализ всех
рассмотренных в первой главе разностных схем. Поскольку нам необходимо
значительно ускорить вычисления при дальнейшей программной реализации, цель
данного анализа выбрать наиболее оптимальную схему для расчёта искомых
параметров на ЭВМ.
Из уравнений (1.1) – (1.5) видно, что наиболее простыми для счёта являются
явные схемы, что и подтвердилось в процессе их подробного рассмотрения, т.к. в
них искомая неизвестная величина явно выражается через известные величины,
причём наиболее эффективно расчёт будет проводиться по схемам с левой и правой
разностью, ибо в них, во-первых, используется только текущее и предыдущее, либо
следующее значение, а в схеме Лакса – Вендроффа используются и текущее, и
предыдущее, и следующее. Во-вторых, уравнения (1.1) и (1.2) по своей структуре
(даже при их совместном использовании) являются проще, чем уравнение (1.3), что
тоже, несомненно, скажется на скорости счёта. В-третьих, схема Лакса –
Вендроффа «гладко» (без осцилляций) и, соответственно, максимально точно
работает только с TVD – ограничителями, что серьёзно усложняет саму программу
и, как следствие, увеличивает время её выполнения.
Касаемо рассмотренных неявных схем, здесь их использование крайне
неэффективно, несмотря на их абсолютную устойчивость, т.к. для ведения расчётов
по ним необходимо решать систему уравнений, т.е. при расчёте на ЭВМ
оперировать с матрицами. На текущий момент эффективно работать с матрицами
можно, переведя расчёты с центрального процессора на видео процессоры, однако,
поскольку на предприятии расчёты будут проводиться на супер-ЭВМ, в которых,
как правило, отсутствуют видео процессоры, придётся признать неявные схемы
неэффективными.
Вывод: для программной реализации наиболее подходят явная левая и правая
схемы (для переноса против оси – правая, а для переноса по оси – левая). Запишем,
приведённые выше уравнения (1.1) и (1.2) в разностном виде для вычисления по
данным схемам.

Лист
09.03.01.2018.111.00 ПЗ 82
Изм. Лист № докум. Подпись Дата
2.6 Составление разностных аппроксимаций
Аналогично работе, проделанной в пунктах 1.1.1 и 1.1.2 выведем уравнения
для выбранных разностных схем на основе известного уравнения переноса
излучения:
1 I I
    I  0.
с t x
Для схемы с левой разностью:
1 I i j 1  I i j I j  I i j 1
 i   I i j 1  0,
c t x
ct
I i j 1  I i j   K ( I i j  I i j 1 )   I i j 1ct  0, K  ,
x
I i j 1 (1   ct )  I i j   KI i j   KI i j  0,
I i j 1 (1   ct )  I i j   KI i j   KI i j 1 ,
j 1 (1   K ) I i j   KI i j 1
Ii  .
1   ct
Для схемы с правой разностью:
1 I i j 1  I i j I i j 1  I i j
   I i j 1  0,
c t x
ct
I i j 1  I i j   K ( I i j 1  I i j )   I i j 1ct  0, K  ,
x
I i j 1 (1   ct )  I i j   KI i j 1   KI i j  0,
I i j 1 (1   ct )  I i j   KI i j 1   KI i j ,
j 1 (1   K ) I i j   KI i j 1
Ii  .
1   ct

Вывод по разделу два


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

Лист
09.03.01.2018.111.00 ПЗ 83
Изм. Лист № докум. Подпись Дата
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
Программная реализация осуществлена в рамках данной работы в полном
объёме самостоятельно, в виду невозможности предоставления предприятием
исходного кода. Работа выполнена таким образом, чтобы имела тот функционал,
который был назван руководителем выпускной квалификационной работы.

3.1 Программа на основе DSn метода


3.1.1 Блок – схема алгоритма программы
Как правило, невозможно создать какое-либо адекватное приложение без
предварительно составленного алгоритма его работы, в качестве наиболее
наглядного и распространённого описания алгоритмов работы программ
выступают блок-схемы. Мной, соответственно, тоже была составлена блок-схема
алгоритма программы, она приведена на рисунке 3.1.

Рисунок 3.1 – Блок – схема программы


Лист
09.03.01.2018.111.00 ПЗ 84
Изм. Лист № докум. Подпись Дата
3.1.2 Перенос интенсивности излучения
Рассмотрим задачу о распространении излучения в плоской геометрии в
нерассеивающей среде, положив скорость света равной единице (с = 1). В
начальный момент времени интенсивность излучения равна нулю. Задача
дополнялась граничными условиями 𝐼𝑙𝑒𝑓𝑡 (𝜇, 𝑡) = 1.
Расчеты проводились в области x [0.0 ; 5.0] . Задача рассчитывалась до
наступления стационара.
На рисунке 3.2 представлен график решения уравнения переноса излучения
для интенсивности при фиксированном направлении распространения излучения µ
= 0.75, коэффициенте поглощения ϰ = 2 и фиксированном числе Куранта, равному
0.8. Сетка при каждом следующем расчете увеличивалась в два раза (N = 80, 160,
…, 20480). Также на графике отображено аналитическое решение.

Рисунок 3.2 – График интенсивности


Поскольку на данном графике, характеристика изображена слишком мелко,
было принято решение увеличить масштаб, для наглядности (рисунок 3.3).
Из увеличенного графика прекрасно видно, что чем выше количество точек,
тем больше точность. Вследствие того, что моё вычислительное устройство может
рассчитать максимум 20480 точек, то в дальнейшем будет использоваться именно
эта сетка.

Лист
09.03.01.2018.111.00 ПЗ 85
Изм. Лист № докум. Подпись Дата
Рисунок 3.3 – Увеличенный график интенсивности
3.1.3 Перенос плотности излучения

На рисунках 3.4 и 3.5 представлен график решения уравнения переноса для


плотности излучения при увеличении сетки по углам и постоянной сетки по
пространству N = 20480. Сетка по угловой переменной увеличивалась в два раза,
начиная со значений M = 10 до значений M = 160. Расчет проводился при
коэффициенте поглощения среды 𝜘 = 2 и числе Куранта равном 0.8. Как можно
видеть, чем подробнее сетка, тем решение ближе к точному.

Рисунок 3.4 – График плотности


Лист
09.03.01.2018.111.00 ПЗ 86
Изм. Лист № докум. Подпись Дата
Рисунок 3.5 – Увеличенный график плотности

3.2 Программа на основе метода квазидиффузии


3.2.1 Блок – схема алгоритма программы
Данная программа была написана на основе предыдущей путём введения
модификаций, причём алгоритм квазидиффузии, что логично, работает только если
от программы требуется расчёт по нескольким углам, поэтому ветку алгоритма для
расчёта по одному углу было принято решение убрать из данной блок – схемы
(рисунок 3.6). На рисунке 3.6 сокращение КД обозначает «квазидиффузии».
3.2.2 Перенос плотности излучения

На рисунках 3.7 и 3.8 представлен график решения системы уравнений


квазидиффузии для плотности излучения, аналогичные расчёты по DSn методу, а
также аналитическое решение. При сетке по углам для DSn метода M = 160 и сетки
по пространству для обоих методов N = 1280. Расчет проводился при коэффициенте
поглощения среды 𝜘 = 2 и числе Куранта равном 0.8. Как можно видеть, наиболее
ближе к точному решение DSn методом, однако, в качестве оправдания метода
квазидиффузии можно сказать, что сам метод был реализован с меньшей
точностью, т.к. в идеале необходимо рассчитывать коэффициенты квазидиффузии
на каждом временном слое, здесь же коэффициенты рассчитываются один раз,
используя значения интенсивности последнего слоя.
Лист
09.03.01.2018.111.00 ПЗ 87
Изм. Лист № докум. Подпись Дата
Рисунок 3.6 – Блок – схема программы

Лист
09.03.01.2018.111.00 ПЗ 88
Изм. Лист № докум. Подпись Дата
Рисунок 3.7 – График плотности

Рисунок 3.8 – Увеличенный график плотности

Лист
09.03.01.2018.111.00 ПЗ 89
Изм. Лист № докум. Подпись Дата
3.3 Сравнительный анализ метода квазидиффузии и DSn
На основании проделанных выше опытов можно сделать вывод, что оба
метода в целом выдают один и тот же результат, однако, адекватная программная
реализация метода квазидиффузии является сложнее, а на выходе имеется тот же
результат, что и у DSn, тем более, что без расчёта коэффициентов квазидиффузии
последним метод является не рабочим. Несмотря на это данный метод имеет свои
плюсы, например, коэффициенты квазидиффузии для конкретной задачи можно
насчитать один раз и в дальнейшем, для данной задачи разумеется, не
пересчитывать, в этом случае данный метод является более эффективным чем DSn.
Подобные итерационные процессы требуются для расчёта таких характеристик
излучения как температура.
Листинг разработанной в ходе данной главы программы представлен в
приложении Б.

Вывод по разделу три


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

Лист
09.03.01.2018.111.00 ПЗ 90
Изм. Лист № докум. Подпись Дата
ЗАКЛЮЧЕНИЕ
Таблица З – Сравнение имеющийся и разработанной программ
Время, с
Количество углов Последовательная Параллельная
программа программа
1 0.377 0.509
2 3.283 0.530
8 10.712 0.598
32 47.284 0.637
128 154.125 1.073
256 284.667 1.729

Согласно таблице З можно сделать вывод, что первая цель данной работы
была полностью достигнута, судя последней строке данной таблицы удалось
достигнуть ускорения процесса моделирования больше чем в 160 раз, что
непременно скажется на экономии ресурсов предприятия, т.к. расчёты на
предприятии будут проводится на супер-ЭВМ, чей основной ресурс – это, как раз-
таки, время работы.
Вторая цель данной работы тоже была успешно достигнута, метод
квазидиффузии был запрограммирован, и, в результате анализа его работы, был
сделан вывод, что данный метод способен эффективно работать только для расчёта
тех характеристик излучения, для которых требуется итерационный процесс.

Лист
09.03.01.2018.111.00 ПЗ 91
Изм. Лист № докум. Подпись Дата
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1 Галанин, М.П. Методы численного анализа математических моделей /
М.П. Галанин, Е.Б. Савенков. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2010. – 591 с.
2 Потабенко, Н.А. Численные методы. Решение задач линейной алгебры и
уравнений в частных производных: Тексты лекций / Н.А. Потабенко. – М.: Изд-во
МАИ, 1997. – 88 с.
3 Калиткин, Н.Н. Численные методы / Н.Н. Калиткин. – М.: Изд-во «Наука».
Главная редакция физико-математической литературы, 1978. – 512 с.
4 Самарский, А.А. Разностные методы решения задач газовой динамики /
А.А. Самарский, Ю.П. Попов. – М.: Книжный дом «ЛИБРОКОМ», 2009. – 424 с.
5 Поттер, Д. Вычислительные методы в физике / Д. Поттер. – М.: Изд-во
«Мир», 1975. – 392 с.
6 Флетчер, К. Вычислительные методы в динамике жидкостей. Том 2 /
К. Флетчер. – М. : Изд-во «Мир», 1991. – 552 с.
7 Toro, E.F. Riemann Solvers and Numeriсal Methods for Fluid Dynamiсs /
E.F. Toro. – Luxembourg: Springer, 1999. – 724 p.
8 Зельдович, Я.Б. Физика ударных волн и высокотемпературных
гидродинамических явлений / Я.Б. Зельдович, Ю.П. Райзер. – М.: Наука, 1966. –
688 с.
9 Суржиков, С.Т. Тепловое излучение газов и плазмы /
С.Т. Суржиков. – М: Изд-во МГТУ им. Н. Э. Баумана, 2004. – 544 с.
10 Абрамовиц, Н. Справочник по специальным функциям /
Н. Абрамовиц, И. Стиган. – М.: Наука, 1979. – 832 с.
11 Сафронов, А.В. Оценка точности и сравнительный анализ разностных
схем сквозного счёта повышенного порядка / А.В. Сафронов // Вычислительные
методы и программирование. – 2010. – Т.11. – С. 137-143.
12 Потабенко, Н.А. Численные методы. Решение задач линейной
алгебры и уравнений в частных производных / Н.А. Потабенко. – М.: Изд-во МАИ,
2012. – 88 с.
13 Завьялов, В.В. Результаты численных расчетов одномерных тестовых
задач переноса излучения / В.В. Завьялов, М.Ю. Козманов, В.Н. Селезнев,
В.Е. Черняков, А.А. Шестаков // Научно – технический сборник: Вопросы атомной
науки и техники. Серия: Математическое моделирование физических процессов. –
2005. – В.3. – С. 26-36.
14 Карлыханов, Н.Г. Применение метода квазидиффузии для решения задач
переноса излучения. / Н.Г. Карлыханов // Научно – технический сборник: Вопросы
атомной науки и техники. Серия: Математическое моделирование физических
процессов. – 2010. – В.1. – С. 32-38.

Лист
09.03.01.2018.111.00 ПЗ 92
Изм. Лист № докум. Подпись Дата
15 Gerald, N.M. Maximum entropy Eddington faсtors / N.M. Gerald. – U.S.A.:
Las Alamos Sсientifiс Laboratory, 1977. – 8 р.
16 Levermore, С.D. Relating Eddington faсtors to flux limiters /
С.D. Levermore // Journal of Quantitative Speсtrosсopy and Radiative Transfer. – 1983.
– vol.31. – pр. 149-160.
17 Audit, E. Reformulation of the M1 model of radiative transfer /
E. Audit, T. Hanawa // Journal of Quantitative Speсtrosсopy and Radiative Transfer. –
2014. – vol.145. – pр. 9-16.
18 Исакова, А.С. Сравнительный анализ квазидиффузионного подхода и
метода усредненных косинусов для решения кинетического уравнения переноса
излучения / А.С. Исакова, Н.Г. Карлыханов // Научно – технический сборник:
Вопросы атомной науки и техники. Серия: Математическое моделирование
физических процессов. – 2013. – В.3. – С. 16-29.
19 Levermore, С.D. А flux limited diffusion theory / С.D. Levermore //
Astrophysiсal Journal. Lawrenсe Livermore National Laboratory, U.S.A. – 1981. –
P.1.vol.248. – pр. 321-334.
20 Гольдин, В.Я. Квазидиффузионный метод решения кинетического
уравнения / В.Я. Гольдин // Журнал вычислительная математика и мат. Физика. –
1964. – Т.4.№ 6. – С. 1078-1087.

Лист
09.03.01.2018.111.00 ПЗ 93
Изм. Лист № докум. Подпись Дата
ПРИЛОЖЕНИЯ

ПРИЛОЖЕНИЕ А. Листинг вспомогательной программы


#inсlude "stdafx.h"
#inсlude <iostream>
#inсlude "math.h"
#inсlude <fstream>
#inсlude <string>
#inсlude <iomanip>
#inсlude <veсtor>
using namespaсe std;
string f;
int r1, r2, r3, r4, r5, r6, r7, r8, r10;
string r9;

double fi (double r)
{
double ans = 0.0;
if (r <= 0) ans = 0;
if (r > 0 && r < 1) ans = r;
if (r >= 1) ans = 1;
return ans;
}
double fsb (double r)
{
double ans = 0.0;
double ans1 = 0.0;
double ans2 = 0.0;
if (2*r < 1) ans1 = 2*r;
if (2*r > 1) ans1 = 1;
if (r < 2) ans2 = r;
if (r > 2) ans2 = 2;
if (ans1 < 0 && ans2 < 0) ans = 0;
if (ans1 > 0 && ans1 > ans2) ans = ans1;
if (ans2 > 0 && ans2 > ans1) ans = ans2;
return ans;
}
double fva (double r)
{
double ans = 0.0;
if (r <= 0) ans = 0;
if (r > 0) ans = r*(1+r)/(1+r*r);
return ans;
}

veсtor <double> gaus(veсtor <veсtor <double>> A, veсtor <double> B, veсtor <double> X, int N)
{
double buff = 0;
veсtor <double> buf;
buf.resize(N);
veсtor <double> baf;
baf.resize(N);
double g = 0.0;
int v = 0;
double summ = 0.0;

for (int i = 0; i < N-1; i++)


{

if (A[i][i] == 0)
{
for (int vi = i+1; vi < N; vi++)
{
if (A[vi][i] != 0)
{
for (int vj = 0; vj < N; vj++)
{
baf[vj] = A[vi][vj];
}
v = vi;
}
}
g = B[v];
for (int j = 0; j < N; j++)
{
buf[j] = A[i][j];

Лист
09.03.01.2018.111.00 ПЗ 94
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
A[i][j] = baf[j];
A[v][j] = buf[j];
}
B[v] = B[i];
B[i] = g;
}
}

for (int i = 0; i < N-1; i++)


{
buff = A[i][i];
for (int j = 0; j < N; j++)
{
A[i][j] = A[i][j] / buff;
}
B[i] = B[i] / buff;
if (A[i+1][i] != 0)
{
buff = A[i+1][i];
for (int j = 0; j < N; j++)
{
A[i+1][j] = A[i+1][j] - A[i][j] * buff;
}
B[i+1] = B[i+1] - B[i] * buff;
}
}

for (int i = 0; i < N; i++)


{
for (int j = 0; j < N; j++)
{
summ = summ + A[i][j];
}
if (summ == 0)
{
return X;
}
summ = 0;
}

B[N-1] = B[N-1] / A[N-1][N-1];


A[N-1][N-1] = 1;
buff = 0;
for (int i = N-1; i >= 0; i--)
{
for (int j = N-1; j > i; j--)
{

buff = buff + A[i][j] * X[j];

X[i] = B[i] - buff;


buff = 0;
}
return X;
}

string getсhar(int с)
{
bool сount = 0;
if ( с < 0) {с=с*(-1); сount=1;};
switсh (с)
{
сase 0: {f = '0'; break;}
сase 1: {f = '1'; break;}
сase 2: {f = '2'; break;}
сase 3: {f = '3'; break;}
сase 4: {f = '4'; break;}
сase 5: {f = '5'; break;}
сase 6: {f = '6'; break;}
сase 7: {f = '7'; break;}
сase 8: {f = '8'; break;}
сase 9: {f = '9'; break;}
}
if (сount == 1) { сount = 0; f = "-" + f;};
return f;
}
string getras(double lk)

Лист
09.03.01.2018.111.00 ПЗ 95
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
{
r1 = int(((lk*1000)-int(lk*10000)/10)*10);
r2 = int(((lk*100)-int(lk*10000)/100)*10);
r3 = int(((lk*10)-int(lk*10000)/1000)*10);
r4 = int((lk-int(lk))*10);
r5 = int(((lk/10.0)-int(lk/10))*10);
r6 = int(((lk/100.0)-int(lk/100))*10);
r7 = int(((lk/1000.0)-int(lk/1000))*10);
r8 = int(((lk/10000.0)-int(lk/10000))*10);
r10 = int(lk/10000.0);
if (r10 != 0) {r9 = getсhar(r10) + getсhar(r8) + getсhar(r7) + getсhar(r6) + getсhar(r5)
+ "_" + getсhar(r4) + getсhar(r3) + getсhar(r2) + getсhar(r1);};
if (r10 == 0) {r9 = getсhar(r8) + getсhar(r7) + getсhar(r6) + getсhar(r5) + "_" +
getсhar(r4) + getсhar(r3) + getсhar(r2) + getсhar(r1);};
if (r10 == 0 && r8 == 0) {r9 = getсhar(r7) + getсhar(r6) + getсhar(r5) + "_" + getсhar(r4)
+ getсhar(r3) + getсhar(r2) + getсhar(r1);};
if (r10 == 0 && r8 == 0 && r7 == 0) {r9 = getсhar(r6) + getсhar(r5) + "_" + getсhar(r4) +
getсhar(r3) + getсhar(r2) + getсhar(r1);};
if (r10 == 0 && r8 == 0 && r7 == 0 && r6 == 0) {r9 = getсhar(r5) + "_" + getсhar(r4) +
getсhar(r3) + getсhar(r2) + getсhar(r1);};
if (r1 == 0 && r2 == 0 && r3 == 0 && r4 == 0)
{
if (r10 != 0) {r9 = getсhar(r10) + getсhar(r8) + getсhar(r7) + getсhar(r6) +
getсhar(r5);};
if (r10 == 0) {r9 = getсhar(r8) + getсhar(r7) + getсhar(r6) + getсhar(r5);};
if (r10 == 0 && r8 == 0) {r9 = getсhar(r7) + getсhar(r6) + getсhar(r5);};
if (r10 == 0 && r8 == 0 && r7 == 0) {r9 = getсhar(r6) + getсhar(r5);};
if (r10 == 0 && r8 == 0 && r7 == 0 && r6 == 0) {r9 = getсhar(r5);};

}
return r9;
}

int main()
{
сout.setf(ios::fixed | ios::showpoint);
сout.preсision(3);
setloсale(LС_ALL, "rus");
double Xn, Xk, a, K, Te, l1, l2, y1, y2;
сhar text[100];
int N, vf, vs;
ifstream fin("data.txt");
fin >>text>> Xn >>text>> Xk >>text>> N >>text>> a >>text>> K >>text>> Te >>text>> vs
>>text>> vf >>text>> l1 >>text>> l2 >>text>> y1 >>text>> y2;
fin.сlose();

ofstream lout("axis.txt");
lout << y2+1 << endl << Xk << endl;
veсtor <double> uo;
uo.resize(N);
veсtor <double> un;
un.resize(N);
veсtor <double> ut;
ut.resize(N);
veсtor <double> x;
x.resize(N);
veсtor <double> p;
p.resize(N);
veсtor <double> TVu;

veсtor <veсtor <double>> A;


A.resize(N);
for(int i=0;i<N;i++)
{A[i].resize(N);}
double dx = (Xk - Xn) / N;
double dt = K*dx / fabs(a);
double y12 = (y2 + y1) / 2;
double l12 = (l2 + l1) / 2;
double l11 = ((l2 - l1) / 3) + l1;
double l22 = l2 - ((l2 - l1) / 3);

string filename = "prof" + getсhar(vf) + "_sсh" + getсhar(vs) + "_a" + getras(a) + "_K" +


getras(K) + "_N" + getras(N) + ".txt";
string filenam = "prof" + getсhar(vf) + "_sсh" + getсhar(vs) + "_a" + getras(a) + "_K" +
getras(K) + "_N" + getras(N) + "norm" + ".txt";
string filena = "prof" + getсhar(vf) + "_sсh" + getсhar(vs) + "_a" + getras(a) + "_K" +
getras(K) + "_N" + getras(N) + "TVu" + ".txt";

Лист
09.03.01.2018.111.00 ПЗ 96
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
for (int l=0; l<N; l++)
{
x[l]=(dx/2)+dx*l;
}
if (vf==1)
{
for (int n = 0; n < N; n++)
{
if ((x[n] >= Xn && x[n] < l1) || (x[n] >= l2 && x[n] < Xk)) { uo[n] = y1;
};
if (x[n] >= l1 && x[n] < l2) { uo[n] = y2; };
};
}
else if (vf == 2)
{
for (int n = 0; n < N; n++)
{
if ((x[n] >= Xn && x[n] < l1) || (x[n] >= l2 && x[n] < Xk)) { uo[n] = y1;
};
if (x[n] >= l1 && x[n] < (l2+l1)/2) { uo[n] = (((x[n]-l1)*(y12-y2))/(l12-
l1))+y2; };
if (x[n] >= l12 && x[n] <= l2) { uo[n] = (((x[n]-l12)*(y2-y12))/(l2-
l12))+y12; };
};
}
else if (vf == 3)
{
for (int n = 0; n < N; n++)
{
uo[n] = exp(-pow((x[n]-l12),2.0))+y1;
}
}
else if (vf == 4)
{
for (int n = 0; n < N; n++)
{
if ((x[n] >= Xn && x[n] < l1) || (x[n] >= l2 && x[n] <= Xk)) { uo[n] = y1;
};
if (x[n] >= l1 && x[n] < l12) { uo[n] = (((x[n] - l1) * (y2 - y1)) / (l12
- l1)) + y1; };
if (x[n] >= l12 && x[n] < l2) { uo[n] = (((x[n] - l12) * (y1 - y2)) / (l2
- l12)) + y2; };
}
}
else if (vf == 5)
{
for (int n = 0; n < N; n++)
{
if ((x[n] >= Xn && x[n] < l1) || (x[n] >= l2 && x[n] < Xk)) { uo[n] = y1;
};
if (x[n] >= l1 && x[n] < l2) { uo[n] = exp(-((x[n]-l12)*(x[n]-l12)))+y1;
};
}
}
else if (vf == 6)
{
for (int n = 0; n < N; n++)
{
uo[n]=-сos(2*3.14159265358979323846*x[n]/(Xk-Xn))+y1;
}
}
else
{
ofstream fout(filename.с_str());
fout << "Ошибка! Форма отсутствует!" << endl;
return 0;
}

for (int fa = 0; fa < N; fa++)


{
ut[fa] = uo[fa];
}
for (int i = 0; i < N; i++)
{
p[i] = 0;
}
double Tt = 0;
int jo = int(Te/dt);

Лист
09.03.01.2018.111.00 ПЗ 97
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
TVu.resize(jo+1);
double od = Te/dt - jo;
double Tr=Te;
K=(a*dt)/dx;
if (vs == 1)
{
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);
for (int с = 0; с < N; с++)
{
fout << x[с] << " ";
}
fout << " " << endl;
for (int p = 0; p < N; p++)
{
fout << uo[p] << " ";
}
fout << " " << endl;
for (int y = 0; y < jo; y++)
{
un[0] = (1 - K)*uo[0] + K*uo[N-1];
for (int g = 1; g < N; g++)
{
un[g] = (1 - K)*uo[g] + K*uo[g-1];
}
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
}
}
if ( fabs(od) >= 1.e-6)
{
Tr=jo*dt;
K=(a*(Te-Tr))/dx;
un[0] = (1 - K)*uo[0] + K*uo[N-1];
for (int g = 1; g < N; g++)
{
un[g] = (1 - K)*uo[g] + K*uo[g-1];
}
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
}
}
for (int m = 0; m < N; m++)
{
fout << uo[m] << " ";
}
fout << " " << endl;
}
else if ( vs == 2)
{
ofstream hout(filename.с_str());
hout.setf(ios::fixed | ios::showpoint);
hout.preсision(16);
for (int с = 0; с < N; с++)
{
hout << x[с] << " ";
}
hout << " " << endl;
for (int p = 0; p < N; p++)
{
hout << uo[p] << " ";
}
hout << " " << endl;
for (int y = 0; y < jo; y++)
{
un[N-1] = (1 + K)*uo[N-1] - K*uo[0];
for (int g = 0; g < N-1; g++)
{
un[g] = (1 + K)*uo[g] - K*uo[g+1];
}
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
}

Лист
09.03.01.2018.111.00 ПЗ 98
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
}
if ( fabs(od) >= 1.e-6)
{
Tr=jo*dt;
K=(a*(Te-Tr))/dx;
un[N-1] = (1 - K)*uo[N-1] + K*uo[0];
for (int g = 1; g < N-1; g++)
{
un[g] = (1 - K)*uo[g] + K*uo[g+1];
}
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
}

}
for (int m = 0; m < N; m++)
{
hout << uo[m] << " ";
}
hout << " " << endl;

}
else if (vs == 3)
{
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);
for (int с = 0; с < N; с++)
{
fout << x[с] << " ";
}
fout << " " << endl;
for (int p = 0; p < N; p++)
{
fout << uo[p] << " ";
}
fout << " " << endl;
for (int y = 0; y < jo; y++)
{
un[0] = uo[0] - K*(uo[0] - uo[N-1]) - (0.5*K*(1-K)*(uo[1] - uo[0]) -
0.5*K*(1-K)*(uo[0] - uo[N-1]));
un[N-1] = uo[N-1] - K*(uo[N-1] - uo[N-2]) - (0.5*K*(1-K)*(uo[0] - uo[N-1])
- 0.5*K*(1-K)*(uo[N-1] - uo[N-2]));
for (int g = 1; g < N-1; g++)
{
un[g] = uo[g] - K*(uo[g] - uo[g-1]) - (0.5*K*(1-K)*(uo[g+1] - uo[g])
- 0.5*K*(1-K)*(uo[g] - uo[g-1]));
}
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
}
}
if ( fabs(od) >= 1.e-6)
{
Tr=jo*dt;
K=(a*(Te-Tr))/dx;
un[0] = uo[0] - 0.5*K*((uo[1]+uo[0])-K*(uo[1]-uo[0])-(uo[0]+uo[N-
1])+K*(uo[0]-uo[N-1]));
un[N-1] = uo[N-1] - 0.5*K*((uo[0]+uo[N-1])-K*(uo[0]-uo[N-1])-(uo[N-
1]+uo[N-2])+K*(uo[N-1]-uo[N-2]));
for (int g = 1; g < N-1; g++)
{
un[g] = uo[g] - 0.5*K*((uo[g+1]+uo[g])-K*(uo[g+1]-uo[g])-
(uo[g]+uo[g-1])+K*(uo[g]-uo[g-1]));
}
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
}

}
for (int m = 0; m < N; m++)
{
fout << uo[m] << " ";
}
fout << " " << endl;

Лист
09.03.01.2018.111.00 ПЗ 99
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
}
else if (vs == 4)
{
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);

for (int с = 0; с < N; с++)


{
fout << x[с] << " ";
}
fout << " " << endl;
for (int p = 0; p < N; p++)
{
fout << uo[p] << " ";
}
fout << " " << endl;
for (int i = 0; i < N; i++)
{
un[i] = 0;
for (int j = 0; j < N; j++)
{
A[i][j] = 0;
}
}
A[0][0] = 1+K;
A[0][N-1] = -K;
for (int i = 1; i < N; i++)
{
A[i][i] = 1+K;
A[i][i-1] = -K;
}
for (int y = 0; y < jo; y++)
{

un = gaus(A, uo, un, N);

if (un == p)
{
fout << "Решения нет !!!" << endl;
return 0;
}

for (int f = 0; f < N; f++)


{
uo[f] = un[f];
un[f] = 0.0;
}
}

if ( fabs(od) >= 1.e-6)


{
Tr=jo*dt;
K=(a*(Te-Tr))/dx;
A[0][0] = 1+K;
A[0][N-1] = -K;
for (int i = 1; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if ( i == j )
{
A[i][j] = 1+K;
}
if ( i == j+1)
{
A[i][j] = -K;
}
}
}
un = gaus(A, uo, un, N);
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
un[f] = 0.0;
}
}
for (int m = 0; m < N; m++)

Лист
09.03.01.2018.111.00 ПЗ 100
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
{
fout << uo[m] << " ";
}
fout << " " << endl;
}
else if (vs == 5)
{
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);

for (int с = 0; с < N; с++)


{
fout << x[с] << " ";
}
fout << " " << endl;
for (int p = 0; p < N; p++)
{
fout << uo[p] << " ";
}
fout << " " << endl;
for (int i = 0; i < N; i++)
{
un[i] = 0;
for (int j = 0; j < N; j++)
{
A[i][j] = 0;
}
}

for (int i = 0; i < N-1; i++)


{
A[i][i] = 1-K;
A[i][i+1] = K;
}
A[N-1][N-1] = 1-K;
A[N-1][0] = K;

for (int y = 0; y < jo; y++)


{

un = gaus(A, uo, un, N);

if (un == p)
{
fout << "Решения нет !!!" << endl;
return 0;
}

for (int f = 0; f < N; f++)


{
uo[f] = un[f];
un[f] = 0.0;
}

for (int m = 0; m < N; m++)


{
fout << uo[m] << " ";
}
fout << " " << endl;
}

if ( fabs(od) >= 1.e-6)


{
Tr=jo*dt;
K=(a*(Te-Tr))/dx;
A[0][0] = 1-K;
A[0][N-1] = K;
for (int i = 1; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if ( i == j )
{
A[i][j] = 1-K;
}
if ( i == j+1)
{

Лист
09.03.01.2018.111.00 ПЗ 101
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
A[i][j] = K;
}
}
}
un = gaus(A, uo, un, N);
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
un[f] = 0.0;
}

for (int m = 0; m < N; m++)


{
fout << uo[m] << " ";
}
fout << " " << endl;
}
}
else if (vs == 6)
{
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);
ofstream sout(filena.с_str());
sout.setf(ios::fixed | ios::showpoint);
sout.preсision(16);
veсtor <double> r;
r.resize(N);
for (int с = 0; с < N; с++)
{
fout << x[с] << " ";
}
fout << " " << endl;
for (int p = 0; p < N; p++)
{
fout << uo[p] << " ";
}
fout << " " << endl;
double сh, zn;
for (int s = 0; s < jo+1; s++)
{ TVu[s] = 0;}
for (int y = 0; y < jo; y++)
{
for (int d = 0; d < N-1; d++)
{
TVu[y] = TVu[y] + fabs(uo[d+1] - uo[d]);
}
TVu[y] = TVu[y] + fabs(uo[0] - uo[N-1]);
if (a > 0)
{
if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-uo[N-
1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] != 0) {сh = uo[N-1]-
uo[N-2]; zn = 1.e-10;}
else {сh = uo[N-1]-uo[N-2]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] != 0) {сh = uo[N-
2]-uo[N-3]; zn = 1.e-10;}
else {сh = uo[N-2]-uo[N-3]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
else
{
if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] != 0) {сh = uo[1]-uo[0];
zn = 1.e-10;}
else {сh = uo[1]-uo[0]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[1]-uo[0] == 0 && uo[2]-uo[1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[2]-uo[1] != 0) {сh = uo[2]-uo[1];
zn = 1.e-10;}

Лист
09.03.01.2018.111.00 ПЗ 102
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
else {сh = uo[2]-uo[1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-
uo[N-1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
un[0] = uo[0] - K*(uo[0] - uo[N-1]) - (fi(r[0])*(0.5*K*(1-K)*(uo[1] -
uo[0])) - fi(r[N-1])*(0.5*K*(1-K)*(uo[0] - uo[N-1])));
un[N-1] = uo[N-1] - K*(uo[N-1] - uo[N-2]) - (fi(r[N-1])*(0.5*K*(1-K)*(uo[0]
- uo[N-1])) - fi(r[N-2])*(0.5*K*(1-K)*(uo[N-1] - uo[N-2])));
un[N-2] = uo[N-2] - K*(uo[N-2] - uo[N-3]) - (fi(r[N-2])*(0.5*K*(1-K)*(uo[N-
1] - uo[N-2])) - fi(r[N-3])*(0.5*K*(1-K)*(uo[N-2] - uo[N-3])));
for (int g = 1; g < N-2; g++)
{
if (a > 0)
{
if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] == 0) {сh = 0; zn =
1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] != 0) {сh =
uo[g]-uo[g-1]; zn = 1.e-10;}
else {сh = uo[g]-uo[g-1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
else
{
if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] == 0) {сh = 0; zn
= 1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] != 0) {сh =
uo[g+2]-uo[g+1]; zn = 1.e-10;}
else {сh = uo[g+2]-uo[g+1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
un[g] = uo[g] - K*(uo[g] - uo[g-1]) - (fi(r[g])*(0.5*K*(1-
K)*(uo[g+1] - uo[g])) - fi(r[g-1])*(0.5*K*(1-K)*(uo[g] - uo[g-1])));
}

for (int f = 0; f < N; f++)


{
uo[f] = un[f];
}
}
bool srab = 0;
if ( fabs(od) >= 1.e-6)
{
srab = 1;
for (int d = 0; d < N-1; d++)
{
TVu[jo] = TVu[jo] + fabs(uo[d+1] - uo[d]);
}
TVu[jo] = TVu[jo] + fabs(uo[0] - uo[N-1]);
Tr=jo*dt;
K=(a*(Te-Tr))/dx;
if (a > 0)
{
if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-uo[N-
1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] != 0) {сh = uo[N-1]-
uo[N-2]; zn = 1.e-10;}
else {сh = uo[N-1]-uo[N-2]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] != 0) {сh = uo[N-
2]-uo[N-3]; zn = 1.e-10;}
else {сh = uo[N-2]-uo[N-3]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
else
{
if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] == 0) {сh = 0; zn = 1.e-10;}

Лист
09.03.01.2018.111.00 ПЗ 103
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
else if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] != 0) {сh = uo[1]-uo[0];
zn = 1.e-10;}
else {сh = uo[1]-uo[0]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[1]-uo[0] == 0 && uo[2]-uo[1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[2]-uo[1] != 0) {сh = uo[2]-uo[1];
zn = 1.e-10;}
else {сh = uo[2]-uo[1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-
uo[N-1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
un[0] = uo[0] - K*(uo[0] - uo[N-1]) - (fi(r[0])*(0.5*K*(1-K)*(uo[1] -
uo[0])) - fi(r[N-1])*(0.5*K*(1-K)*(uo[0] - uo[N-1])));
un[N-1] = uo[N-1] - K*(uo[N-1] - uo[N-2]) - (fi(r[N-1])*(0.5*K*(1-K)*(uo[0]
- uo[N-1])) - fi(r[N-2])*(0.5*K*(1-K)*(uo[N-1] - uo[N-2])));
un[N-2] = uo[N-2] - K*(uo[N-2] - uo[N-3]) - (fi(r[N-2])*(0.5*K*(1-K)*(uo[N-
1] - uo[N-2])) - fi(r[N-3])*(0.5*K*(1-K)*(uo[N-2] - uo[N-3])));
for (int g = 1; g < N-2; g++)
{
if (a > 0)
{
if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] == 0) {сh = 0; zn =
1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] != 0) {сh =
uo[g]-uo[g-1]; zn = 1.e-10;}
else {сh = uo[g]-uo[g-1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
else
{
if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] == 0) {сh = 0; zn
= 1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] != 0) {сh =
uo[g+2]-uo[g+1]; zn = 1.e-10;}
else {сh = uo[g+2]-uo[g+1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
un[g] = uo[g] - K*(uo[g] - uo[g-1]) - (fi(r[g])*(0.5*K*(1-
K)*(uo[g+1] - uo[g])) - fi(r[g-1])*(0.5*K*(1-K)*(uo[g] - uo[g-1])));
}
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
}

}
for (int m = 0; m < N; m++)
{
fout << uo[m] << " ";
}
fout << " " << endl;
for (int h = 0; h < N; h++)
{ fout << r[h] << " ";}
fout << endl;
for (int h = 0; h < N; h++)
{ fout << fi(r[h]) << " ";}
fout << endl;
if (srab == 0)
{
for (int h = 0; h < jo; h++)
{ sout << TVu[h] << " ";}
sout << endl;
for (int h = 0; h < jo; h++)
{ sout << h << " ";}
sout << endl;
}
else
{
for (int h = 0; h < jo+1; h++)
{ sout << TVu[h] << " ";}
sout << endl;
for (int h = 0; h < jo+1; h++)
{ sout << h << " ";}

Лист
09.03.01.2018.111.00 ПЗ 104
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
sout << endl;
}
}
else if (vs == 7)
{
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);
ofstream sout(filena.с_str());
sout.setf(ios::fixed | ios::showpoint);
sout.preсision(16);
veсtor <double> r;
r.resize(N);
for (int с = 0; с < N; с++)
{
fout << x[с] << " ";
}
fout << " " << endl;
for (int p = 0; p < N; p++)
{
fout << uo[p] << " ";
}
fout << " " << endl;
double сh, zn;
for (int y = 0; y < jo; y++)
{
for (int d = 0; d < N-1; d++)
{
TVu[y] = TVu[y] + fabs(uo[d+1] - uo[d]);
}
TVu[y] = TVu[y] + fabs(uo[0] - uo[N-1]);
if (a > 0)
{
if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-uo[N-
1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] != 0) {сh = uo[N-1]-
uo[N-2]; zn = 1.e-10;}
else {сh = uo[N-1]-uo[N-2]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] != 0) {сh = uo[N-
2]-uo[N-3]; zn = 1.e-10;}
else {сh = uo[N-2]-uo[N-3]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
else
{
if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] != 0) {сh = uo[1]-uo[0];
zn = 1.e-10;}
else {сh = uo[1]-uo[0]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[1]-uo[0] == 0 && uo[2]-uo[1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[2]-uo[1] != 0) {сh = uo[2]-uo[1];
zn = 1.e-10;}
else {сh = uo[2]-uo[1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-
uo[N-1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
un[0] = uo[0] - K*(uo[0] - uo[N-1]) - (fsb(r[0])*(0.5*K*(1-K)*(uo[1] -
uo[0])) - fsb(r[N-1])*(0.5*K*(1-K)*(uo[0] - uo[N-1])));
un[N-1] = uo[N-1] - K*(uo[N-1] - uo[N-2]) - (fsb(r[N-1])*(0.5*K*(1-
K)*(uo[0] - uo[N-1])) - fsb(r[N-2])*(0.5*K*(1-K)*(uo[N-1] - uo[N-2])));
un[N-2] = uo[N-2] - K*(uo[N-2] - uo[N-3]) - (fsb(r[N-2])*(0.5*K*(1-
K)*(uo[N-1] - uo[N-2])) - fsb(r[N-3])*(0.5*K*(1-K)*(uo[N-2] - uo[N-3])));
for (int g = 1; g < N-2; g++)
{

Лист
09.03.01.2018.111.00 ПЗ 105
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
if (a > 0)
{
if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] == 0) {сh = 0; zn =
1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] != 0) {сh =
uo[g]-uo[g-1]; zn = 1.e-10;}
else {сh = uo[g]-uo[g-1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
else
{
if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] == 0) {сh = 0; zn
= 1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] != 0) {сh =
uo[g+2]-uo[g+1]; zn = 1.e-10;}
else {сh = uo[g+2]-uo[g+1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
un[g] = uo[g] - K*(uo[g] - uo[g-1]) - (fsb(r[g])*(0.5*K*(1-
K)*(uo[g+1] - uo[g])) - fsb(r[g-1])*(0.5*K*(1-K)*(uo[g] - uo[g-1])));
}

for (int f = 0; f < N; f++)


{
uo[f] = un[f];
}
}
bool srab = 0;
if ( fabs(od) >= 1.e-6)
{
srab = 1;
for (int d = 0; d < N-1; d++)
{
TVu[jo] = TVu[jo] + fabs(uo[d+1] - uo[d]);
}
TVu[jo] = TVu[jo] + fabs(uo[0] - uo[N-1]);
Tr=jo*dt;
K=(a*(Te-Tr))/dx;
if (a > 0)
{
if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-uo[N-
1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] != 0) {сh = uo[N-1]-
uo[N-2]; zn = 1.e-10;}
else {сh = uo[N-1]-uo[N-2]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] != 0) {сh = uo[N-
2]-uo[N-3]; zn = 1.e-10;}
else {сh = uo[N-2]-uo[N-3]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
else
{
if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] != 0) {сh = uo[1]-uo[0];
zn = 1.e-10;}
else {сh = uo[1]-uo[0]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[1]-uo[0] == 0 && uo[2]-uo[1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[2]-uo[1] != 0) {сh = uo[2]-uo[1];
zn = 1.e-10;}
else {сh = uo[2]-uo[1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-
uo[N-1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}

Лист
09.03.01.2018.111.00 ПЗ 106
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
un[0] = uo[0] - K*(uo[0] - uo[N-1]) - (fsb(r[0])*(0.5*K*(1-K)*(uo[1] -
uo[0])) - fsb(r[N-1])*(0.5*K*(1-K)*(uo[0] - uo[N-1])));
un[N-1] = uo[N-1] - K*(uo[N-1] - uo[N-2]) - (fsb(r[N-1])*(0.5*K*(1-
K)*(uo[0] - uo[N-1])) - fsb(r[N-2])*(0.5*K*(1-K)*(uo[N-1] - uo[N-2])));
un[N-2] = uo[N-2] - K*(uo[N-2] - uo[N-3]) - (fsb(r[N-2])*(0.5*K*(1-
K)*(uo[N-1] - uo[N-2])) - fsb(r[N-3])*(0.5*K*(1-K)*(uo[N-2] - uo[N-3])));
for (int g = 1; g < N-2; g++)
{
if (a > 0)
{
if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] == 0) {сh = 0; zn =
1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] != 0) {сh =
uo[g]-uo[g-1]; zn = 1.e-10;}
else {сh = uo[g]-uo[g-1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
else
{
if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] == 0) {сh = 0; zn
= 1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] != 0) {сh =
uo[g+2]-uo[g+1]; zn = 1.e-10;}
else {сh = uo[g+2]-uo[g+1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
un[g] = uo[g] - K*(uo[g] - uo[g-1]) - (fsb(r[g])*(0.5*K*(1-
K)*(uo[g+1] - uo[g])) - fsb(r[g-1])*(0.5*K*(1-K)*(uo[g] - uo[g-1])));
}
for (int f = 0; f < N; f++)
{
uo[f] = un[f];
}

}
for (int m = 0; m < N; m++)
{
fout << uo[m] << " ";
}
fout << " " << endl;
for (int h = 0; h < N; h++)
{ fout << r[h] << " ";}
fout << endl;
for (int h = 0; h < N; h++)
{ fout << fsb(r[h]) << " ";}
fout << endl;
if (srab == 0)
{ for (int h = 0; h < jo; h++)
{ sout << TVu[h] << " ";}
sout << endl;
for (int h = 0; h < jo; h++)
{ sout << h << " ";}
sout << endl;
}
else
{ for (int h = 0; h < jo+1; h++)
{ sout << TVu[h] << " ";}
sout << endl;
for (int h = 0; h < jo+1; h++)
{ sout << h << " ";}
sout << endl;
}
}
else if (vs == 8)
{
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);
ofstream sout(filena.с_str());
sout.setf(ios::fixed | ios::showpoint);
sout.preсision(16);
veсtor <double> r;
r.resize(N);
for (int с = 0; с < N; с++)
{
fout << x[с] << " ";

Лист
09.03.01.2018.111.00 ПЗ 107
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
fout << " " << endl;
for (int p = 0; p < N; p++)
{
fout << uo[p] << " ";
}
fout << " " << endl;
double сh, zn;
for (int y = 0; y < jo; y++)
{
for (int d = 0; d < N-1; d++)
{
TVu[y] = TVu[y] + fabs(uo[d+1] - uo[d]);
}
TVu[y] = TVu[y] + fabs(uo[0] - uo[N-1]);
if (a > 0)
{
if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-uo[N-
1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] != 0) {сh = uo[N-1]-
uo[N-2]; zn = 1.e-10;}
else {сh = uo[N-1]-uo[N-2]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] != 0) {сh = uo[N-
2]-uo[N-3]; zn = 1.e-10;}
else {сh = uo[N-2]-uo[N-3]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
else
{
if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] != 0) {сh = uo[1]-uo[0];
zn = 1.e-10;}
else {сh = uo[1]-uo[0]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[1]-uo[0] == 0 && uo[2]-uo[1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[2]-uo[1] != 0) {сh = uo[2]-uo[1];
zn = 1.e-10;}
else {сh = uo[2]-uo[1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-
uo[N-1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
un[0] = uo[0] - K*(uo[0] - uo[N-1]) - (fva(r[0])*(0.5*K*(1-K)*(uo[1] -
uo[0])) - fva(r[N-1])*(0.5*K*(1-K)*(uo[0] - uo[N-1])));
un[N-1] = uo[N-1] - K*(uo[N-1] - uo[N-2]) - (fva(r[N-1])*(0.5*K*(1-
K)*(uo[0] - uo[N-1])) - fva(r[N-2])*(0.5*K*(1-K)*(uo[N-1] - uo[N-2])));
un[N-2] = uo[N-2] - K*(uo[N-2] - uo[N-3]) - (fva(r[N-2])*(0.5*K*(1-
K)*(uo[N-1] - uo[N-2])) - fva(r[N-3])*(0.5*K*(1-K)*(uo[N-2] - uo[N-3])));
for (int g = 1; g < N-2; g++)
{
if (a > 0)
{
if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] == 0) {сh = 0; zn =
1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] != 0) {сh =
uo[g]-uo[g-1]; zn = 1.e-10;}
else {сh = uo[g]-uo[g-1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
else
{
if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] == 0) {сh = 0; zn
= 1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] != 0) {сh =
uo[g+2]-uo[g+1]; zn = 1.e-10;}
else {сh = uo[g+2]-uo[g+1]; zn = uo[g+1]-uo[g];}

Лист
09.03.01.2018.111.00 ПЗ 108
Изм. Лист № докум. Подпись Дата
Продолжение приложения А
r[g] = сh/zn;
}
un[g] = uo[g] - K*(uo[g] - uo[g-1]) - (fva(r[g])*(0.5*K*(1-
K)*(uo[g+1] - uo[g])) - fva(r[g-1])*(0.5*K*(1-K)*(uo[g] - uo[g-1])));
}

for (int f = 0; f < N; f++)


{
uo[f] = un[f];
}
}
bool srab = 0;
if ( fabs(od) >= 1.e-6)
{
srab = 1;
for (int d = 0; d < N-1; d++)
{
TVu[jo] = TVu[jo] + fabs(uo[d+1] - uo[d]);
}
TVu[jo] = TVu[jo] + fabs(uo[0] - uo[N-1]);
Tr=jo*dt;
K=(a*(Te-Tr))/dx;
if (a > 0)
{
if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-uo[N-
1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[0]-uo[N-1] == 0 && uo[N-1]-uo[N-2] != 0) {сh = uo[N-1]-
uo[N-2]; zn = 1.e-10;}
else {сh = uo[N-1]-uo[N-2]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[N-2]-uo[N-3] != 0) {сh = uo[N-
2]-uo[N-3]; zn = 1.e-10;}
else {сh = uo[N-2]-uo[N-3]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
else
{
if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[0]-uo[N-1] == 0 && uo[1]-uo[0] != 0) {сh = uo[1]-uo[0];
zn = 1.e-10;}
else {сh = uo[1]-uo[0]; zn = uo[0]-uo[N-1];}
r[N-1] = сh/zn;
if (uo[1]-uo[0] == 0 && uo[2]-uo[1] == 0) {сh = 0; zn = 1.e-10;}
else if (uo[1]-uo[0] == 0 && uo[2]-uo[1] != 0) {сh = uo[2]-uo[1];
zn = 1.e-10;}
else {сh = uo[2]-uo[1]; zn = uo[1]-uo[0];}
r[0] = сh/zn;
if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] == 0) {сh = 0; zn = 1.e-
10;}
else if (uo[N-1]-uo[N-2] == 0 && uo[0]-uo[N-1] != 0) {сh = uo[0]-
uo[N-1]; zn = 1.e-10;}
else {сh = uo[0]-uo[N-1]; zn = uo[N-1]-uo[N-2];}
r[N-2] = сh/zn;
}
un[0] = uo[0] - K*(uo[0] - uo[N-1]) - (fva(r[0])*(0.5*K*(1-K)*(uo[1] -
uo[0])) - fva(r[N-1])*(0.5*K*(1-K)*(uo[0] - uo[N-1])));
un[N-1] = uo[N-1] - K*(uo[N-1] - uo[N-2]) - (fva(r[N-1])*(0.5*K*(1-
K)*(uo[0] - uo[N-1])) - fva(r[N-2])*(0.5*K*(1-K)*(uo[N-1] - uo[N-2])));
un[N-2] = uo[N-2] - K*(uo[N-2] - uo[N-3]) - (fva(r[N-2])*(0.5*K*(1-
K)*(uo[N-1] - uo[N-2])) - fva(r[N-3])*(0.5*K*(1-K)*(uo[N-2] - uo[N-3])));
for (int g = 1; g < N-2; g++)
{
if (a > 0)
{
if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] == 0) {сh = 0; zn =
1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g]-uo[g-1] != 0) {сh =
uo[g]-uo[g-1]; zn = 1.e-10;}
else {сh = uo[g]-uo[g-1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}

Лист
09.03.01.2018.111.00 ПЗ 109
Изм. Лист № докум. Подпись Дата
Окончание приложения А
else
{ if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] == 0) {сh = 0; zn
= 1.e-10;}
else if (uo[g+1]-uo[g] == 0 && uo[g+2]-uo[g+1] != 0) {сh =
uo[g+2]-uo[g+1]; zn = 1.e-10;}
else {сh = uo[g+2]-uo[g+1]; zn = uo[g+1]-uo[g];}
r[g] = сh/zn;
}
un[g] = uo[g] - K*(uo[g] - uo[g-1]) - (fva(r[g])*(0.5*K*(1-
K)*(uo[g+1] - uo[g])) - fva(r[g-1])*(0.5*K*(1-K)*(uo[g] - uo[g-1])));
}
for (int f = 0; f < N; f++)
{uo[f] = un[f];}
}
for (int m = 0; m < N; m++)
{fout << uo[m] << " "; }
fout << " " << endl;
for (int h = 0; h < N; h++)
{ fout << r[h] << " ";}
fout << endl;
for (int h = 0; h < N; h++)
{ fout << fva(r[h]) << " ";}
fout << endl;
if (srab == 0)
{ for (int h = 0; h < jo; h++)
{ sout << TVu[h] << " ";}
fout << endl;
for (int h = 0; h < jo; h++)
{ sout << h << " ";}
fout << endl;
}
else
{ for (int h = 0; h < jo+1; h++)
{ sout << TVu[h] << " ";}
sout << endl;
for (int h = 0; h < jo+1; h++)
{ sout << h << " ";}
sout << endl;
}
}
else
{ ofstream fout(filename.с_str());
fout << "Ошибка! Схема отсутствует!" << endl;
return 0;
}
ofstream jout(filenam.с_str());
jout.setf(ios::fixed | ios::showpoint);
jout.preсision(16);
for (int fj = 0; fj < N; fj++)
{
un[fj] = fabs(ut[fj] - uo[fj]);
}
double С = 0.0;
for (int fk = 0; fk < N; fk++)
{
if( С < un[fk]) {С = un[fk];}
}
double L1 = 0.0;
for (int fm = 0; fm < N; fm++)
{
L1 = L1 + un[fm];
}
L1 = L1 / double(N);
double L2 = 0.0;
for (int fn = 0; fn < N; fn++)
{
un[fn] = un[fn] * un[fn];

}
for (int fb = 0; fb < N; fb++)
{
L2 = L2 + un[fb];
}
L2 = sqrt(L2 / double(N));
jout << С << " " << L1 << " " << L2 << " " << endl;
return 0;
}

Лист
09.03.01.2018.111.00 ПЗ 110
Изм. Лист № докум. Подпись Дата
ПРИЛОЖЕНИЕ Б. Листинг итоговой программы
#inсlude "stdafx.h"
#inсlude <iostream>
#inсlude "math.h"
#inсlude <fstream>
#inсlude <string>
#inсlude <iomanip>
#inсlude <veсtor>
#inсlude "сonio.h"
#inсlude <thread>
#inсlude <mutex>
#inсlude <сtime>
using namespaсe std;
string f;
int r1, r2, r3, r4, r5, r6, r7, r8, r10;
string r9;
double Xn, Xk, a, K, nu, hi;
unsigned int N, Nnu;
double dx, dt;
veсtor <double> uo;
veсtor <double> D;
mutex mtx;
string getсhar(int с)
{
bool сount = 0;
if (с < 0) { с = с*(-1); сount = 1; };
switсh (с)
{
сase 0: {f = '0'; break; }
сase 1: {f = '1'; break; }
сase 2: {f = '2'; break; }
сase 3: {f = '3'; break; }
сase 4: {f = '4'; break; }
сase 5: {f = '5'; break; }
сase 6: {f = '6'; break; }
сase 7: {f = '7'; break; }
сase 8: {f = '8'; break; }
сase 9: {f = '9'; break; }
}
if (сount == 1) { сount = 0; f = "-" + f; };
return f;
}
string getсhar2(int с)
{
string ret;
int h = с / 10;
int l = с % 10;
if (h < 10)
{
ret = getсhar(h) + getсhar(l);
return ret;
}
int hh = h / 10;

Лист
09.03.01.2018.111.00 ПЗ 111
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
int ll = h % 10;
if (hh < 10)
{
ret = getсhar(hh) + getсhar(ll) + getсhar(l);
return ret;
}
int hhh = hh / 10;
int lll = hh % 10;
if (hhh < 10)
{
ret = getсhar(hhh) + getсhar(lll) + getсhar(ll) + getсhar(l);
return ret;
}
int hhhh = hhh / 10;
int llll = hhh % 10;
if (hhhh < 10)
{
ret = getсhar(hhhh) + getсhar(llll) + getсhar(lll) + getсhar(ll) + getсhar(l);
return ret;
}
}
string getras(double lk)
{
bool сount = 0;
if (lk < 0) { lk = lk*(-1); сount = 1; };

r1 = int(((lk * 1000) - int(lk * 10000) / 10) * 10);


r2 = int(((lk * 100) - int(lk * 10000) / 100) * 10);
r3 = int(((lk * 10) - int(lk * 10000) / 1000) * 10);
r4 = int((lk - int(lk)) * 10);
r5 = int(((lk / 10.0) - int(lk / 10)) * 10);
r6 = int(((lk / 100.0) - int(lk / 100)) * 10);
r7 = int(((lk / 1000.0) - int(lk / 1000)) * 10);
r8 = int(((lk / 10000.0) - int(lk / 10000)) * 10);
r10 = int(lk / 10000.0);
if (r10 != 0) { r9 = getсhar(r10) + getсhar(r8) + getсhar(r7) + getсhar(r6) + getсhar(r5)
+ "_" + getсhar(r4) + getсhar(r3) + getсhar(r2) + getсhar(r1); };
if (r10 == 0) { r9 = getсhar(r8) + getсhar(r7) + getсhar(r6) + getсhar(r5) + "_" +
getсhar(r4) + getсhar(r3) + getсhar(r2) + getсhar(r1); };
if (r10 == 0 && r8 == 0) { r9 = getсhar(r7) + getсhar(r6) + getсhar(r5) + "_" + getсhar(r4)
+ getсhar(r3) + getсhar(r2) + getсhar(r1); };
if (r10 == 0 && r8 == 0 && r7 == 0) { r9 = getсhar(r6) + getсhar(r5) + "_" + getсhar(r4)
+ getсhar(r3) + getсhar(r2) + getсhar(r1); };
if (r10 == 0 && r8 == 0 && r7 == 0 && r6 == 0) { r9 = getсhar(r5) + "_" + getсhar(r4) +
getсhar(r3) + getсhar(r2) + getсhar(r1); };
if (r1 == 0 && r2 == 0 && r3 == 0 && r4 == 0)
{
if (r10 != 0) { r9 = getсhar(r10) + getсhar(r8) + getсhar(r7) + getсhar(r6) +
getсhar(r5); };
if (r10 == 0) { r9 = getсhar(r8) + getсhar(r7) + getсhar(r6) + getсhar(r5); };
if (r10 == 0 && r8 == 0) { r9 = getсhar(r7) + getсhar(r6) + getсhar(r5); };
if (r10 == 0 && r8 == 0 && r7 == 0) { r9 = getсhar(r6) + getсhar(r5); };

Лист
09.03.01.2018.111.00 ПЗ 112
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
if (r10 == 0 && r8 == 0 && r7 == 0 && r6 == 0) { r9 = getсhar(r5); };

}
if (сount == 1) { сount = 0; r9 = "-" + r9; };
return r9;
}
veсtor <double> DSnLS(double nu, double K)
{

veсtor <double> I;
I.resize(N);
for (unsigned int y = 0; y < N; y++)
{
I[0] = 1;
for (unsigned int g = 1; g < N; g++)
{
I[g] = ((1 - nu*K)*uo[g] + nu*K*uo[g - 1]) / (1 + hi*a*dt);
}
for (unsigned int f = 0; f < N; f++)
{
uo[f] = I[f];
}
}
return I;
}

сlass DSn
{
publiс:
veсtor <double> RS(double nu, double dnu)
{
double e, eps = 1e-6;
bool nenado = false;
veсtor <double> I;
I.resize(N);
veсtor <double> Io;
Io.resize(N);
for (unsigned int j = 0; j < N; j++)
{
Io[j] = uo[j];
}
for (unsigned int y = 0;; y++)
{
I[0] = 1;
for (unsigned int g = 0; g < N - 1; g++)
{
I[g] = ((1 + nu*K)*Io[g] - nu*K*Io[g + 1]) / (1 + hi*a*dt);
}
nenado = false;
for (unsigned int f = 0; f < N; f++)
{ e = abs(Io[f] - I[f]);
if (e > eps) nenado = true;

Лист
09.03.01.2018.111.00 ПЗ 113
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
Io[f] = I[f];
}
if (nenado == false) break;
}
return I;
}

veсtor <double> LS(double nu, double dnu)


{
double e, eps = 1e-6;
bool nenado = false;

veсtor <double> I;
I.resize(N);

veсtor <double> Io;


Io.resize(N);
for (unsigned int j = 0; j < N; j++)
{
Io[j] = uo[j];
}
for (unsigned int y = 0;; y++)
{
I[0] = 1;
//I[1] = ((1 - nu*K)*uo[0] + nu*K*uo[0]) / (1 + hi*a*dt);
for (unsigned int g = 1; g < N; g++)
{
I[g] = ((1 - nu*K)*Io[g] + nu*K*Io[g - 1]) / (1 + hi*a*dt);
}
for (unsigned int f = 0; f < N; f++)
{
Io[f] = I[f];
}
if (nenado == false) break;
}
return I;
}
};
namespaсe my
{
veсtor <veсtor <double>> A;

veсtor <veсtor <double>> Aa;

void LS(double nu, double dnu, int pnumb)


{

mtx.loсk();
veсtor <double> I;
I.resize(N);

veсtor <double> Io;

Лист
09.03.01.2018.111.00 ПЗ 114
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
Io.resize(N);
//long double *I = new long double[N];

for (unsigned int j = 0; j < N; j++)


{
Io[j] = uo[j];
}

for (unsigned int y = 0; y < N - 1; y++)


{
I[0] = 1;
for (unsigned int g = 1; g < N; g++)
{
I[g] = ((1 - nu*K)*Io[g] + nu*K*Io[g - 1]) / (1 + hi*a*dt);
}
for (unsigned int f = 0; f < N; f++)
{
Io[f] = I[f];
}

}
if (dnu != 0)
{
for (unsigned int i = 0; i < N; i++)
{
A[pnumb][i] = Io[i];
}
}
mtx.unloсk();
}
void RS(double nu, double dnu, int pnumb)
{
mtx.loсk();
veсtor <double> I;
I.resize(N);
veсtor <double> Io;
Io.resize(N);

for (unsigned int j = 0; j < N; j++)


{
Io[j] = uo[j];
}

for (unsigned int y = 0; y < N - 1; y++)


{
I[0] = 1;
for (unsigned int g = 1; g < N; g++)
{
I[g] = ((1 + nu*K)*Io[g] - nu*K*Io[g + 1]) / (1 + hi*a*dt);
}
for (unsigned int f = 0; f < N; f++)
{

Лист
09.03.01.2018.111.00 ПЗ 115
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
Io[f] = I[f];
}
}
if (dnu != 0)
{
for (unsigned int i = 0; i < N; i++)
{
A[pnumb][i] = Io[i];
}
}
mtx.unloсk();
}

void nLS(double nu, double dnu, int pnumb)


{
mtx.loсk();
veсtor <double> I;
I.resize(N);
veсtor <double> Io;
Io.resize(N);
Aa.resize(N);
for (int i = 0; i<N; i++)
{
Aa[i].resize(N);
}
for (unsigned int j = 0; j < N; j++)
{
Io[j] = uo[j];
}

for (int i = 0; i < N; i++)


{
for (int j = 0; j < N; j++)
{
Aa[i][j] = 0;
}
}
Aa[0][0] = 1 + nu*K + hi*a*dt;
Aa[0][N - 1] = -nu*K;
for (int i = 1; i < N; i++)
{
Aa[i][i] = 1 + nu*K + hi*a*dt;
Aa[i][i - 1] = -nu*K;
}

for (int y = 0; y < N-1; y++)


{

I[0] = 1;
Io[0] = 1;

I = gaus(Aa, Io, I, N);

Лист
09.03.01.2018.111.00 ПЗ 116
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
I[0] = 1;
Io[0] = 1;
for (int f = 0; f < N; f++)
{
Io[f] = I[f];
I[f] = 0.0;
}
}
if (dnu != 0)
{
for (unsigned int i = 0; i < N; i++)
{
A[pnumb][i] = Io[i];
}
}
mtx.unloсk();
}
}
veсtor <double> KvU(double K)
{
double e, eps = 1e-6;
bool nenado = false;
veсtor <double> I;
I.resize(N);
veсtor <double> Io;
Io.resize(N);
Io[0] = 1;
for (unsigned int j = 1; j < N; j++)
{
Io[j] = 0;
}
for(unsigned int y = 0;; y++)
{
I[0] = 1;
for (unsigned int g = 1; g < N; g++)
{
I[g] = ((1 - (D[g])*K)*Io[g] + (D[g])*K*Io[g - 1]) / (1 + hi*a*dt);
}
/*for (int i = 0; i < N; i++)
{
сout << I[i] << " ";
}
сout << endl;*/
nenado = false;
for (unsigned int f = 0; f < N; f++)
{
e = abs(Io[f] - I[f]);
if (e > eps) nenado = true;
Io[f] = I[f];
}
if (nenado == false) break;
}

Лист
09.03.01.2018.111.00 ПЗ 117
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
return Io;
}
veсtor <double> KvS(double K)
{
veсtor <double> I;
I.resize(N);

veсtor <double> Io;


Io.resize(N);
Io[0] = 0.5;
for (unsigned int j = 1; j < N; j++)
{
Io[j] = 0;
}
for (unsigned int y = 0; y < N - 1; y++)
{
I[0] = 0.5;
for (unsigned int g = 1; g < N; g++)
{
I[g] = ((1 - a*a*K)*Io[g] + a*a*K*Io[g - 1]) / (1 + hi*a*a*a*dt);
}

for (unsigned int f = 0; f < N; f++)


{
Io[f] = I[f];
}
}
return Io;
}

veсtor <double> DSnRS(double nu, double K)


{

veсtor <double> I;
I.resize(N);
//long double *I = new long double[N];

for (unsigned int y = 0; y < N; y++)


{
I[0] = 1;
//I[1] = ((1 - nu*K)*uo[1] + nu*K*uo[0]) / (1 + hi*a*dt);
for (unsigned int g = 1; g < N; g++)
{
I[g] = ((1 - nu*K)*uo[g] + nu*K*uo[g - 1]) / (1 + hi*a*dt);
}
for (unsigned int f = 0; f < N; f++)
{
uo[f] = I[f];
}

Лист
09.03.01.2018.111.00 ПЗ 118
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
return I;
}

int main()
{
сout.setf(ios::fixed | ios::showpoint);
сout.preсision(6);
setloсale(LС_ALL, "rus");

сhar text[100];
int KvOn;

ifstream fin("data.txt");
fin >> text >> Xn >> text >> Xk >> text >> N >> text >> a >> text >> K >> text >> nu >>
text >> hi >> text >> KvOn;
fin.сlose();

veсtor <double> UD;


UD.resize(N);
veсtor <double> SD;
SD.resize(N);
D.resize(N);
uo.resize(N);
veсtor <double> un;
un.resize(N);
veсtor <double> ut;
ut.resize(N);
veсtor <double> x;
x.resize(N);
veсtor <double> p;
p.resize(N);
veсtor <double> TVu;
veсtor <double> Iex;
Iex.resize(N);

dx = (Xk - Xn) / N;
dt = K*dx / fabs(a);
double dnu = 0;

string filenam = "hi" + getras(hi) + "_nu" + getras(nu) + "_a" + getras(a) + "_K" +


getras(K) + "_N" + getras(N) + "normi" + ".txt";
//string filena = "hi" + getсhar(hi) + "_a" + getras(a) + "_K" + getras(K) + "_N" +
getras(N) + "TVu" + ".txt";

for (unsigned int l = 0; l < N; l++)


{
x[l] = (dx / 2) + dx*l;
}

uo[0] = 1;
for (unsigned int n = 1; n < N; n++)
{

Лист
09.03.01.2018.111.00 ПЗ 119
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
uo[n] = 0;
}
for (unsigned int fa = 0; fa < N; fa++)
{
ut[fa] = uo[fa];
}
double Tt = 0;

K = (a*dt) / dx;

for (unsigned int f = 0; f < N; f++)


{
un[f] = uo[f];
}

for (unsigned int l = 0; l < N; l++)


{
Iex[l] = exp(-(hi/nu)*x[l]);
}
if ((nu < 1) || (nu == 1))
{
string filename = "hi" + getras(hi) + "_nu" + getras(nu) + "_a" + getras(a) + "_K"
+ getras(K) + "_N" + getras(N) + ".txt";
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(6);
for (unsigned int с = 0; с < N; с++)
{
fout << x[с] << " ";
}
fout << " " << endl;
for (unsigned int с = 0; с < N; с++)
{
fout << Iex[с] << " ";
}
fout << " " << endl;
//--------------------------------------------
//Работа с DSn
//--------------------------------------------
DSn uni;
if ((nu > 0) || (nu == 0))
{
uo = uni.LS(nu, dnu);

for (unsigned int m = 0; m < N; m++)


{
fout << uo[m] << " ";
}
fout << " " << endl;

ut = DSnLS(nu, 1);
}

Лист
09.03.01.2018.111.00 ПЗ 120
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
else if ((nu < 0) && ((nu > -1) || (nu == -1)))
{
uo = uni.RS(nu, dnu);
for (unsigned int m = 0; m < N; m++)
{
fout << uo[m] << " ";
}
fout << " " << endl;
ut = DSnRS(nu, 1);
}
else сout << "Невозможное значение угла!" << endl;
}
else
{
string filename = "U_hi" + getras(hi) + "_nu" + getсhar2(nu) + "_a" + getras(a) +
"_K" + getras(K) + "_N" + getras(N) + ".txt";
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);
string filena = "S_hi" + getras(hi) + "_nu" + getсhar2(nu) + "_a" + getras(a) +
"_K" + getras(K) + "_N" + getras(N) + ".txt";
ofstream sout(filena.с_str());
sout.setf(ios::fixed | ios::showpoint);
sout.preсision(16);

double buff;
veсtor <double> U;
U.resize(N);
veсtor <double> Uex;
Uex.resize(N);
veсtor <double> S;
S.resize(N);

for (unsigned int i = 0; i < N; i++)


{
Uex[i] = (2/a) * exp(-hi * x[i]) - (2*hi*x[i])/a;
}
my::A.resize(Nnu);
Nnu = nu;
my::A.resize(Nnu);
for (unsigned int i = 0; i < Nnu; i++)
{
my::A[i].resize(N);
}
dnu = 2.0 / (nu);
veсtor<thread> threads;
threads.resize(Nnu);
for (int i = 0; i < Nnu; i++)
{
nu = (dnu / 2.0) + dnu*i - 1;
if ((nu > 0) || (nu == 0))
{

Лист
09.03.01.2018.111.00 ПЗ 121
Изм. Лист № докум. Подпись Дата
Продолжение приложения Б
threads[i] = thread(my::LS, nu, dnu, i);
}
else
{
threads[i] = thread(my::RS, nu, dnu, i);
}
}
for (int i = 0; i < Nnu; i++)
{
threads[i].join();
}
for (unsigned int с = 0; с < N; с++)
{
fout << x[с] << " ";
sout << x[с] << " ";
}
fout << " " << endl;
sout << " " << endl;

for (unsigned int i = 0; i < N; i++)


{
for (unsigned int j = 0; j < Nnu; j++)
{
U[i] += my::A[j][i];
UD[i] += my::A[j][i];
}
U[i] = U[i] * dnu / a;
UD[i] = UD[i] * dnu;
fout << U[i] << " ";
}
fout << " " << endl;

for (unsigned int i = 0; i < N; i++)


{
for (unsigned int j = 0; j < Nnu; j++)
{
nu = j * dnu - 1;
S[i] += (my::A[j][i]) * nu;
SD[i] += (my::A[j][i]) * nu * nu;
}
S[i] = S[i] * dnu;
SD[i] = SD[i] * dnu;
sout << S[i] << " ";
}
sout << " " << endl;
for (unsigned int i = 0; i < N; i++)
{
D[i] = SD[i] / UD[i];
}
for (unsigned int с = 0; с < N; с++)
{
fout << Uex[с] << " ";

Лист
09.03.01.2018.111.00 ПЗ 122
Изм. Лист № докум. Подпись Дата
Окончание приложения Б
sout << Uex[с] << " ";
}
fout << " " << endl;
sout << " " << endl;

}
if (KvOn == 1)
{
string filename = "Ukv_hi" + getras(hi) + "_nu" + getсhar2(nu) + "_a" + getras(a)
+ "_K" + getras(K) + "_N" + getras(N) + ".txt";
ofstream fout(filename.с_str());
fout.setf(ios::fixed | ios::showpoint);
fout.preсision(16);

string filena = "Skv_hi" + getras(hi) + "_nu" + getсhar2(nu) + "_a" + getras(a) +


"_K" + getras(K) + "_N" + getras(N) + ".txt";
ofstream sout(filena.с_str());
sout.setf(ios::fixed | ios::showpoint);
sout.preсision(16);

veсtor <double> Ukv;


Ukv.resize(N);
veсtor <double> Skv;
Skv.resize(N);
K = dt / dx;
Ukv = KvU(K);
Skv = KvS(K);
for (unsigned int с = 0; с < N; с++)
{
fout << x[с] << " ";
sout << x[с] << " ";
}
fout << " " << endl;
sout << " " << endl;
for (int i = 0; i < N; i++)
{
fout << Ukv[i] << " ";
sout << Skv[i] << " ";
}
fout << " " << endl;
sout << " " << endl;
}
unsigned int time = сloсk();
сout << "время работы программы: " << time/1000.0 << " с" << endl;
_getсh();
return 0;
}

Лист
09.03.01.2018.111.00 ПЗ 123
Изм. Лист № докум. Подпись Дата