
- •Лабораторная работа №1 Отделение корней
- •Метод половинного деления
- •Метод хорд
- •Метод касательных
- •Лабораторная работа №2
- •Метод Зейделя
- •Лабораторная работа №3 Метод Лангранжа
- •Лабораторная работа №4
- •Введите шаг - 0.1
- •Лабораторная работа №5 Метод Эйлера
- •Метод Эйлера-Коши
- •Классический метод Рунге-Кутта
- •Лабораторная работа №6
Лабораторная работа №1 Отделение корней
program otd_korn;
var x1,x2,a,b,h:real;
function f(x: real):real;
begin {f:=[5*x-8ln(x)-8=0]} f:=x*x*x-x+4;
end;
begin
write('Введите левую границу отрезка - a: ');readln(a);
write('Введите правую границу отрезка - b: ');readln(b);
write('Введите шаг - h:'); readln(h);
x1:=a; x2:=x1+h;
while x2<b do
begin
if f(x1)*f(x2)<0
then writeln('[ ',x1:6:2,' , ',x2:6:2,' ]');
x1:=x2; x2:=x1+h;
end;
readln;
end.
Введите левую границу отрезка - a: -100
Введите правую границу отрезка - b: 100
Введите шаг - h: 1
[ -2.00 , -1.00 ]
Метод половинного деления
program pol_del;
var a,b,c,e,x,dX: real;
N:integer;
function f(x: real):real;
begin
{f:=[5*x-8ln(x)-8=0]} f:=x*x*x-x+4end;
begin
write('Введите левую границу отрезка - a: ');readln(a);
write('Введите правую границу отрезка - b: ');readln(b);
write('Введите требуемую погрешность - e:'); readln(e);
N:=0;
repeat N:=N+1; c:=(a+b)/2;
if f(a)*f(c)<0 then b:=c else a:=c;
until b-a<e;
x:=(a+b)/2; dX:=(b-a)/2;
writeln('Приближенное значение корня - Х = ',x:10:6);
writeln('Ошибка не превышает dX = ',dX:10:6);
writeln('Число итераций - N = ',N);
readln
end.
Введите левую границу отрезка - a: -2
Введите правую границу отрезка - b: -1
Введите требуемую погрешность - e:.0001
Приближенное значение корня - Х = -1.796295
Ошибка не превышает dX = 0.000031
Число итераций - N = 14
Метод хорд
program met_hord;
var a,b,c,e,x,g: real;
N:integer;
function f(x: real):real;
begin
{f:=[5*x-8ln(x)-8=0]}
f:=x*x*x-x+4;
end;
begin
write('Введите левую границу отрезка - a:'); readln(a);
write('Введите правую границу отрезка - b:'); readln(b);
write('Введите требуемую погрешность - e:'); readln(e);
N:=0; c:=a;
repeat N:=N+1; g:=c;
c:=(a*f(b)-b*f(a))/(f(b)-f(a));
if f(a)*f(c)<0 then b:=c else a:=c;
until abs(g-c)<e;
writeln('Приближенное значение корня - Х = ',c:10:6);
writeln('Число итераций - N = ',N);
readln
end.
Введите левую границу отрезка - a: -2
Введите правую границу отрезка - b: -1
Введите требуемую погрешность - e:.0001
Приближенное значение корня - X = -1.796319
Число итераций - N = 6
Метод касательных
program met_kasat;
var c,e,g: real;
N:integer;
function f(x: real):real;
begin
{f:=[5*x-8ln(x)-8=0]}
f:=x*x*x-x+4;
end;
function df(x: real):real;
begin {записать, производную функции f в виде df:=[математическое выражение]}
df:=3*x*x-1;
end;
begin
write('Введите начальное приближение - c: ');readln(c);
write('Введите требуемую погрешность - e:'); readln(e);
N:=0;
repeat N:=N+1;
g:=c;
c:=c-f(c)/df(c);
until abs(g-c)<e;
writeln('Приближенное значение корня - Х = ',c:10:6);
writeln('Число итераций - N = ',N);
readln
end.
Введите начальное приближение - c: -2
Введите требуемую погрешность - e:.0001
Приближенное значение корня - Х = -1.796322
Число итераций - N = 4