- •Лабораторная работа №1 Отделение корней
- •Метод половинного деления
- •Метод хорд
- •Метод касательных
- •Лабораторная работа №2
- •Метод Зейделя
- •Лабораторная работа №3 Метод Лангранжа
- •Лабораторная работа №4
- •Лабораторная работа №5 Метод Эйлера
- •Метод Эйлера-Коши
- •Введите шаг - 0.1
- •Классический метод Рунге-Кутта
- •Лабораторная работа №6
Введите шаг - 0.1
Искомый определенный интеграл равен 1.015915
Введите левую и правую границы отрезка - 0 1
Введите шаг - 0.05
Искомый определенный интеграл равен 1.015193
program lab4_2;
var n: integer;
S,a,b,e,h,x,I_n,I_n2,M: real;
function f(x: real):real;
begin f:=(3*cos(x))/(2*x+1.7);
end;
begin
write('Введите концы отрезка интегрирования: ');
readln(a,b);
write('Введите погрешность e: '); readln(e);
I_n:=0;
n:=4;
Repeat
h:=abs(b-a)/n;
s:=(f(a)-f(b))/2;
x:=a+h;
repeat s:=s+2*f(x)+f(x+h);
x:=x+2*h;
until x>=b;
I_n2:=2*h*s/3;
n:=n*2;
M:=abs(I_n - I_n2);
I_n:=I_n2;
Until M<=15*e;
writeln('Интеграл I=',I_n2:12:7);
readln;
end.
Введите концы отрезка интегрирования: 0 1
Введите погрешность e: 0.000001
Интеграл I= 1.0149530
Лабораторная работа №5 Метод Эйлера
program Eiler;
var x,a,b,h,y:real;
m,i:integer;
function f(x,y: real): real;
begin f:=(3-x-y*y)/(2-x*y*y);
end;
begin writeln('Введите значения концов отрезка [a,b]');
readln(a,b);
writeln('Введите начальное значение y0=y(x0)');readln(y);
writeln('Введите число значений функции на промежутке [a,b]'); read(m);
x:=a; h:=(b-a)/m;
for i:=0 to m do
begin writeln (x:10:3, y:15:4);
y:=y+h*f(x,y); x:=x+h
end; readln;
end.
Введите значения концов отрезка [a,b]
1 2
Введите начальное значение y0=y(x0)
1
Введите число значений функции на промежутке [a,b]
10
1.000 1.0000
1.100 1.1000
1.200 1.2031
1.300 1.3372
1.400 1.3643
1.500 1.4075
1.600 1.4570
1.700 1.5087
1.800 1.5609
1.900 1.6128
2.000 1.6638
Введите значения концов отрезка [a,b]
1 2
Введите начальное значение y0=y(x0)
1
Введите число значений функции на промежутке [a,b]
5
1.000 1.0000
1.200 1.2000
1.400 1.4647
1.600 1.5734
1.800 1.6831
2.000 1.7885
Погрешность:
0
-0.031
-0.1004
-0.1164
-0.1222
-0.1247
Метод Эйлера-Коши
program Eiler_Koshi;
var x,a,b,h,y,z:real;
m,i:integer;
function f(x,y: real): real;
begin f:=(3-x-y*y)/(2-x*y*y);
end;
begin writeln('Введите значения концов отрезка [a,b]');
readln(a,b);
writeln('Введите начальное значение y0=y(x0)');readln(y);
writeln('Введите число значений функции на промежутке [a,b]');
read(m);
x:=a; h:=(b-a)/m;
for i:=0 to m do
begin writeln (x:10:3, y:15:4);
z:=y+h*f(x,y);
y:=y+h*(f(x,y)+f(x+h,z))/2;
x:=x+h
end; readln;
end.
Введите значения концов отрезка [a,b]
1 2
Введите начальное значение y0=y(x0)
1
Введите число значений функции на промежутке [a,b]
10
1.000 1.0000
1.100 1.1016
1.200 1.2207
1.300 1.3134
1.400 1.3354
1.500 1.3770
1.600 1.4257
1.700 1.4768
1.800 1.5283
1.900 1.5795
2.000 1.6300
Введите значения концов отрезка [a,b]
1 2
Введите начальное значение y0=y(x0)
1
Введите число значений функции на промежутке [a,b]
5
1.000 1.0000
1.200 1.2324
1.400 1.4496
1.600 1.5573
1.800 1.6644
2.000 1.7670
Погрешность:
0
-0.0039
-0.03807
-0.04387
-0.04537
-0.04567
