Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Глава III . Одномерное уравнение переноса с постоянными коэффициентами



Постановка задачи

 

Рассмотрим уравнение переноса вида

 

 (3.1)

 

удовлетворяющее начальному условию

 

 (3.2)

 

и граничным условиям

1. P> 0  p> 0, нет на левой границе условий.

2. P< 0  p< 0, нет на правой границе условий. (3.3)

Входные данные:

1) P> 0

 

 

2) P< 0

 


Явные” схемы

 

Рассмотрим схему бегущего счета в обоих случаях.

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

Неявные схемы

 

Рассмотрим две различные разностные схемы:

1. Центрально-разностная схема.

2. Трехточечная схема с весом.

Все эти схемы сводятся к стандартному виду (3.4) и решаются методом прогонки

 

 (3.4)

 

Коэффициенты Ai, Bi, Ci должны удовлетворять условиям:

 

 (3.5)

 

Коэффициенты B0 , C0, F0, AN, CN, FN находятся из граничных условий. В данной задаче в зависимости от знака функции p(x, t) ставятся граничные условия и тем самым находятся наши коэффициенты.

1) Когда р> 0 задается правое граничное условие:


 (3.3′ )

 

Используя уравнения (3.3′ ) находим коэффициенты AN, CN, FN. Коэффициенты B0 , C0, F0 находятся из дополнительного условия, которое ставится на левом конце.

 

 

2) Когда р< 0 задается граничное условие на левом конце

 

 (3.3″ )

 

Используя уравнения (3.3″ ) находим коэффициенты B0 , C0, F0

Коэффициенты AN, CN, FN находятся из дополнительного условия, которое ставится на правом конце.

 

Центрально-разностная схема

Разностная схема задачи (3.1)-(3.3) имеет следующий вид:

 


1) р> 0. В этом случае граничное условие задается на правом конце:

 

 (3.6)

 

Используя уравнение (3.6) находим коэффициенты AN =0, CN=1,

Дополнительное условие на левом конце имеет вид:

 

 (3.7)

 

Приведем уравнение (3.7) к виду:

 

 (3.7′ )

 

Отсюда находим коэффициенты:

 

2) В случае, когда р< 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

Трехточечная схема с весом

Разностная схема имеет вид:

 

 

вещественный параметр

 

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 разностная схема левая имеет вид


Схема со сглаживанием

Разностная схема имеет вид

 

 

1. p> 0

 

2. p< 0

 

Схема сводится к стандартному виду и решается методом прогонки.

 

Схема прямоугольник со сглаживанием

 

1.p> 0

2. p< 0

 

Шахматная” схема

Имеем схему с весом

 

1. p> 0

2. p< 0

Параметр  управляет реализацией схемы. При =0 и

(i+j)- четном решаем по явной схеме, при =1 и

(i+j)- нечетном решаем по неявной схеме явно. В целом схема реализуется явно.


Заключение

 

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

Конечно –разностный метод (метод сеток) –один из мощных достаточно универсальных методов современной вычислительной математики. Этот метод относится к классу машинных методов решения широкого круга задач для дифференциальных уравнений.

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

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

Исследование показало, что наиболее устойчивым методом для одномерного уравнения переноса с переменными коэффициентами является:

1) При p0> 0, pN> 0 трехточечная схема с весом при G=1, абсолютная погрешность аппроксимации на 50-м слое составляет 0, 00007549.

2) При p0< 0, pN< 0 неявная схема с центральной разностью, абсолютная погрешность аппроксимации на 50-м слое составляет 0, 00007574.

3) При p0< 0, pN> 0 так же схема с центральной разностью, абсолютная погрешность составляет 0, 00009042.

Так же произведены расчеты некоторых методов одномерного уравнения переноса с постоянными коэффициентами.

Исследование показало, что наиболее устойчивым методом для одномерного уравнения переноса с постоянными коэффициентами является:

1) При p> 0 трехточечная схема с весом при G=1, абсолютная погрешность аппроксимации на 50-м слое составляет 0, 00000755.

2) При p< 0 также трехточечная схема с весом при G=1, абсолютная погрешность на 50-м слое составляет 0, 00022000


Список использованной литературы

 

1. Самарский А.А. Теория разностных схем. М.: Наука, 1977, с. 616.

2. Самарский А.А., Гулин А.В.Численные методы. М.Наука, 1989, с. 315.

3. Охлопков Н.М. Численные методы решения обыкновенных дифференциальных уравнений. Якутск: Изд-во Ягу, 1993, с. 38.

4. Охлопков Н.М., Охлопков Г.Н. Введение в специальность “Прикладная математика” часть 1, 2 Якутск: Изд-во Ягу, 1997, с. 93, с. 85.

5. Охлопков Н.М., Иванов Ф.В. Вычислительные алгоритмы решения задач для дифференциальных уравнений Якутск: Изд-воЯгу, 1992, с.65.

6. Охлопков Н.М., Иванов Ф.В. Пакет программ численного решения задач математической физики ч.2, Якутск: Изд-во Ягу, 1989, с 15.

7. Охлопков Н.М. Об экономичных методах решения задач математической физики. Якутск: Изд-во Ягу, 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.

 

Уравнение с переменными коэффициентами

Схема с центральной разностью.

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: 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 p0< 0, pn> 0');

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;


Поделиться:



Последнее изменение этой страницы: 2019-10-03; Просмотров: 181; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.673 с.)
Главная | Случайная страница | Обратная связь