Нахождение всех действительных корней методом хорд - Pascal
Формулировка задачи:
Нужно составить программу для нахождения всех действительных корней уравнения F(x)=0 методом хорд не более, чем за 20 итераций. Помогите, очень прошу )
Функция: x^5 - 5x^4 - 7x^3 + 77x^2 - 138x + 72
Отрезок: [-5; 4]
Точность E=0.0001
Заранее спасибо!
Решение задачи: «Нахождение всех действительных корней методом хорд»
textual
Листинг программы
program pr; function f(x:real):real; begin f:= (x*x*x*x*x) - 5*(x*x*x*x) - 7*(x*x*x) + 77*(x*x) - 138*x + 72; end; var xn,xk,p,e:real; begin e:=0.0001; xn:=-5; xk:=4; repeat p:=(f(xk)*xn-f(xn)*xk)/(f(xk)-f(xn)); if abs(f(p))<=e then begin writeln('x=',p:0:5,' y=',f(p):0:5); exit; end; if f(xn)*f(xk)>0 then xn:=p else xk:=p; until abs((f(xk)*xn-f(xn)*xk)/f(xk)-f(xn)-p)<=e; writeln('x=',p:0:5,' y=',f(p):0:5); end.
Объяснение кода листинга программы
- Объявление функции
f
с аргументомx
типа real и возвращаемым значением типа real. - Определение функции
f
, вычисляющей значение многочлена для заданного значенияx
и возвращающей результат вычислений. - Объявление переменных
xn
,xk
,p
,e
типа real. - Присвоение значение 0.0001 переменной
e
. - Присвоение значения -5 переменной
xn
. - Присвоение значения 4 переменной
xk
. - Начало цикла
repeat ... until
, в котором происходит итерационный процесс для нахождения корней уравнения. - Вычисление значения переменной
p
по формуле метода хорд. - Проверка условия: Если значение функции в точке
p
меньше или равноe
, то выводится значениеx
иy
в точкеp
, после чего программа завершает выполнение. - Проверка условия: Если значение функции в точках
xn
иxk
имеет одинаковый знак, то значениеxn
присваиваетсяp
, в противном случае значениеxk
присваиваетсяp
. - Повторение шагов 8-10 до тех пор, пока разность между предыдущим и текущим значением
p
не станет меньше или равноe
. - Вывод значения
x
иy
в точкеp
после завершения цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д