Как сделать, чтобы выводились несколько корней, а не один? - Pascal ABC
Формулировка задачи:
Листинг программы
- var a,b,delta,x,c:real;
- function f(x:real):real;
- begin
- f:=x*x*x+2*x*x-8*x+1+2*sin(x)+15*cos(x);
- end;
- begin
- a:=-5;
- b:=5;
- delta:=0.001;
- x:=a;
- while x<b do begin
- if f(x)*f(x+1)<=0 then begin
- writeln('Интервал [',x,';',x+1,']');
- writeln('Решение: ');
- while b-a>delta do begin
- c:=(a+b)/2;
- if f(a)*f(c)<=0 then
- b:=c
- else
- a:=c;
- end;
- writeln((a+b)/2:6:3);
- end;
- x:=x+1;
- end;
- end.
Решение задачи: «Как сделать, чтобы выводились несколько корней, а не один?»
textual
Листинг программы
- var a,b,h,a1,b1,delta,x,c:real;
- k:integer;
- begin
- writeln(' ');
- a:=-5;
- b:=5;
- h:=0.5;
- delta:=0.001;
- x:=a;
- k:=0;
- while x+h<=b do
- begin
- if f(x)*f(x+h)<=0 then
- begin
- write('Интервал [',x:4:1,';',x+h:4:1,'] ');
- inc(k);
- a1:=x;
- b1:=x+h;
- while abs(b1-a1)>delta do
- begin
- c:=(a1+b1)/2;
- if f(a1)*f(c)<=0 then b1:=c else a1:=c;
- end;
- writeln('x',k,'=',(a1+b1)/2:6:3);
- end;
- x:=x+h;
- end;
- end.
Объяснение кода листинга программы
- Объявляются переменные: a, b, h, a1, b1, delta, x, c:real; k:integer;
- Выводится строка ' '
- Присваиваются значения переменным: a:=-5; b:=5; h:=0.5; delta:=0.001; x:=a; k:=0;
- Задается условие для цикла while: x+h<=b
- Внутри цикла while выполняется проверка условия f(x)*f(x+h)<=0. Если условие истинно, то выполняется вывод строки 'Интервал [',x:4:1,';',x+h:4:1,'] '. После вывода строки увеличивается значение переменной k и присваиваются значения переменным a1:=x и b1:=x+h.
- Задается условие для цикла while: abs(b1-a1)>delta. Если условие истинно, то выполняется вывод строки 'x',k,'=',(a1+b1)/2:6:3. После вывода строки значение переменной k увеличивается на единицу. Если условие не выполняется, то значение переменной a1 присваивается значению переменной c, которое вычисляется как (a1+b1)/2. Значение переменной b1 затем присваивается значению переменной c, если f(a1)*f(c)<=0, в противном случае значение переменной a1 присваивается значению переменной c.
- Значение переменной x увеличивается на значение переменной h.
- Цикл while повторяется, пока условие x+h<=b выполняется.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д