Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program lab14;
- type
- func = function(x: real): real;
- var
- x, eps, r, l, a, b, p, m, x0, x1, d_1, i_1: real;
- q, k: integer;
- function lab_1(x: real): real;
- begin
- lab_1 := cos(x) - Exp(-1 * (Sqr(x + 1))) + 1 / 9 - x;
- end;
- function lab_2(x: real ): real;
- begin
- lab_2 := ( 1/3 ) * ( exp( -x ) - sqrt( exp( x ) ) + 3.7 ) - x ;
- end;
- function delenie(f: func; r, l: real): real;
- var
- p, m, i: real;
- begin
- repeat
- i := (r + l) / 2;
- p := f(r);
- m := f(i);
- if ((m <= 0) and (p >= 0)) or ((m > 0) and (p < 0)) then l := i
- else
- begin
- p := f(l);
- if ((m <= 0) and (p >= 0)) or ((m > 0) and (p < 0)) then r := i
- else break;
- end;
- until abs(r - l) < eps;
- result := i;
- end;
- function iterazii(f: func; r: real): real;
- var
- x0, x1: real;
- begin
- x1 := r;
- repeat
- x0 := x1;
- x1 := f(x0) + x0;
- until abs(x1 - x0) <= eps;
- result := x1;
- end;
- begin
- writeln('Введите точность eps');
- readln(eps);
- writeln('Введите диапазон');
- readln(a, b);
- q := 0; k := 0;
- d_1 := delenie(lab_1, a, b);
- i_1 := iterazii(lab_1, a);
- writeln('Решение первой функции методом деления пополам: ', d_1);
- writeln('Решение первой функции методом простых итераций: ', i_1);
- writeln('Значение первой функции в первой точке: ', lab_1(d_1));
- writeln('Значение первой функции во второй точке: ', lab_1(i_1));
- writeln('Введите диапазон');
- readln(a, b);
- d_1 := delenie(lab_2, a, b);
- i_1 := iterazii(lab_2, a);
- writeln('Решение второй функции методом деления пополам: ', d_1);
- writeln('Решение второй функции методом простых итераций: ', i_1);
- writeln('Значение второй функции в первой точке: ', lab_2(d_1));
- writeln('Значение второй функции во второй точке: ', lab_2(i_1));
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement