Показать сообщение отдельно
Старый 20.10.2013, 18:48   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от felarl Посмотреть сообщение
Сам ход решения хоть правильный?
Не могу сказать, ибо хода не понимаю. Вы что, пытаетесь в одну программу оба метода засадить? Допустим. Но, во-первых, там F1 (первая производная) сосчитана неверно (откуда Вы взяли коэффициент 64? Должен быть 16), а во-вторых - ну на кой там вторая производная?
Цитата:
Сообщение от felarl Посмотреть сообщение
Да, да вы правы там +1 !!! Корень помоему где-то 0.14 должен быть. На счет того что не правильно задал функции, это да, просто так объяснили нам...
Совсем другое дело. Теперь график выглядит так:
Название: Cube2.jpg
Просмотров: 686

Размер: 15.7 Кб
Но корень там вовсе не "где-то 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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070