Top.Mail.Ru
Ответы

Информатика Pascal. Можете проверить, правильно ли я написал программу

Для функции F(x)=x5+ 8 • x4 + 4 • x3 - 22 • x2 - 5 • x +14 найти все действительные корни уравнения на отрезке [-3; 2], решение соответствующего уравнения выполнить с точностью до e=0,0001 методом Ньютона, не более, чем за 20 итераций.

program Nuton;
var x,a,b,eps:real;
t:integer;
function f(x:real):real;
begin
f:=power(x,5)+8*power(x,4)+4*power(x,3)-22*power(x,2)-5*x+14;
end;
function f1(x:real):real;
begin
f1:=5*power(x,4)+32*power(x,3)+12*power(x,2)-44*x-5;
end;
begin
writeln('Введите a');
readln(a);
writeln('Введите b');
readln(b);
writeln('Введите погрешность');
readln(eps);
t:=0;
if f(a)*f1(a)>0
then x:=a
else x:=b;
while abs(f1(x))>eps do
begin
x:=x-f(x)/f1(x);
t:=t+1
end;
Writeln (' В интервале от ',a:0:0,' до ',b:0:0,' с погрешностью ',e);
Writeln ('x=',x:0:5,' f(x)=',f(x):0:5);
Writeln('Количество повторений',' ',t);
Readln
end.

По дате
По рейтингу
Аватар пользователя
Просветленный

У этого уравнения 4 действительных корня: -7, -2, -1 и 1 (единица - двукратный корень). На отрезке [-3;2] их 3. Откуда берутся начальные приближения - автоматически ищутся или их можно ввести с экрана в интерактивном сеансе? Автоматический поиск - это итеративный процесс, для которого потребуются эти самые итерации, а потом ещё придётся и сами корни вычислять. Если начальные приближения вводить с экрана, то суммарное количество итерационных шагов зависит от степени близости приближений к значениям истинных корней.
Вот я беру такие начальные приближения -3, -0.2 и 3, количества итераций для них требуются такие: 5, 6 и 16. Перебор! И 3 не входит в диапазон. Вместо 3 берём 2, получается 14 итераций - всё равно перебор! А если сразу взять -2 , -1 и 1 то и итераций никаких не понадобится.

Аватар пользователя
Искусственный Интеллект

Неправильно. Количество итераций нигде не учитывается.