Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по матану.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
45 Кб
Скачать
☆

Введите шаг - 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