Напечатать таблицу значений функции на отрезке [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.
Объяснение кода листинга программы
- Программа на языке Free Pascal с постановкой задачи - напечатать таблицу значений функции на отрезке [a, b] с шагом h и найти корень функции на этом интервале.
- Используется модуль CRT для работы с консолью.
- Введены следующие переменные: a, b, eps, h, x, y, y1 - все типа real.
- Переменная a содержит левую границу интервала, b - правую, eps - точность, h - шаг.
- Выводится приветствие и призыв к вводу интервала и шага.
- С помощью функции readln() вводятся значения a, b, h.
- С помощью цикла while и оператора if выводится таблица значений функции на интервале [a, b] с шагом h.
- В цикле while находится корень функции с помощью формулы y=sqrt(1-0.4xx)-Arctan(x/Sqrt(1-sqr(x))).
- Если значение y на середине интервала совпадает с найденным корнем, то интервал сжимается до точки (a,b) со значением корня в этой точке.
- После нахождения корня выводится его значение и призыв к вводу точности.
- Корень функции вычисляется в точке (a+b)/2 с помощью формулы y=(b+a)/2.
- С помощью цикла while и оператора if проверяется, является ли найденное значение корня положительным.
- Если корень положительный, то интервал сжимается до точки (a,b) со значением корня в этой точке.
- После нахождения корня выводится его значение и призыв к вводу ключа.
- Программа завершается.