На заданном отрезке найти все корни уравнения - 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.
Объяснение кода листинга программы
- Начинается с объявления функций и переменных.
- Используется функция F, которая представляет собой функцию, которую нужно решить.
- Используется функция Bisec, которая используется для разбиения интервала на две части.
- Переменные x, a и b используются для хранения текущего значения, нижней и верхней границ интервала соответственно.
- Используются переменные dx, eps и i для хранения шага, точности и счетчика корней соответственно.
- Цикл while используется для перебора всех значений x в заданном интервале.
- Внутри цикла определяются значения x11 и x12, которые представляют собой границы текущего интервала.
- Если знак функции F(x11) и F(x12) разный, то это означает, что в этом интервале есть корень, и он находится с помощью функции Bisec.
- Корень и его значение выводятся на экран.
- После цикла программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д