Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичні матеріали для забезпечення лабораторн...doc
Скачиваний:
3
Добавлен:
12.11.2019
Размер:
673.28 Кб
Скачать

Додаток Тексти програм

  1. Метод прогону.

Uses Crt; {підключення модуля Crt}

Var

c,d,y: array [0..20] of real;{прогоночні коеф. і шукана функція}

al0,al1,b0,b1:real;

a,b:real; {крайові умови}

aa,bb:real;

n : integer; {кількість вузлів інтегрування}

h:real;

і,j: byte;{службові}

o:char;{відповідь користувача}

flag : boolean;{службова}

{**********************************************************}

procedure rab;forward;

procedure vyvod;forward;

{**********************************************************}

procedure vvod;{процедура введення}

begin

clrscr;

textcolor(7);

Write('УВЕДІТЬ КІЛЬКІСТЬ КРОКІВ ');

ReadLn(n);

writeln('УВЕДІТЬ КОЕФІЦІЄНТИ КРАЙОВИХ УМОВ ');

write('a, al0, al1, aa, b, b0, b1, bb');

readln(a, al0, al1, aa, b, b0, b1, bb);

rab;

end;

{************************************************************}

procedure shap;{процедура виводу шапки}

begin

repeat {основний цикл діалогу з користувачем}

ClrScr;

textcolor(15);

writeln('СПЕЦ РОЗДІЛИ МАТЕМАТИКИ');

writeln('ЛАБОРАТОРНА РОБОТА ');

writeln('(с) AJ 7.05.2001');

writeln('МЕТОД ОРТОГОНАЛЬНОГО ПРОГОНУ (розв’язку КРАЙОВОЇ ЗАДАЧІ)');

writeln;

writeln('ЗРОБІТЬ ВИБІР');

writeln('p - ПРОДОВЖИТИ');

writeln('Esc - ВИХІД');

o:=readkey; {відповідь користувача}

o:=upcase(o);

case o of

'P' :begin

vvod;{уведення даних}

end;

#27: halt {вихід із програми}

else Continue;

end;

until flag;

end;

{**********************************************************}

function p(x:real) : real;{функція р(х)}

begin

p:=x*x+1;

end;

{**********************************************************}

function q(x:real) : real;{функція q(х)}

begin

q:=x-1;

end;

{**********************************************************}

function f(x:real) : real;{функція f(х)}

begin

f:=x+2;

end;

{**********************************************************}

procedure rab;{основна процедура обчислень}

var r,ff,m,nn,x : real;

begin

h:=(b-a)/n;

c[0]:= al1/(al0*h-al1);

d[0]:= h*aa/al1;

for i:=1 to n do

begin

x:=a+i*h;

r:=1/(1+h/2*p(x));

m:=r*(h*h*q(x)-2);

nn:=r*(1-h/2*p(x));

ff:=h*h*r*f(x);

c[і]:=1/(m-nn*c[і-1]); {обчислення прогоночних коеф}

d[i]:=ff-nn*c[i-1]*d[i-1];

end;

y[n+1]:=(bb*h+b1*c[n-1]*d[n])/(b0*h+b1*(c[n]+1));

for і:=n downto 1 do

begin {наповнення вектора В}

y[і]:=c[і]*(d[і]-y[і+1]);

end;

vyvod;{перехід на вивід}

end;

{***************************************************************}

procedure vyvod;{процедура виводу вектора В}

Var x: real;

Begin

Clrscr;

Textcolor (10);

writeln('РЕЗУЛЬТАТ ');

Textcolor (12);

For i:=1 to n+1 do

begin

x:=a+(i-1)*h;

writeln(x:0:2,' ', y[i]:0:2,' ');

end;

readln;

shap;

end;

{**********************************************************}

BEGIN

flag := false;

shap;{виклик процедури виводу шапки}

END.

Результати роботи

Вхідні дані:

p(x)=x2+1; q(x)=x-1; f(x)=x+2;

a=0, 0=2, 1=1, A=3;

b=2, 0=5, 1=-2, B=3;

h=5.

Вихідні дані:

xi yi

  1. 2.42

0.40 0.63

    1. 0.08

1.20 0.23

    1. 0.58

2.00 0.86