На заданном отрезке найти все корни уравнения f(x)=0 с точностью e - Free Pascal

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

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

на заданном отрезке найти все корни уравнения f(x)=0 с точностью e

Решение задачи: «На заданном отрезке найти все корни уравнения f(x)=0 с точностью e»

textual
Листинг программы
  1. function F(x:real):real;
  2. begin
  3. F:=1/sin(x)-exp(ln(2)*x)+0.5;
  4. end;
  5. {нахождение корня методом бисекции}
  6. function Bisec(a,b,e:real):real;
  7. var x,c:real;
  8. begin
  9. repeat
  10. c:=(a+b)/2;
  11. if F(a)*F(c)<0 then b:=c
  12. else a:=c;
  13. until b-a<e;
  14. Bisec:=(a+b)/2;
  15. end;
  16.  
  17. var x,x1,x2,dx,x11,x12,eps:real;
  18.     i:integer;
  19. begin
  20. repeat
  21. writeln('Введите начало и конец отрезка');
  22. readln(x1,x2);
  23. until x2>x1;
  24. repeat
  25. write('Введите точность 0<eps<1 eps=');
  26. readln(eps);
  27. until(eps>0)and(eps<1);
  28. dx:=0.1;
  29. x:=x1;
  30. i:=0;
  31. while x<=x2 do
  32.  begin
  33.   x11:=x;
  34.   x12:=x+dx;
  35.   if(sin(x11)*sin(x12)>0) and(F(x11)*F(x12)<0) then
  36.    begin
  37.     i:=i+1;
  38.     writeln('X',i,'=',Bisec(x11,x12,eps):8:5);
  39.    end;
  40.   x:=x+dx;
  41.  end;
  42. if i=0 then write('На данном интервале корней нет');
  43. readln
  44. end.

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

  1. Введенные пользователем значения функции F(x) хранятся в переменных типа real: F(x) = 1/sin(x) - exp(ln(2)*x) + 0.5
  2. Функция Bisec(a, b, e) используется для нахождения корня методом бисекции. Она принимает на вход значения a и b, обозначающие начало и конец интервала, в котором ищется корень, а также точность e.
  3. Логика работы функции Bisec следующая:
    • Если значения функций F(a) и F(c) имеют разные знаки, то новое значение интервала равно половине старого интервала.
    • Если значения функций F(a) и F(c) имеют одинаковый знак, то новое значение интервала равно середине старого интервала.
    • Этот процесс продолжается до тех пор, пока новое интервал не станет меньше заданной точности e.
  4. В основной программе введены следующие переменные:
    • x1, x2 - начало и конец интервала, в котором ищется корень;
    • eps - заданная точность;
    • dx - шаг интервала;
    • x - текущее значение интервала;
    • i - счетчик найденных корней;
    • x11, x12 - ближайшие точки интервала, значение функции в которых проверяется на наличие корня.
  5. В цикле while происходит перебор значений интервала от x1 до x2 с шагом dx.
  6. Для каждой пары соседних точек интервала проверяется условие (sin(x11)sin(x12)>0) and(F(x11)F(x12)<0), которое означает, что точка x11 является левым корнем, а точка x12 - правым корнем.
  7. Если это условие выполняется, то значение интервала заменяется на середину между x11 и x12, а счетчик i увеличивается на 1.
  8. В конце программы выводится сообщение о количестве найденных корней или об их отсутствии.

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


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

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

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

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

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

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