- •Лабораторна робота №1 Розв’язання нелінійних та трансцендентних рівнянь.
- •1.1 Теоретичні положення.
- •1.2 Числові методи розв’язання нелінійних рівнянь.
- •1.2.1 Метод половинного ділення
- •Лабораторна робота №2 Метод пропорційних частин (хорд)
- •Лабораторна робота №4 Метод простих ітерацій
- •Індивідуальні завдання
- •Лабораторна робота № 5 чисельне інтегрування
- •5.1 Теоретичні положення
- •5.1.1 Формула прямокутників
- •5.1.2 Формула трапецій
- •5.1.3 Формула парабол (Сімпсона)
- •5.2 Індивідуальні завдання до лабораторної роботи №5
- •Лабораторна робота № 6 точність чисельного інтегрування
- •6.1 Теоретичні положення
- •6.2 Індивідуальні завдання до лабораторної роботи №6
- •Перша інтерполяційна формула Ньютона має вигляд
- •Індивідуальні завдання
- •Метод прогону.
- •Проекційні методи (на прикладі методу Гальоркіна).
- •Обчислювальні схеми Метод прогону.
- •Проекційні методи (на прикладі методу Гальоркіна).
- •Додаток Тексти програм
- •Метод прогону.
- •Метод Гальоркіна.
- •Список літератури Основна.
- •Додаткова
Додаток Тексти програм
Метод прогону.
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
2.42
0.40 0.63
0.08
1.20 0.23
0.58
2.00 0.86