Нахождение всех действительных корней методом хорд - 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после завершения цикла.