Advertisement
Domerk

Лаба_пределы

Dec 24th, 2012
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.59 KB | None | 0 0
  1. {Начальные значения y1 и yn вводятся с клавиатуры.}
  2. {Последующие значения вычисляются как: yn2=0.25*sin(yn)+sin(y1)}
  3.  
  4. var
  5. eps, y1, yn, yn2, a, b: real; {х — точка, для которой вычисляется предел, eps абсолютная величина, y1, yn, yn2 — значения функции, a, b — переменные для промежуточного сохранения и повторного использования начальной информации}
  6.  
  7. begin
  8.  
  9. Writeln ('Введите yo и y1 - начальные значения функции:'); {Просим пользователя ввести х, меньшее, чем 2, дробное число — так как для целых чисел и чисел, чей квадрат больше 2, данная функция имеет предел, равный бесконечности}
  10. readln (y1, yn);  {Считываем х}
  11. Writeln('Введите значение абсолютной величины, число, принадлежащее промежутку (0; 0,1] ');  {Просим пользователя ввести эпселан из данного промежутка}
  12. readln (eps);  {Считываем эпселан}
  13.  
  14. a:=y1;  {Сохраняем начальные данные для последующего использования}
  15. b:=yn;  {Для этого заносим полученные значения функций в дополнительные переменные}
  16.  
  17. while abs(y1-yn)>eps do begin  {Цикл: пока модуль разности последующего и предыдущего значений функции больше абсолютной величины}
  18.           yn2:=0.25*sin(yn)+sin(y1);  {вычисляем следующее значение функции, меняем предыдущие значения}
  19.           y1:=yn;
  20.           yn:=yn2;
  21. end;
  22.  
  23. Writeln('Предел функции равен ', yn2:6:3);  {Если происходит выход из цикла — предел достигнут. Сообщаем об этом пользователю.}
  24. Writeln;
  25.  
  26. {==============================================}
  27. y1:=a;  {Решаем задачу вторым способом. Для этого возвращаем начальные значения функций — вообще их можно вычислить заново, так как х остаётся неизменным, но и так тоже сделать можно, не велика разница.}
  28. yn:=b;
  29.  
  30. if  abs(y1-yn)>eps then begin  {Используем ветвление на тот случай, если предел уже достигнут — условие «если предел ещё не достигнут, то»}
  31.             repeat   {Цикл с постусловием. Производим вычисления, аналогичные вычислениям в цикле с предусловием (см. выше)}
  32.                       yn2:=0.25*sin(yn)+sin(y1);
  33.                       y1:=yn;
  34.                       yn:=yn2;
  35.             until  abs(y1-yn)<eps; {Условие «Если предел достигнут»}
  36.             Writeln ('Предел функции равен ', yn2:6:3);  {Выводим полученное значение предела на экран}
  37. end else begin  {Вторая часть оператора ветвления}
  38.             writeln ('Предел функции равен ', yn:6:3);
  39. end;
  40. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement