Найти корень уравнения методом итерации - Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. помогите пожалуйста надо Найти корень уравнения методом итерации с точностью 0.001 sin(x)-x2+1=0 заранее спасибо

Решение задачи: «Найти корень уравнения методом итерации»

textual
Листинг программы
  1. function f(x: real): real;
  2. begin
  3.   f := sin(x) - x * x + 1
  4. end;
  5.  
  6. procedure root(x: real; n: integer);
  7. const eps = 0.001;
  8. var lambda, xi: real;
  9. begin
  10.   lambda := 0.5 / (f(x) - f(x - 0.5));
  11.   repeat
  12.     xi := x;
  13.     x := xi - lambda * f(xi)
  14.   until abs(x - xi) < eps;
  15.   writeln('x', n, ' = ', x:6:3)
  16. end;
  17.  
  18. var f1, f2, x: real;
  19.     i, k: integer;
  20. begin
  21.   k := 0;
  22.   f2 := f(-1);
  23.   for i := -1 to 3 do
  24.     begin
  25.       f1 := f2;
  26.       x := i / 2;
  27.       f2 := f(x);
  28.       if f1 * f2 <= 0
  29.         then begin
  30.           inc(k);
  31.           root(x, k)
  32.         end
  33.     end;
  34.   readln;
  35. end.

Объяснение кода листинга программы

  1. Объявляется функция f с параметром x и возвращаемым значением типа real.
  2. В функции f вычисляется значение функции для заданного x по формуле sin(x) - x * x + 1 и возвращается результат.
  3. Объявляется процедура root с параметрами x типа real и n типа integer.
  4. В процедуре root объявляется константа eps со значением 0.001 и переменные lambda и xi типа real.
  5. В процедуре root вычисляется значение lambda по формуле 0.5 / (f(x) - f(x - 0.5)).
  6. В процедуре root начинается цикл repeat для вычисления корня уравнения методом итерации.
  7. В цикле repeat переменной xi присваивается значение x.
  8. В цикле repeat значение x пересчитывается по формуле xi - lambda * f(xi).
  9. Цикл repeat повторяется, пока разница между x и xi меньше заданной точности eps.
  10. После выхода из цикла repeat выводится на экран результат в виде строки x n = значение_x с округлением до трех знаков после запятой.
  11. Объявляются переменные f1, f2 и x типа real, и переменные i и k типа integer.
  12. Происходит инициализация переменной k нулем и переменной f2 значением функции f при -1.
  13. Выполняется цикл for от -1 до 3 для всех значений i.
  14. В цикле for переменной f1 присваивается значение переменной f2, переменной x присваивается значение i / 2 и переменной f2 присваивается значение функции f для данного x.
  15. Проверяется условие, а именно, если произведение f1 и f2 меньше или равно 0, то выполняется блок операций.
  16. В случае выполнения условия переменная k увеличивается на 1, и вызывается процедура root с параметрами x и k.
  17. В конце программы осуществляется ожидание ввода данных из консоли.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы