На заданном отрезке найти все корни уравнения - 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.
- Корень и его значение выводятся на экран.
- После цикла программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д