Напечатать таблицу значений функции на отрезке [a, b] с шагом h. Найти корень функции на этом интервале - Free Pascal

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

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

Напечатать таблицу значений функции на отрезке [a, b] с шагом h. Найти корень функции на этом интервале. Помогите пожалуйста режить данное задание.На форуме нашёл несколько похожих тем и вроде всё получилось, но никак не сходиться с ответом. У меня ответ получается - 1.

Решение задачи: «Напечатать таблицу значений функции на отрезке [a, b] с шагом h. Найти корень функции на этом интервале»

textual
Листинг программы
Program Koren;
uses
  crt;
var
  a,b,eps,h,x,y,y1: real;
begin
  clrscr;
  writeln('Z!');
  writeln('NahoZdenie korn9 fynkcii');
  writeln('Vvedite interval');
  readln(a,b);
  writeln('Vvedite shag');
  readln(h);
  writeln('i==========Г’==========i');
  writeln('|    x     |     y    |');
  writeln('|==========+==========|');
  x:=a;
  repeat
   y:=sqrt(1-0.4*sqr(x))-Arctan(x/Sqrt(1-sqr(x)));
   writeln('| ',x:8:2,' | ',y:8:2,' |');
   x:=x+h;
  until(x>b);
  writeln('i==========T==========i');
  writeln('Vvedite tichnost');
  readln(eps);
  x:=(b+a)/2;
  y:=sqrt(1-0.4*x*x)-Arctan(x/Sqrt(1-sqr(x)));
  begin
   y1:=sqrt(1-0.4*x*x)-Arctan(x/Sqrt(1-sqr(x)));
   if y*y1>0 then
    a:=x
   else
    b:=x;
   x:=(b+a)/2;
   y:=sqrt(1-0.4*x*x)-Arctan(x/Sqrt(1-sqr(x)));
  end;
  writeln('Koren=',x:5:2);
  readkey;
end.

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

  1. Программа на языке Free Pascal с постановкой задачи - напечатать таблицу значений функции на отрезке [a, b] с шагом h и найти корень функции на этом интервале.
  2. Используется модуль CRT для работы с консолью.
  3. Введены следующие переменные: a, b, eps, h, x, y, y1 - все типа real.
  4. Переменная a содержит левую границу интервала, b - правую, eps - точность, h - шаг.
  5. Выводится приветствие и призыв к вводу интервала и шага.
  6. С помощью функции readln() вводятся значения a, b, h.
  7. С помощью цикла while и оператора if выводится таблица значений функции на интервале [a, b] с шагом h.
  8. В цикле while находится корень функции с помощью формулы y=sqrt(1-0.4xx)-Arctan(x/Sqrt(1-sqr(x))).
  9. Если значение y на середине интервала совпадает с найденным корнем, то интервал сжимается до точки (a,b) со значением корня в этой точке.
  10. После нахождения корня выводится его значение и призыв к вводу точности.
  11. Корень функции вычисляется в точке (a+b)/2 с помощью формулы y=(b+a)/2.
  12. С помощью цикла while и оператора if проверяется, является ли найденное значение корня положительным.
  13. Если корень положительный, то интервал сжимается до точки (a,b) со значением корня в этой точке.
  14. После нахождения корня выводится его значение и призыв к вводу ключа.
  15. Программа завершается.

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

11   голосов , оценка 3.545 из 5
Похожие ответы