Как сделать, чтобы выводились несколько корней, а не один? - Pascal ABC

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

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

Листинг программы
  1. var a,b,delta,x,c:real;
  2. function f(x:real):real;
  3. begin
  4. f:=x*x*x+2*x*x-8*x+1+2*sin(x)+15*cos(x);
  5. end;
  6. begin
  7. a:=-5;
  8. b:=5;
  9. delta:=0.001;
  10. x:=a;
  11. while x<b do begin
  12. if f(x)*f(x+1)<=0 then begin
  13. writeln('Интервал [',x,';',x+1,']');
  14. writeln('Решение: ');
  15. while b-a>delta do begin
  16. c:=(a+b)/2;
  17. if f(a)*f(c)<=0 then
  18. b:=c
  19. else
  20. a:=c;
  21. end;
  22. writeln((a+b)/2:6:3);
  23. end;
  24. x:=x+1;
  25. end;
  26. end.

Решение задачи: «Как сделать, чтобы выводились несколько корней, а не один?»

textual
Листинг программы
  1. var a,b,h,a1,b1,delta,x,c:real;
  2.     k:integer;
  3. begin
  4. writeln(' ');
  5.  a:=-5;
  6.  b:=5;
  7.  h:=0.5;
  8.  delta:=0.001;
  9.  x:=a;
  10.  k:=0;
  11.  while x+h<=b do
  12.   begin
  13.   if f(x)*f(x+h)<=0 then
  14.    begin
  15.     write('Интервал [',x:4:1,';',x+h:4:1,']  ');
  16.     inc(k);
  17.     a1:=x;
  18.     b1:=x+h;
  19.     while abs(b1-a1)>delta do
  20.      begin
  21.       c:=(a1+b1)/2;
  22.       if f(a1)*f(c)<=0 then b1:=c else a1:=c;
  23.      end;
  24.     writeln('x',k,'=',(a1+b1)/2:6:3);
  25.    end;
  26.   x:=x+h;
  27.  end;
  28. end.

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

  1. Объявляются переменные: a, b, h, a1, b1, delta, x, c:real; k:integer;
  2. Выводится строка ' '
  3. Присваиваются значения переменным: a:=-5; b:=5; h:=0.5; delta:=0.001; x:=a; k:=0;
  4. Задается условие для цикла while: x+h<=b
  5. Внутри цикла while выполняется проверка условия f(x)*f(x+h)<=0. Если условие истинно, то выполняется вывод строки 'Интервал [',x:4:1,';',x+h:4:1,'] '. После вывода строки увеличивается значение переменной k и присваиваются значения переменным a1:=x и b1:=x+h.
  6. Задается условие для цикла 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.
  7. Значение переменной x увеличивается на значение переменной h.
  8. Цикл while повторяется, пока условие x+h<=b выполняется.

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


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

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

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы