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

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

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

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

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

textual
Листинг программы
function F(x:real):real;
begin
F:=1/sin(x)-exp(ln(2)*x)+0.5;
end;
{нахождение корня методом бисекции}
function Bisec(a,b,e:real):real;
var x,c:real;
begin
repeat
c:=(a+b)/2;
if F(a)*F(c)<0 then b:=c
else a:=c;
until b-a<e;
Bisec:=(a+b)/2;
end;
 
var x,x1,x2,dx,x11,x12,eps:real;
    i:integer;
begin
repeat
writeln('Введите начало и конец отрезка');
readln(x1,x2);
until x2>x1;
repeat
write('Введите точность 0<eps<1 eps=');
readln(eps);
until(eps>0)and(eps<1);
dx:=0.1;
x:=x1;
i:=0;
while x<=x2 do
 begin
  x11:=x;
  x12:=x+dx;
  if(sin(x11)*sin(x12)>0) and(F(x11)*F(x12)<0) then
   begin
    i:=i+1;
    writeln('X',i,'=',Bisec(x11,x12,eps):8:5);
   end;
  x:=x+dx;
 end;
if i=0 then write('На данном интервале корней нет');
readln
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
Похожие ответы