48507 (Разностные схемы для уравнения переноса на неравномерных сетках), страница 2
Описание файла
Документ из архива "Разностные схемы для уравнения переноса на неравномерных сетках", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "48507"
Текст 2 страницы из документа "48507"
; (8)
; (9)
Покажем погрешность аппроксимации первой производной по х.
Для этого введем функцию погрешности решения Найдем и подставим в (1).
Имеем = ,
Функцию разложим по формуле Тейлора
,
и подставим в Имеем
,
отсюда получаем аппроксимацию первого порядка .
1.7.2 Формирование сетки
I вариант
, (1)
, q>1-возраст.геометр.прогрессия
, q<1-убыв.геометр.прогрессия
1) , (2)
, q>1. (3)
2) , (4)
, q<1. (5)
и - задаем сами.
Пример Пусть
q>1 и по формуле (3) n
Пример Пусть
вычисляем по формуле (5)
Действительно
II вариант
Можно использовать другой подход:
, , ,
,
, .
a) , q<1 - убывающая геом. прогрессия n и q-задаем сами.
в) , q>1 – возрастающая геом. прогрессия.
Таким образом, можно рассматривать следующие модули сеток:
-
Равномерная сетка .
-
Квазиравномерная сетка ( …).
-
Неравномерная по возрастающей геометрической прогрессии .
-
Неравномерная по убывающей геометрической прогрессии .
-
Среднеарифметический метод 3) и 4) .
Глава II. Одномерное уравнение переноса с переменными коэффициентами
2.1 Постановка задачи
Рассмотрим уравнение вида:
(1)
удовлетворяющий начальным условиям
(2)
и граничным условиям:
(3)
Входные данные:
1)
l=1, T=1
точное решение:
2)
точное решение:
3)
точное решение:
4)
точное решение:
Для решения задачи (1) – (3) используем различные разностные схемы, вернее, явную и неявную.
2.2 “Явные ” схемы
Явные схемы для нашей задачи используются тогда, когда p(x,t) > 0, (p0>0, pN>0) или p(x,t)<0, (p0<0, pN<0). На практике часто используют схему бегущего счета. В зависимости от знака функции p(x,t) используют правую или левую разностные схемы.
Итак, рассмотрим схему бегущего счета в обоих случаях.
1) p(x,t)>0, (p0>0, pN>0)
Разностная схема (правая) имеет вид
; (1′)
; (2′)
; (3′)
из (1′) ,
где .
2) p(x,t)<0, (p0<0, pN<0)
В этом случае используется левая разностная схема
; (1″)
; (2″)
; (3″)
из (1′) ,
где .
Таблица 1 Численное решение уравнения переноса с переменными коэффициентами схема бегущего счета “явная ” схема (правая разностная схема)
-------------kogda p0>0, pN>0-------------50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.10039200 | 0.10004559 | 0.00034641 |
1 | 0.10731313 | 0.10694264 | 0.00037049 |
2 | 0.11471141 | 0.11431517 | 0.00039623 |
3 | 0.12261970 | 0.12219596 | 0.00042375 |
4 | 0.13107319 | 0.13062004 | 0.00045315 |
5 | 0.14010945 | 0.13962487 | 0.00048458 |
6 | 0.14976865 | 0.14925048 | 0.00051817 |
7 | 0.16009374 | 0.15953968 | 0.00055407 |
8 | 0.17113063 | 0.17053820 | 0.00059243 |
9 | 0.18292837 | 0.18229495 | 0.00063342 |
10 | 0.19553941 | 0.19486220 | 0.00067721 |
11 | 0.20901984 | 0.20829583 | 0.00072401 |
12 | 0.22342957 | 0.22265555 | 0.00077402 |
13 | 0.23883258 | 0.23800523 | 0.00082736 |
14 | 0.25528740 | 0.25441310 | 0.00087431 |
15 | 0.27195211 | 0.27195211 | 0.00000000 |
Таблица 2. Численное решение уравнения переноса с переменными коэффициентами схема бегущего счета “явная ” схема (левая разностная схема)
-------------kogda p0<0, pN<0-------------- 50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.14715178 | 0.14715178 | 0.00000000 |
1 | 0.14242453 | 0.14232757 | 0.00009697 |
2 | 0.13785337 | 0.13766151 | 0.00019185 |
3 | 0.13343317 | 0.13314843 | 0.00028474 |
4 | 0.12915902 | 0.12878331 | 0.00037571 |
5 | 0.12502613 | 0.12456129 | 0.00046484 |
6 | 0.12102988 | 0.12047768 | 0.00055219 |
7 | 0.11716580 | 0.11652796 | 0.00063785 |
8 | 0.11342959 | 0.11270772 | 0.00072187 |
9 | 0.10981705 | 0.10901272 | 0.00080434 |
10 | 0.10632415 | 0.10543886 | 0.00088530 |
11 | 0.10294698 | 0.10198216 | 0.00096483 |
12 | 0.09968176 | 0.09863879 | 0.00104298 |
13 | 0.09652483 | 0.09540502 | 0.00111981 |
14 | 0.09347266 | 0.09227727 | 0.00119539 |
15 | 0.09052183 | 0.08925206 | 0.00126976 |
Текст программы смотри в приложении 1
2.3 Неявные схемы
В отличие от явной схемы неявные схемы используются для задачи (1) – (3) во всех случаях 1) p0>0, pN>0; 2) p0<0, pN<0; 3) p0>0, pN<0; 4) p0<0, pN>0.
Рассмотрим 2 различные разностные схемы:
-
Центрально- разностная схема.
-
Трехточечная схема с весом.
Все эти схемы решаются методом прогонки и все эти разностные уравнения, т.е. полученные при аппроксимации схемы, вернее, уравнения сводятся к виду:
(4)
Коэффициенты Ai, Bi, Ci должны удовлетворять условиям:
(5)
Коэффициенты B0 , C0 , F0, AN ,CN ,FN находятся из граничных условий. В данной задаче в зависимости от знака функции p(x,t) ставятся граничные условия и тем самым находятся наши коэффициенты. Рассмотрим все 4 случая:
1) p0>0, pN>0, u(l,t)=м2(t), (3′)
из уравнения (3′) AN ,CN ,FN .
B0 , C0 , F0 находятся из дополнительного условия, которая ставится на левом конце.
2) p0<0, pN<0, u(0,t)=м1(t), (3″) из уравнения (3″) B0 , C0 , F0.
AN ,CN ,FN находятся из дополнительного условия, которая ставится на правом конце.
3) p0<0, pN>0, u(0,t)=м1(t), u(l,t)=м2(t), (3″′)
из уравненя (3″′) B0 , C0 , F0
AN ,CN ,FN
4) p0>0, pN<0, нет граничных условий.
Дополнительное условие ставится на левом и на правом концах. Находим B0, C0 , F0 , AN ,CN ,FN .
Алгоритм правой прогонки
, .
,
.
При выполнении условий алгоритм правой прогонки устойчив.
2.3.1 Центрально разностная схема
Разностная схема имеет вид (задачи (1)-(3)):
, .
1) P0>0, PN>0
, , .
2) P0<0, PN<0
.
3) P0<0, PN>0
B0=0, C0=1, F0= ,
→ AN=0, CN=1, .
4) P0>0, PN<0
,
Таблица 3. Численное решение уравнения переноса с переменными коэффициентами центральная разностная схема метод прогонки
-------------kogda p0>0, pN>0------------ 50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.18772094 | 0.18765555 | 0.00006539 |
1 | 0.18147920 | 0.18150347 | 0.00002427 |
2 | 0.17566576 | 0.17555308 | 0.00011268 |
3 | 0.16982701 | 0.16979776 | 0.00002924 |
4 | 0.16440069 | 0.16423113 | 0.00016956 |
5 | 0.15890974 | 0.15884699 | 0.00006275 |
6 | 0.15384782 | 0.15363937 | 0.00020845 |
7 | 0.14868453 | 0.14860247 | 0.00008206 |
8 | 0.14391438 | 0.14373070 | 0.00018368 |
9 | 0.13904086 | 0.13901865 | 0.00002221 |
10 | 0.13462315 | 0.13446108 | 0.00016208 |
11 | 0.13004378 | 0.13005292 | 0.00000914 |
12 | 0.12593278 | 0.12578928 | 0.00014351 |
13 | 0.12169429 | 0.12166541 | 0.00002888 |
14 | 0.11786577 | 0.11767675 | 0.00018903 |
15 | 0.11381884 | 0.11381884 | 0.00000000 |
Таблица 4. Численное решение уравнения переноса с переменными коэффициентами центральная разностная схема метод прогонки
-------------kogda p0<0, pN<0-------------- 50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.14715178 | 0.14715178 | 0.00000000 |
1 | 0.14240331 | 0.14232757 | 0.00007574 |
2 | 0.13769681 | 0.13766151 | 0.00003530 |
3 | 0.13325746 | 0.13314843 | 0.00010903 |
4 | 0.12885248 | 0.12878331 | 0.00006918 |
5 | 0.12470227 | 0.12456129 | 0.00014098 |
6 | 0.12057943 | 0.12047768 | 0.00010174 |
7 | 0.11669966 | 0.11652796 | 0.00017170 |
8 | 0.11284082 | 0.11270772 | 0.00013310 |
9 | 0.10921401 | 0.10901272 | 0.00020130 |
10 | 0.10560221 | 0.10543886 | 0.00016335 |
11 | 0.10221201 | 0.10198216 | 0.00022985 |
12 | 0.09883137 | 0.09863879 | 0.00019259 |
13 | 0.09566248 | 0.09540502 | 0.00025746 |
14 | 0.09249816 | 0.09227727 | 0.00022089 |
15 | 0.08953626 | 0.08925206 | 0.00028420 |
Таблица 5. Численное решение уравнения переноса с переменными коэффициентами центральная разностная схема метод прогонки
-------------kogda p0<0, pN>0--------------50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.03678794 | 0.03678794 | 0.00000000 |
1 | 0.03565917 | 0.03558189 | 0.00007728 |
2 | 0.03439784 | 0.03441538 | 0.00001754 |
3 | 0.03335557 | 0.03328711 | 0.00006846 |
4 | 0.03216179 | 0.03219583 | 0.00003404 |
5 | 0.03119895 | 0.03114032 | 0.00005863 |
6 | 0.03007027 | 0.03011942 | 0.00004915 |
7 | 0.02917987 | 0.02913199 | 0.00004788 |
8 | 0.02811435 | 0.02817693 | 0.00006258 |
9 | 0.02728957 | 0.02725318 | 0.00003639 |
10 | 0.02628567 | 0.02635971 | 0.00007405 |
11 | 0.02551993 | 0.02549554 | 0.00002439 |
12 | 0.02457633 | 0.02465970 | 0.00008337 |
13 | 0.02386341 | 0.02385126 | 0.00001215 |
14 | 0.02297890 | 0.02306932 | 0.00009042 |
15 | 0.02231302 | 0.02231302 | 0.00000000 |
Таблица 6. Численное решение уравнения переноса с переменными коэффициентами центральная разностная схема метод прогонки
-------------kogda p0>0, pN<0--------------50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.00379722 | 0.00375311 | 0.00004410 |
1 | 0.00328998 | 0.00328462 | 0.00000536 |
2 | 0.00291427 | 0.00287461 | 0.00003966 |
3 | 0.00250378 | 0.00251579 | 0.00001200 |
4 | 0.00225176 | 0.00220175 | 0.00005001 |
5 | 0.00190450 | 0.00192691 | 0.00002241 |
6 | 0.00172045 | 0.00168638 | 0.00003407 |
7 | 0.00145947 | 0.00147588 | 0.00001640 |
8 | 0.00129005 | 0.00129165 | 0.00000159 |
9 | 0.00109247 | 0.00113042 | 0.00003795 |
10 | 0.00092289 | 0.00098931 | 0.00006642 |
11 | 0.00074314 | 0.00086582 | 0.00012268 |
12 | 0.00056520 | 0.00075774 | 0.00019254 |
13 | 0.00038370 | 0.00066315 | 0.00027946 |
14 | 0.00020306 | 0.00058037 | 0.00037731 |
15 | 0.00002275 | 0.00050793 | 0.00048518 |
Текст программы смотри в приложении 2
2.3.2 Трехточечная схема с весом
Разностная схема для нашей задачи ((1)-(3)) имеет вид:
(0)
Уравнение (0) приведем к виду
(1)
Из уравнения (1) находим коэффициенты
, , ,
.
1) P0>0, PN>0 yNj+1 = м2j+1 → AN =0, CN=1, FN = м2j+1
(1.0)
Уравнение (1.0) приводим к виду
(1.1)
Из уравнения (1.1) находим
, ,
.
2) P0<0, PN<0 y0j+1 = м1j+1 → B0 =0, C0=1, F0 = м1j+1
. (2.0)
Уравнение (2.0) приводим к виду
(2.1)
Из уравнения (2.1) находим , ,
.
3)P0<0, PN>0
y0j+1 = м1j+1 → B0=0 ,C0=1, F0= м1j+1 ,
yNj+1 = м2j+1 → AN=0 ,CN=1, FN= м2j+1.
4) P0>0, PN<0
B0 =0,C0=1, F0= м1j+1
AN =0,CN=1, FN= м2j+1
Таблица 7. Численное решение уравнения переноса с переменными коэффициентами Трехточечная схема с весом Метод прогонки
-------------------kogda p0>0, pN>0---------------kogda G=1 | |||
50sloy N priblijennoe tochnoe pogreshnosti | |||
0 | 0.36842774 | 0.36787944 | 0.00054830 |
1 | 0.35627966 | 0.35581892 | 0.00046075 |
2 | 0.34461653 | 0.34415379 | 0.00046275 |
3 | 0.33324870 | 0.33287108 | 0.00037762 |
4 | 0.32234219 | 0.32195827 | 0.00038392 |
5 | 0.31170418 | 0.31140322 | 0.00030095 |
6 | 0.30150555 | 0.30119421 | 0.00031134 |
7 | 0.29155019 | 0.29131989 | 0.00023030 |
8 | 0.28201389 | 0.28176929 | 0.00024460 |
9 | 0.27269705 | 0.27253179 | 0.00016526 |
10 | 0.26378042 | 0.26359714 | 0.00018329 |
11 | 0.25506082 | 0.25495540 | 0.00010543 |
12 | 0.24672399 | 0.24659696 | 0.00012703 |
13 | 0.23856301 | 0.23851255 | 0.00005045 |
14 | 0.23076867 | 0.23069318 | 0.00007549 |
15 | 0.22313016 | 0.22313016 | 0.00000000 |
Таблица 8. Численное решение уравнения переноса на с переменнми коэффициентами Трехточечная схема с весом Метод прогонки
-------------------kogda p0>0, pN>0---------------kogda G=0.5 | |||
50sloy N priblijennoe tochnoe pogreshnosti | |||
0 | 0.22317966 | 0.36787944 | 0.14469979 |
1 | 0.32550240 | 0.35581892 | 0.03031652 |
2 | 0.21980791 | 0.34415379 | 0.12434588 |
3 | 0.32390953 | 0.33287108 | 0.00896156 |
4 | 0.17318247 | 0.32195827 | 0.14877580 |
5 | 0.30172608 | 0.31140322 | 0.00967714 |
6 | 0.15878469 | 0.30119421 | 0.14240953 |
7 | 0.28118803 | 0.29131989 | 0.01013186 |
8 | 0.16595060 | 0.28176929 | 0.11581869 |
9 | 0.25958363 | 0.27253179 | 0.01294816 |
10 | 0.10012442 | 0.26359714 | 0.16347272 |
11 | 0.23108668 | 0.25495540 | 0.02386872 |
12 | 0.10648083 | 0.24659696 | 0.14011613 |
13 | 0.24403326 | 0.23851255 | 0.00552071 |
14 | 0.10163574 | 0.23069318 | 0.12905744 |
15 | 0.22313016 | 0.22313016 | 0.00000000 |
Таблица 9. Численное решение уравнения переноса с переменными коэффициентами Трехточечная схема с весом Метод прогонки
-------------------kogda p0<0, pN<0--------------- kogda G=1 | |||
50sloy N priblijennoe tochnoe pogreshnosti | |||
0 | 0.36787944 | 0.36787944 | 0.00000000 |
1 | 0.35801340 | 0.35581892 | 0.00219448 |
2 | 0.36845033 | 0.34415379 | 0.02429654 |
3 | 0.35906842 | 0.33287108 | 0.02619734 |
4 | 0.37000945 | 0.32195827 | 0.04805117 |
5 | 0.36101823 | 0.31140322 | 0.04961501 |
6 | 0.37246014 | 0.30119421 | 0.07126592 |
7 | 0.36379087 | 0.29131989 | 0.07247098 |
8 | 0.37571304 | 0.28176929 | 0.09394375 |
9 | 0.36731988 | 0.27253179 | 0.09478809 |
10 | 0.37968642 | 0.26359714 | 0.11608928 |
11 | 0.37154421 | 0.25495540 | 0.11658881 |
12 | 0.38430710 | 0.24659696 | 0.13771013 |
13 | 0.37640856 | 0.23851255 | 0.13789601 |
14 | 0.38951172 | 0.23069318 | 0.15881854 |
15 | 0.38186439 | 0.22313016 | 0.15873423 |
Таблица 10 Численное решение уравнения переноса с переменными коэффициентами Трехточечная схема с весом Метод прогонки
-------------------kogda p0<0, pN<0--------------- | |||
kogda G=0,5 50sloy N priblijennoe tochnoe pogreshnosti | |||
0 | 0.36787944 | 0.36787944 | 0.00000000 |
1 | 0.31801913 | 0.35581892 | 0.03779978 |
2 | 0.36478621 | 0.34415379 | 0.02063242 |
3 | 0.34573407 | 0.33287108 | 0.01286299 |
4 | 0.36983022 | 0.32195827 | 0.04787195 |
5 | 0.36678412 | 0.31140322 | 0.05538090 |
6 | 0.34570117 | 0.30119421 | 0.04450696 |
7 | 0.34004986 | 0.29131989 | 0.04872997 |
8 | 0.33360167 | 0.28176929 | 0.05183238 |
9 | 0.35119193 | 0.27253179 | 0.07866014 |
10 | 0.35046403 | 0.26359714 | 0.08686690 |
11 | 0.35792253 | 0.25495540 | 0.10296714 |
12 | 0.36451445 | 0.24659696 | 0.11791748 |
13 | 0.35527614 | 0.23851255 | 0.11676359 |
14 | 0.38271932 | 0.23069318 | 0.15202614 |
15 | 0.39593489 | 0.22313016 | 0.17280473 |
Текст программы смотри в приложении 3
Глава III. Одномерное уравнение переноса с постоянными коэффициентами
3.1 Постановка задачи
Рассмотрим уравнение переноса вида
(3.1)
удовлетворяющее начальному условию
(3.2)
и граничным условиям
1. P>0 p>0, нет на левой границе условий.
2. P<0 p<0, нет на правой границе условий. (3.3)
Входные данные:
1) P>0
2) P<0
3.2 “Явные” схемы
Рассмотрим схему бегущего счета в обоих случаях.
1) p>0
В этом случае используется правая разностная схема
(3.1′)
; (3.2′)
. (3.3′)
Из уравнения (3.1′) следует
2) p<0
Разностная схема(левая) имеет вид:
; (3.1″)
; (3.2″)
(3.3″)
Из уравнения (3.1″) следует
Таблица 11. Численное решение уравнения переноса с постоянными коэффициентами схема бегущего счета “явная ” схема (правая разностная схема)
-------------kogda p>0-------------------------------------------50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 1.37301170 | 1.35914091 | 0.01387078 |
1 | 1.41878826 | 1.40520915 | 0.01357911 |
2 | 1.46606506 | 1.45283887 | 0.01322618 |
3 | 1.51488985 | 1.50208301 | 0.01280684 |
4 | 1.56531173 | 1.55299629 | 0.01231544 |
5 | 1.61738112 | 1.60563527 | 0.01174585 |
6 | 1.67114985 | 1.66005846 | 0.01109139 |
7 | 1.72667123 | 1.71632633 | 0.01034490 |
8 | 1.78400003 | 1.77450141 | 0.00949863 |
9 | 1.84319260 | 1.83464833 | 0.00854427 |
10 | 1.90430684 | 1.89683395 | 0.00747290 |
11 | 1.96740228 | 1.96112735 | 0.00627493 |
12 | 2.03254007 | 2.02759998 | 0.00494008 |
13 | 2.09978305 | 2.09632572 | 0.00345734 |
14 | 2.16919578 | 2.16738091 | 0.00181487 |
15 | 2.24084454 | 2.24084454 | 0.00000000 |
Таблица 12. Численное решение уравнения переноса с постоянными коэффициентами схема бегущего счета “явная ” схема (левая разностная схема)
-------------kogda p<0-------------50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.03678794 | 0.03678794 | 0.00000000 |
1 | 0.03444494 | 0.03558189 | 0.00113696 |
2 | 0.03220334 | 0.03441538 | 0.00221204 |
3 | 0.03005929 | 0.03328711 | 0.00322782 |
4 | 0.02800907 | 0.03219583 | 0.00418676 |
5 | 0.02604910 | 0.03114032 | 0.00509122 |
6 | 0.02417592 | 0.03011942 | 0.00594350 |
7 | 0.02238620 | 0.02913199 | 0.00674579 |
8 | 0.02067672 | 0.02817693 | 0.00750021 |
9 | 0.01904439 | 0.02725318 | 0.00820879 |
10 | 0.01748622 | 0.02635971 | 0.00887349 |
11 | 0.01599934 | 0.02549554 | 0.00949620 |
12 | 0.01458096 | 0.02465970 | 0.01007874 |
13 | 0.01322842 | 0.02385126 | 0.01062284 |
14 | 0.01193914 | 0.02306932 | 0.01113018 |
15 | 0.01071063 | 0.02231302 | 0.01160239 |
Текст программы смотри в приложении 4
3.3 Неявные схемы
Рассмотрим две различные разностные схемы:
1. Центрально-разностная схема.
2. Трехточечная схема с весом.
Все эти схемы сводятся к стандартному виду (3.4) и решаются методом прогонки
(3.4)
Коэффициенты Ai, Bi, Ci должны удовлетворять условиям:
(3.5)
Коэффициенты B0 , C0 , F0, AN ,CN ,FN находятся из граничных условий. В данной задаче в зависимости от знака функции p(x,t) ставятся граничные условия и тем самым находятся наши коэффициенты.
-
Когда р>0 задается правое граничное условие:
(3.3′)
Используя уравнения (3.3′) находим коэффициенты AN ,CN ,FN . Коэффициенты B0 , C0 , F0 находятся из дополнительного условия, которое ставится на левом конце.
2) Когда р<0 задается граничное условие на левом конце
(3.3″)
Используя уравнения (3.3″) находим коэффициенты B0 , C0 , F0
Коэффициенты AN ,CN ,FN находятся из дополнительного условия, которое ставится на правом конце.
3.3.1 Центрально-разностная схема
Разностная схема задачи (3.1)-(3.3) имеет следующий вид:
1) р>0. В этом случае граничное условие задается на правом конце:
(3.6)
Используя уравнение (3.6) находим коэффициенты AN =0, CN=1,
Дополнительное условие на левом конце имеет вид:
(3.7)
Приведем уравнение (3.7) к виду :
(3.7′)
Отсюда находим коэффициенты:
-
В случае, когда р<0, граничное условие ставится на левом конце
(3.8)
Используя уравнение (3.8) находим коэффициенты B0,=0, C0=1,
Дополнительное условие на правом конце имеет вид:
(3.9)
Приводим уравнение (3.9) к виду :
(3.9′)
отсюда находим коэффициенты:
Таблица 13. Численное решение уравнения переноса с постоянными коэффициентами центральная разностная схема метод прогонки
-------------kogda p>0--------------50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.03544452 | 0.03678794 | 0.00134342 |
1 | 0.03541069 | 0.03558189 | 0.00017120 |
2 | 0.03306824 | 0.03441538 | 0.00134714 |
3 | 0.03313883 | 0.03328711 | 0.00014828 |
4 | 0.03084494 | 0.03219583 | 0.00135089 |
5 | 0.03101552 | 0.03114032 | 0.00012480 |
6 | 0.02876471 | 0.03011942 | 0.00135472 |
7 | 0.02903119 | 0.02913199 | 0.00010080 |
8 | 0.02681828 | 0.02817693 | 0.00135865 |
9 | 0.02717688 | 0.02725318 | 0.00007630 |
10 | 0.02499699 | 0.02635971 | 0.00136272 |
11 | 0.02544422 | 0.02549554 | 0.00005132 |
12 | 0.02329272 | 0.02465970 | 0.00136698 |
13 | 0.02382538 | 0.02385126 | 0.00002588 |
14 | 0.02169787 | 0.02306932 | 0.00137145 |
15 | 0.02231302 | 0.02231302 | 0.00000000 |
Таблица 14. Численное решение уравнения переноса с постоянными коэффициентами центральная разностная схема метод прогонки
-------------kogda p<0--------------50sloy | |||
N priblijennoe tochnoe pogreshnosti | |||
0 | 0.03678794 | 0.03678794 | 0.00000000 |
1 | 0.03475182 | 0.03558189 | 0.00083008 |
2 | 0.03440516 | 0.03441538 | 0.00001021 |
3 | 0.03246493 | 0.03328711 | 0.00082218 |
4 | 0.03217504 | 0.03219583 | 0.00002079 |
5 | 0.03032529 | 0.03114032 | 0.00081503 |
6 | 0.03008771 | 0.03011942 | 0.00003171 |
7 | 0.02832337 | 0.02913199 | 0.00080861 |
8 | 0.02813396 | 0.02817693 | 0.00004297 |
9 | 0.02645027 | 0.02725318 | 0.00080290 |
10 | 0.02630518 | 0.02635971 | 0.00005453 |
11 | 0.02469766 | 0.02549554 | 0.00079788 |
12 | 0.02459330 | 0.02465970 | 0.00006639 |
13 | 0.02305773 | 0.02385126 | 0.00079352 |
14 | 0.02299077 | 0.02306932 | 0.00007855 |
15 | 0.02152320 | 0.02231302 | 0.00078982 |
Текст программы смотри в приложении 5
3.3.2 Трехточечная схема с весом
Разностная схема имеет вид:
вещественный параметр
1. p>0
На левом конце ставится дополнительное условие
2. p<0
На правом конце ставится дополнительное условие
Разностные уравнения и дополнительные условия сводятся к стандартному виду (3.4) и решаются методом прогонки.
Таблица 15. Численное решение уравнения переноса с постоянными коэффициентами Трехточечная схема с весом Метод прогонки
50sloy N priblijennoe tochnoe pogreshnosti | |||
-------------------kogda p>0---------------kogda G=1 | |||
0 | 0.03684277 | 0.03678794 | 0.00005483 |
1 | 0.03562797 | 0.03558189 | 0.00004607 |
2 | 0.03446165 | 0.03441538 | 0.00004627 |
3 | 0.03332487 | 0.03328711 | 0.00003776 |
4 | 0.03223422 | 0.03219583 | 0.00003839 |
5 | 0.03117042 | 0.03114032 | 0.00003010 |
6 | 0.03015056 | 0.03011942 | 0.00003113 |
7 | 0.02915502 | 0.02913199 | 0.00002303 |
8 | 0.02820139 | 0.02817693 | 0.00002446 |
9 | 0.02726970 | 0.02725318 | 0.00001653 |
10 | 0.02637804 | 0.02635971 | 0.00001833 |
11 | 0.02550608 | 0.02549554 | 0.00001054 |
12 | 0.02467240 | 0.02465970 | 0.00001270 |
13 | 0.02385630 | 0.02385126 | 0.00000505 |
14 | 0.02307687 | 0.02306932 | 0.00000755 |
15 | 0.02231302 | 0.02231302 | 0.00000000 |
Таблица 16. Численное решение уравнения переноса с постоянными коэффициентами Трехточечная схема с весом Метод прогонки
-------------------kogda p>0---------------kogda G=0.5 | |||
50sloy N priblijennoe tochnoe pogreshnosti | |||
0 | 0.02231797 | 0.03678794 | 0.01446998 |
1 | 0.03255024 | 0.03558189 | 0.00303165 |
2 | 0.02198079 | 0.03441538 | 0.01243459 |
3 | 0.03239095 | 0.03328711 | 0.00089616 |
4 | 0.01731825 | 0.03219583 | 0.01487758 |
5 | 0.03017261 | 0.03114032 | 0.00096771 |
6 | 0.01587847 | 0.03011942 | 0.01424095 |
7 | 0.02811880 | 0.02913199 | 0.00101319 |
8 | 0.01659506 | 0.02817693 | 0.01158187 |
9 | 0.02595836 | 0.02725318 | 0.00129482 |
10 | 0.01001244 | 0.02635971 | 0.01634727 |
11 | 0.02310867 | 0.02549554 | 0.00238687 |
12 | 0.01064808 | 0.02465970 | 0.01401161 |
13 | 0.02440333 | 0.02385126 | 0.00055207 |
14 | 0.01016357 | 0.02306932 | 0.01290574 |
15 | 0.02231302 | 0.02231302 | 0.00000000 |
Таблица 17. Численное решение уравнения переноса с постоянными коэффициентами Трехточечная схема с весом Метод прогонки
-------------------kogda p<0--------------- kogda G=1 | |||
50sloy N priblijennoe tochnoe pogreshnosti | |||
0 | 0.03678794 | 0.03678794 | 0.00000000 |
1 | 0.03676351 | 0.03654351 | 0.00022000 |
2 | 0.03679165 | 0.03630069 | 0.00049096 |
3 | 0.03676949 | 0.03605949 | 0.00070999 |
4 | 0.03679966 | 0.03581990 | 0.00097976 |
5 | 0.03677973 | 0.03558189 | 0.00119784 |
6 | 0.03681190 | 0.03534547 | 0.00146643 |
7 | 0.03679418 | 0.03511062 | 0.00168357 |
8 | 0.03682831 | 0.03487732 | 0.00195098 |
9 | 0.03681277 | 0.03464558 | 0.00216719 |
10 | 0.03684883 | 0.03441538 | 0.00243345 |
11 | 0.03683543 | 0.03418671 | 0.00264872 |
12 | 0.03687339 | 0.03395955 | 0.00291384 |
13 | 0.03686210 | 0.03373391 | 0.00312820 |
14 | 0.03690193 | 0.03350976 | 0.00339217 |
15 | 0.03689273 | 0.03328711 | 0.00360562 |
Таблица 18. Численное решение уравнения переноса с постоянными коэффициентами Трехточечная схема с весом Метод прогонки
-------------------kogda p<0--------------- kogda G=0.5 | |||
50sloy N priblijennoe tochnoe pogreshnosti | |||
0 | 0.03678794 | 0.03678794 | 0.00000000 |
1 | 0.03697886 | 0.03654351 | 0.00043535 |
2 | 0.03685351 | 0.03630069 | 0.00055282 |
3 | 0.03694215 | 0.03605949 | 0.00088265 |
4 | 0.03678490 | 0.03581990 | 0.00096500 |
5 | 0.03709634 | 0.03558189 | 0.00151445 |
6 | 0.03702149 | 0.03534547 | 0.00167603 |
7 | 0.03710468 | 0.03511062 | 0.00199406 |
8 | 0.03712939 | 0.03487732 | 0.00225206 |
9 | 0.03693008 | 0.03464558 | 0.00228450 |
10 | 0.03706115 | 0.03441538 | 0.00264577 |
11 | 0.03679396 | 0.03418671 | 0.00260725 |
12 | 0.03713746 | 0.03395955 | 0.00317791 |
13 | 0.03669566 | 0.03373391 | 0.00296175 |
14 | 0.03706614 | 0.03350976 | 0.00355638 |
15 | 0.03675340 | 0.03328711 | 0.00346629 |
Текст программы смотри в приложении 6
3.3.3 Схема “прямоугольник”
1. p>0 разностная схема правая имеет вид
2. p<0 разностная схема левая имеет вид
3.3.4 Схема со сглаживанием
Разностная схема имеет вид
1. p>0
2. p<0
Схема сводится к стандартному виду и решается методом прогонки.
3.3.5 Схема прямоугольник со сглаживанием
1.p>0
2. p<0
3.3.6 “Шахматная” схема
Имеем схему с весом
1. p>0
2. p<0
Параметр управляет реализацией схемы. При =0 и
(i+j)- четном решаем по явной схеме, при =1 и
(i+j)- нечетном решаем по неявной схеме явно. В целом схема реализуется явно.
Заключение
Теория разностных схем является самостоятельным разделом вычислительной математики, где изучаются методы приближенного решения дифференциальных уравнений путем замены их конечно –разностными уравнениями (разностными схемами).
Конечно –разностный метод (метод сеток) –один из мощных достаточно универсальных методов современной вычислительной математики. Этот метод относится к классу машинных методов решения широкого круга задач для дифференциальных уравнений.
В дипломной работе рассмотрены “явные” и неявные разностные методы решения для одномерного уравнения переноса с переменными коэффициентами и для одномерного уравнения переноса с постоянными коэффициентами на неравномерных сетках. Использованы такие разностные схемы, как схема бегущего счета, трехточечная схема с весом, центрально –разностная схема, схема “прямоугольник”, схема со сглаживанием, схема прямоугольник со сглаживанием, “шахматная ” схема.
Произведены некоторые расчеты для одномерного уравнения переноса с переменными и постоянными коэффициентами на неравномерных сетках, с целью определения наиболее устойчивой разностной схемы.
Исследование показало, что наиболее устойчивым методом для одномерного уравнения переноса с переменными коэффициентами является:
-
При p0>0, pN>0 трехточечная схема с весом при G=1, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00007549.
-
При p0<0, pN<0 неявная схема с центральной разностью, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00007574.
-
При p0<0, pN>0 так же схема с центральной разностью, абсолютная погрешность составляет 0,00009042.
Так же произведены расчеты некоторых методов одномерного уравнения переноса с постоянными коэффициентами.
Исследование показало, что наиболее устойчивым методом для одномерного уравнения переноса с постоянными коэффициентами является:
-
При p>0 трехточечная схема с весом при G=1, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00000755.
2) При p<0 также трехточечная схема с весом при G=1, абсолютная погрешность на 50-м слое составляет 0,00022000
Список использованной литературы
-
Самарский А.А. Теория разностных схем. М.:Наука, 1977, с. 616.
-
Самарский А.А., Гулин А.В.Численные методы. М.Наука, 1989, с. 315.
-
Охлопков Н.М. Численные методы решения обыкновенных дифференциальных уравнений. Якутск: Изд-во Ягу, 1993, с. 38.
-
Охлопков Н.М., Охлопков Г.Н. Введение в специальность “Прикладная математика” часть 1,2 Якутск: Изд-во Ягу, 1997, с. 93, с. 85.
-
Охлопков Н.М., Иванов Ф.В. Вычислительные алгоритмы решения задач для дифференциальных уравнений Якутск: Изд-воЯгу, 1992, с.65.
-
Охлопков Н.М.,Иванов Ф.В. Пакет программ численного решения задач математической физики ч.2, Якутск: Изд-во Ягу, 1989, с 15.
-
Охлопков Н.М. Об экономичных методах решения задач математической физики. Якутск: Изд-во Ягу, 1982, с. 39.
Приложение 1
Уравнение с переменными коэффициентами
“Явная” схема.
Левая разностная схема
p0<0, pN<0
uses crt;
const n=15;j0=20;tt=1;l=1;A=0.01;a1=1;q=2;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j:integer;
x,h,t,tau,d:hi;
u,u1,g,u2,u11,u12:m;
function ut(p,r:real):real;
begin ut:= A*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A*exp(p+r)*(p*(p+1)+r*(r+1)+7); end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
function p1(p,r:real):real;
begin p1:=-(p+r+2);end;
begin
clrscr;
writeln ( 'sxema begushego scheta');
writeln(' kogda p0<0,pN<0');
writeln(' levaya raznostnaya sxema');
readln;
h[0]:=0;
h[1]:=a1;
for i:=2 to n do
h[i]:=l/n;
tau[j]:=tt/j0;
t[j]:=0;j:=1;
for i:=0 to n do
begin
x[i]:=i*h[i];t[j]:=j*tau[j];
u[i]:= A*(exp(x[i]));
end;
while t[j]<=tt do begin clrscr;
t[j]:=t[j]+tau[j];
u1[0]:=A*exp((t[j]));
for i:=n-1 downto 0 do
begin
g[i]:=tau[j+1]*p1(x[i],t[j+1])/h[i+1];
u11[i]:=(-g[i]*u1[i+1])+(ro(x[i],t[j+1])*u[i]);
u12[i]:=tau[j+1]*fi(x[i],t[j]);
u1[i]:=(u11[i]+u12[i])/(ro(x[i],t[j+1])+g[i]);
end;
for i:=n-1 downto 0 do
u[i]:=u1[i];
writeln('----------------------------------------------------------');
write(' ',j,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
j:=j+1;
writeln('--------------------------------------------------------------');
readln;
end;
end.
Уравнение с переменными коэффициентами
“Явная” схема.
Схема бегущего счета.
Правая разностная схема
p0>0, pN>0
uses crt;
const n=15;j0=50;tt=1;l=0.5;A=0.5;a1=2;q=2;
type w=array[0..n] of real;
hi=array[0..n] of real;
var i,j:integer;
x,h,t,tau,d:hi;
u,u1,g,u2,u11,u12:w;
function ut(p,r:real):real;
begin ut:= A*exp(p+r);end; {to4noe reshenie}
function fi(p,r:real):real;
begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
function p1(p,r:real):real;
begin p1:=p+r+2;end;
begin clrscr;
writeln ( 'sxema begushego scheta');
writeln(' kogda p0>0,pN>0');
writeln(' pravaya raznostnaya sxema');
readln;
h[0] := 0;
h[1] := a1;
for i:=2 to n do
h[i] := h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];
tau[j]:=t[j]-t[j-1];
t[j]:=0;j:=1;
for i:=0 to n do
begin
x[i]:=i*h[i];t[j]:=j*tau[j];
u[i]:= A*exp(x[i]); {u0(x)}
end;
begin
while t[j]<=tt do begin clrscr;
t[j]:=t[j]+tau[j];
u1[i]:=A*exp(l+t[j]); {mu2(t)}
for i:=n-1 downto 0 do
begin
g[i]:=(tau[j+1]*p1(x[i],t[j+1])/h[i+1]); {R[i,j+1]}
u11[i]:=(g[i]*u1[i+1])+ro(x[i],t[j+1])*u[i];
u12[i]:=tau[j+1]*fi(x[i],t[j+1]);
u1[i]:=(u11[i]+u12[i])/(ro(x[i],t[j+1])+g[i]); {y
end;
for i:=n-1 downto 0 do begin
u[i]:=u1[i]; end;
writeln('----------------------------------------------------------');
write(' ',j,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i :=0 to n do
begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
j:=j+1;
writeln('--------------------------------------------------------------'
readln;
end;
end;
end.
Приложение 2
Уравнение с переменными коэффициентами
Схема с центральной разностью
p0>0, pN>0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;q=3;g1=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:= begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
p1(p,r:real):real;
begin p1:=p+r+2;end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0>0,pn>0');
readln;
h[0]:=0;
h[1]:=a1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1+(p1(x[i],t[j])*tau[j])/h[i]+tau[j]*q;
b[0]:=(tau[j]*p1)/h[i];
a[n]:=0;
c[n]:=1;
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;
f[0]:=tau[j]*fi(x[0],t[j])+u[0];
f[n]:= A1*exp(l+t[j]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с переменными коэффициентами
Схема с центральной разностью
p0<0, pN<0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1; q=3;g1=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A1*exp(p+r)*(p*(p+1)+r*(r+1)+7);end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
function p1(p,r:real):real;
begin p1:=-(p+r+2);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0<0,pn<0');
readln;
h[0]:=0;
h[1]:=g1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1;
b[0]:=0;
a[n]:=-(tau[j]*p1[x)/h[i];
c[n]:=1-(p1*tau[j])/h[i]+tau[j]*q;
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;
f[0]:=A1*exp(t[j]);
f[n]:= (tau[j]*fi(x[n],t[j])+u[n]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с переменными коэффициентами
Схема с центральной разностью.
p00
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;q=3;a2=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= v*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A1*exp(p+r)*((p+r+10)-(2*p-1)*exp(2*r);end;
function ro(p,r:real):real;
begin ro:=p+r+10;end;
function p1(p,r:real):real;
begin p1:=(2*p-1)*exp(2*r);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p00');
readln;
h[0]:=0;
h[1]:=a2;
for i:=2 to n do
h[i]:=h[i-1]*q1;
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1;
b[0]:=0;
a[n]:=0;
c[n]:=1;
for i:=1 to n-1 do begin
r[i]:=tau[j+1]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j+1]*fi(x[i],t[j]);end;
f[0]:=A1*exp(t[j]);
f[n]:=A1*exp(l+t[j]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с переменными коэффициентами
Схема с центральной разностью.
p0>0, p<0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1; a2=1;q=3;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A1*exp(p+r)*((p+r+10)-(2*p-1)*exp(2*r);end;
function ro(p,r:real):real;
begin ro:=p+r+10;end;
function p1(p,r:real):real;
begin p1:=(2*p-1)*exp(2*r);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0>0,pn<0');
readln;
h[0]:=0;
h[1]:=a2;
for i:=2 to n do
h[i]:=h[i-1]*q;
h[i]:=x[i]-x[i-1];
tau[j]:=t[j]-tau[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=p1+ro*tau[j]/h[i];
b[0]:=tau[j]*p1/h[i];
a[n]:=tau[j]*p1/h[i];
c[n]:=-ro+p1*tau[j]/h[i];
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;
f[0]:=tau[j+1]*fi(x[0],t[j])+ro*u[0];
f[n]:=-(tau[j+1]*fi(x[n],t[j])+ro*u[n]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Приложение 3
Уравнение с переменными коэффициентами
Трехточечная схема с весом
Метод прогонки
p0>0, pN>0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;q=3;a2=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k,G:integer;
h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
function p1(p,r:real):real;
begin p1:=p+r+2;end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema begushego scheta');
writeln(' metod progonki');
writeln(' ------------------------------' );
writeln('-------------kogda p0>0,pN>0------------');
writeln(' vvedite G=' );
read(G);
writeln('----------------------------------------');
readln;
readln;
h[0]:=0;
h[1]:=a2;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=ro+(p1*tau[j])/h[i];
b[0]:=G*tau[j]*p1/h[i];
a[n]:=0;
c[n]:=1;
for i:=1 to n-1 do begin
a[i]:=-G*p1*tau[j]/(2*h[i]);
c[i]:=ro;
b[i]:=-a[i];
f1[i]:=(1-G)*p1*tau[j]/(2*h[i]);
f2[i]:=ro*u[i];
f3[i]:=G*tau[j]*fi(x[i],t[j]);
f4[i]:=(1-G)*tau[j]*fi(x[i],t[j]-tau[j]);
f[i]:=f1[i]*(u[i+1]-u[i-1])+f2[i]+f3[i]+f4[i];
end;
f5[i]:=(1-G)*p1*(u[1]-u[0])*tau[j]/h[i];
f6[i]:=ro*u[0]+f5[i]+G*tau[j]*fi(x[0],t[j]+tau[j]);
f[0]:=f6[j]+(1-G)*tau[j]*fi(x[0],t[j]);
f[n]:= A1*exp(l+t[j]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с переменными коэффициентами
Трехточечная схема с весом
Метод прогонки
p0<0, pN<0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;q=3;a2=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k,G:integer;
h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A*exp(p+r)*(p*(p+1)+r*(r+1)+7); end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
function p1(p,r:real):real;
begin p1:=-(p+r+2);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'trextochechnaya sxema');
writeln(' kogda p<0');
writeln(' vvedite G=' );
read(G);
writeln('----------------------------------------------------');
readln;
readln;
h[0]:=0;
h[1]:=a2;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1;
b[0]:=0;
a[n]:=-g*(tau[j]*p1)/h[i];
c[n]:=ro-g*(p1*tau[j])/h[i];
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=(-g*p1*tau[j])/(2*h[i]);
c[i]:=ro;
b[i]:=-a[i];
f1[i]:=(1-g)*(p1*tau[j])/(2*h[i]);
f2[i]:=ro*u[i];
f3[i]:=g*tau[j]*fi(x[i],t[j]);
f4[i]:=(1-g)*tau[j]*fi(x[i],t[j]-tau[j]);
f[i]:=f1[i]*(u[i+1]-u[i-1])+f2[i]+f3[i]+f4[i];end;
f[0]:=A1*exp(t[j]);
f5[i]:=(1-g)*p1*(u[1]-u[0])*tau[j]/h[i];
f6[i]:=ro*u[0]+f5[i]+g*tau[j]*fi(x[0],t[j]+tau[j]);
f[n]:=f6[j]+(1-g)*tau[j]*fi(x[0],t[j]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Приложение 4
Уравнение с постоянными коэффициентами
“Явная” схема.
Левая разностная схема
p<0
uses crt;
const n=15;j0=50;tt=1;l=1;A=1;B=1;p1=1;q=3;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j:integer;
h,d,tau,t:hi;
u11,u12:real;
u,u1,x,g,u2:m;
function ut(p,r:real):real;
begin ut:= A*exp(B*(p+r));end;
function fi(p,r:real):real;
begin fi:=A*B*exp(B*(p+r))*(1-p1+q/B); end;
begin
clrscr;
writeln ( 'sxema begushego scheta');
writeln(' kogda p0>0,pN>0');
writeln(' pravaya raznostnaya sxema');
readln;
h[0]:=0;
h[1]:=a1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;j:=1;
for i:=0 to n do
begin
x[i]:=i*h;t[j]:=j*tau[j];
u[i]:= A*(exp(B*(x[i])));
end;
while t[j]<=tt do begin clrscr;
t[j]:=t[j]+tau[j];
u1[n]:=A*exp(B*(l+t[j]));
for i:=n-1 downto 0 do begin
g[i]:=(tau[j+1]*p1)/h[i];
u11:=(g[i]*u1[i+1])+u[i];
u12:=tau*fi(x[i],t[j]);
u1[i]:=(u11+u12)/(1+g[i]+tau[j+1]*q);
end;
for i:=0 to n do u[i]:=u1[i];
writeln('----------------------------------------------------------');
write(' ',j,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t):6:8,' ',d[i]:6:8,' '); end;
j:=j+1;
writeln('--------------------------------------------------------------');
readln;
end;
end.
Уравнение с постоянными коэффициентами
“Явная” схема.
Схема бегущего счета.
Правая разностная схема
p>0
uses crt;
const n=15;j0=50;tt=1;l=1;A=1;B=-1;p1=-3;q=3;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j:integer;
x,h,d,tau,t:hi;
u11,u12:real;
u,u1,g:m;
function ut(p,r:real):real;
begin ut:= A*exp(B*(p+r));end;
function fi(p,r:real):real;
begin fi:=A*B*exp(B*(p+r))*(1-p1+q/B); end;
begin
clrscr;
writeln ( 'sxema begushego scheta');
writeln(' kogda p0<0,pN<0');
writeln(' levaya raznostnaya sxema');
readln;
h[0]:=0;
h[1]:=a1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;j:=1;
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A*(exp(B*(x[i])));
end;
while t[j]<=tt do begin clrscr;
t[j]:=t[j]+tau[j];
u1[0]:=A*exp(B*(t[j]));
for i:=1 to n do begin
g[i]:=(tau[j]*p1)/h[i];
u11:=(-g[i]*u1[i-1])+u[i];
u12:=tau[j]*fi(x[i],t[j]);
u1[i]:=(u11+u12)/(1-g[i]+tau[j]*q);
end;
for i:=0 to n do u[i]:=u1[i];
writeln('----------------------------------------------------------');
write(' ',j,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[j]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[j]:6:8,' '); end;
j:=j+1;
writeln('--------------------------------------------------------------');
readln;
end;
end.
Приложение 5.
Уравнение с постоянными коэффициентами
Схема с центральной разностью
p>0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;B1=1;p1=1;q=3;g1=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(B1*(p+r));end;
function fi(p,r:real):real;
begin fi:=A1*B1*exp(B1*(p+r))*(1-p+q/B);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0>0,pn>0');
readln;
h[0]:=0;
h[1]:=a1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(B1*(x[i]));
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1+(p1*tau[j+1])/h[1]+tau[j+1]*q;
b[0]:=(tau[j+1]*p1)/h[1];
a[n]:=0;
c[n]:=1;
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;
f[0]:=tau[j]*fi(x[0],t[j])+u[0];
f[n]:= A1*exp(B1*(l+t[j]));
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с постоянными коэффициентами
Схема с центральной разностью
P<0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;B1=-1;p1=-1; q=3;g1=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(B1*(p+r));end;
function fi(p,r:real):real;
begin fi:=A1*B1*exp(B1*(p+r))*(1-p1+q/B);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0<0,pn<0');
readln;
h[0]:=0;
h[1]:=g1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(B1*(x[i]));
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1;
b[0]:=0;
a[n]:=-(tau[j]*p1)/h[i];
c[n]:=1-(p1*tau[j])/h[i]+tau[j]*q;
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;
f[0]:=A1*exp(t[j]);
f[n]:= (tau[j]*fi(x[n],t[j])+u[n]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Приложение 6
Уравнение с постоянными коэффициентами
Трехточечная схема с весом
Метод прогонки
p>0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;B1=1;p1=1;q=3;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k,G:integer;
h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(B1*(p+r));end;
function fi(p,r:real):real;
begin fi:=A1*B1*exp(B1*(p+r))*(1-p1+q/B1);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema begushego scheta');
writeln(' metod progonki');
writeln(' ------------------------------' );
writeln('-------------kogda p0>0,pN>0------------');
writeln(' vvedite G=' );
read(G);
writeln('----------------------------------------');
readln;
readln;
h[0]:=0;
h[1]:=a1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(B1*(x[i]));
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=ro+(p1*tau[j])/h[i];
b[0]:=G*tau[j]*p1/h[i];
a[n]:=0;
c[n]:=1;
for i:=1 to n-1 do begin
a[i]:=-G*p1*tau[j]/(2*h[i]);
c[i]:=ro;
b[i]:=-a[i];
f1[i]:=(1-G)*p1*tau[j]/(2*h[i]);
f2[i]:=ro*u[i];
f3[i]:=G*tau[j]*fi(x[i],t[j]);
f4[i]:=(1-G)*tau[j]*fi(x[i],t[j]-tau[j]);
f[i]:=f1[i]*(u[i+1]-u[i-1])+f2[i]+f3[i]+f4[i];
end;
f5[i]:=(1-G)*p1*(u[1]-u[0])*tau[j]/h[i];
f6[i]:=ro*u[0]+f5[i]+G*tau[j]*fi(x[0],t[j]+tau[j]);
f[0]:=f6[j]+(1-G)*tau[j]*fi(x[0],t[j]);
f[n]:= A1*exp(B1*(l+t[j]));
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с постоянными коэффициентами
Трехточечная схема с весом
Метод прогонки
P<0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;B1=-1;p1=-1;q=3;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k,G:integer;
h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(B1*(p+r));end;
function fi(p,r:real):real;
begin fi:=A1*B1*exp(B1*(p+r))*(1-p1+q/B1);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'trextochechnaya sxema');
writeln(' kogda p<0');
writeln(' vvedite G=' );
read(G);
writeln('----------------------------------------------------');
readln;
readln;
h[0]:=0;
h[1]:=a1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(B1*(x[i]));
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1;
b[0]:=0;
a[n]:=-g*(tau[j]*p1)/h[i];
c[n]:=ro-g*(p1*tau[j])/h[i];
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=(-g*p1*tau[j])/(2*h[i]);
c[i]:=ro;
b[i]:=-a[i];
f1[i]:=(1-g)*(p1*tau[j])/(2*h[i]);
f2[i]:=ro*u[i];
f3[i]:=g*tau[j]*fi(x[i],t[j]);
f4[i]:=(1-g)*tau[j]*fi(x[i],t[j]-tau[j]);
f[i]:=f1[i]*(u[i+1]-u[i-1])+f2[i]+f3[i]+f4[i];end;
f[0]:=A1*exp(B1*(t[j]));
f5[i]:=(1-g)*p1*(u[1]-u[0])*tau[j]/h[i];
f6[i]:=ro*u[0]+f5[i]+g*tau[j]*fi(x[0],t[j]+tau[j]);
f[n]:=f6[j]+(1-g)*tau[j]*fi(x[0],t[j]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
1>1>1>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>