Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.10 KB | None | 0 0
  1. program lab14;
  2.  
  3. type
  4.   func = function(x: real): real;
  5.  
  6. var
  7.   x, eps, r, l, a, b, p, m, x0, x1, d_1, i_1: real;
  8.   q, k: integer;
  9.  
  10. function lab_1(x: real): real;
  11. begin
  12.   lab_1 := cos(x) - Exp(-1 * (Sqr(x + 1))) + 1 / 9 - x;
  13. end;
  14.  
  15. function lab_2(x: real ): real;
  16. begin
  17.  lab_2 := ( 1/3 ) * ( exp( -x ) - sqrt( exp( x ) ) + 3.7 ) - x ;
  18. end;
  19.  
  20. function delenie(f: func; r, l: real): real;
  21. var
  22.   p, m, i: real;
  23. begin
  24.   repeat
  25.     i := (r + l) / 2;
  26.     p := f(r);
  27.     m := f(i);
  28.     if ((m <= 0) and (p >= 0)) or ((m > 0) and (p < 0)) then l := i
  29.     else
  30.     begin
  31.       p := f(l);
  32.       if ((m <= 0) and (p >= 0)) or ((m > 0) and (p < 0)) then r := i
  33.       else break;
  34.     end;
  35.   until abs(r - l) < eps;
  36.   result := i;
  37. end;
  38.  
  39. function iterazii(f: func; r: real): real;
  40. var
  41.   x0, x1: real;
  42. begin
  43.   x1 := r;
  44.   repeat
  45.     x0 := x1;
  46.     x1 := f(x0) + x0;
  47.   until abs(x1 - x0) <= eps;
  48.   result := x1;
  49. end;
  50.  
  51. begin
  52.   writeln('Введите точность eps');
  53.   readln(eps);
  54.   writeln('Введите диапазон');
  55.   readln(a, b);
  56.   q := 0; k := 0;
  57.   d_1 := delenie(lab_1, a, b);
  58.   i_1 := iterazii(lab_1, a);
  59.   writeln('Решение первой функции методом деления пополам:  ', d_1);
  60.   writeln('Решение первой функции методом простых итераций: ', i_1);
  61.   writeln('Значение первой функции в первой точке:  ', lab_1(d_1));
  62.   writeln('Значение первой функции во второй точке: ', lab_1(i_1));
  63.     writeln('Введите диапазон');
  64.   readln(a, b);
  65.   d_1 := delenie(lab_2, a, b);
  66.   i_1 := iterazii(lab_2, a);
  67.   writeln('Решение второй функции методом деления пополам:  ', d_1);
  68.   writeln('Решение второй функции методом простых итераций: ', i_1);
  69.   writeln('Значение второй функции в первой точке:  ', lab_2(d_1));
  70.   writeln('Значение второй функции во второй точке: ', lab_2(i_1));
  71. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement