Цитата:
Сообщение от Vladimir_S
Не могу сказать, ибо хода не понимаю. Вы что, пытаетесь в одну программу оба метода засадить? Допустим. Но, во-первых, там F1 (первая производная) сосчитана неверно (откуда Вы взяли коэффициент 64? Должен быть 16), а во-вторых - ну на кой там вторая производная?
Но корень там вовсе не "где-то 0.14", а около -0.1. Между прочим, в случае одного вещественного корня кубическое уравнение решается точно , и это можно использовать для контроля правильности результата работы итерационных программ. Так вот, формула Кардано даёт х=-0.112085...
Теперь решим задачу методом Ньютона:
Код:
Const
e=0.001;
Var
x0_old,x0_new,D:Real;
Function F(z:real):real;
begin
F:=z*z*z*2-z*z*8+z*8+1;
end;
Function F1(z:real):real;
begin
F1:=z*z*6-z*16+8;
end;
Begin
x0_old:=0;
Repeat
x0_new:=x0_old-F(x0_old)/F1(x0_old);
D:=Abs(x0_old-x0_new);
x0_old:=x0_new;
Until D<e;
Writeln('Result: x = ',x0_new:0:3);
Readln
End.
Результат работы этой программы: х=-0.112.
|
Извините,вроде все понял, но не могли бы объяснить один момент? в этой строчке Writeln('Result: x = ',x0_new:0:3); не понятно что такое x0_new:0:3. если не сложноможете пояснить?