Приближенное решение нелинейных уравнений (можно с объяснением строк) - Turbo Pascal
Решение задачи: «Приближенное решение нелинейных уравнений (можно с объяснением строк)»
textual
Листинг программы
- uses crt;
- function F(x:real):real;{исследуемая функция}
- begin
- F:=4*cos(2*x)-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;
- repeat
- writeln('Введите границы отрезка x2-x1>0.1');
- readln(x1,x2);
- until(x2-x1>0.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)and(F(x12)<1) 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д