На заданном отрезке найти все корни уравнения - Free Pascal

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

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

На заданном отрезке найти все корни уравнения f(x)=0 с точностью exp: exp(x)-cos*cos*2-0.1=0 и привести графики,выполненные в табличном процессоре MS Excel. Помогите пожалуйста найти ошибки..или доделать задачу..
Program laba5;
const h=0.1;
var a,b,c,d,e,xn,xk,s:real;
    k:integer;
function f(x:real):real;
begin
f:=exp(x)-cos*cos*x-0.1;
end;
begin
repeat
write ('a=');
readln(a);
write('b>a b=');
readln(b);
write ('0<e<1');
readln(e);
until (a<b) and (e>0) and (e<1);
k:=0;
c:=a;
write ((xk+xn)/2:10:6);
end;
c:=d
until c+h>b;
if k=0 then
writeln('корней нет');
end.

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

textual
Листинг программы
uses crt;
function F(x:real):real;
begin
F:=exp(x)-sqr(cos(x))-0.1;
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
clrscr;
x1:=-2;{интервал для поиска корней}
x2:=1;
dx:=0.1; {шаг для поиска интервалов}
eps:=0.0001;{точность определения корней}
x:=x1;
i:=0;
while x<=x2 do
 begin
  x11:=x;
  x12:=x+dx;
  if F(x11)*F(x12)<0 then{если знак на концах интервала разный}
   begin
    i:=i+1; {сть корень номер i}
    writeln('X',i,'=',Bisec(x11,x12,eps):8:5);{находим его методом бисекции}
   end;
  x:=x+dx;
 end;
readln
end.

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

  1. Начинается с объявления функций и переменных.
  2. Используется функция F, которая представляет собой функцию, которую нужно решить.
  3. Используется функция Bisec, которая используется для разбиения интервала на две части.
  4. Переменные x, a и b используются для хранения текущего значения, нижней и верхней границ интервала соответственно.
  5. Используются переменные dx, eps и i для хранения шага, точности и счетчика корней соответственно.
  6. Цикл while используется для перебора всех значений x в заданном интервале.
  7. Внутри цикла определяются значения x11 и x12, которые представляют собой границы текущего интервала.
  8. Если знак функции F(x11) и F(x12) разный, то это означает, что в этом интервале есть корень, и он находится с помощью функции Bisec.
  9. Корень и его значение выводятся на экран.
  10. После цикла программа завершается.

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


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

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

15   голосов , оценка 4.267 из 5
Похожие ответы