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

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

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

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

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

textual
Листинг программы
function f(x: real): real;
begin
  f := sin(x) - x * x + 1
end;
 
procedure root(x: real; n: integer);
const eps = 0.001;
var lambda, xi: real;
begin
  lambda := 0.5 / (f(x) - f(x - 0.5));
  repeat
    xi := x;
    x := xi - lambda * f(xi)
  until abs(x - xi) < eps;
  writeln('x', n, ' = ', x:6:3)
end;
 
var f1, f2, x: real;
    i, k: integer;
begin
  k := 0;
  f2 := f(-1);
  for i := -1 to 3 do
    begin
      f1 := f2;
      x := i / 2;
      f2 := f(x);
      if f1 * f2 <= 0
        then begin
          inc(k);
          root(x, k)
        end
    end;
  readln;
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
Похожие ответы