Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


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

Цитата:
Сообщение от felarl Посмотреть сообщение
Нас так учат
Расстрелять. Без замены штрафом.

Не, ну в самом деле: пусть, например, у нас есть функция, заданная на интервале [0.8, 1.8], фрагмент которой выглядит так:
cp_1.jpg
и мне нужно найти методом Ньютона ее корень. Так что же, по мнению многоуважаемых преподов, я должен непременно стартовать с правого конца, потому что на нём знак функции и производной совпадают? А с левого - низззззззззззз-зя?!! Так вот, на самом деле выбор конца интервала НЕ ИМЕЕТ ЗНАЧЕНИЯ. То есть абсолютно. И стартуя с левого конца, я благополучно приду (ну кто бы мог подумать!) к тому же корню.

Зла прям не хватает!
Vladimir_S вне форума   Ответить с цитированием
Старый 12.03.2014, 17:54   #22 (permalink)
felarl
Member
 
Регистрация: 18.10.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Проблема все та же, метод Ньютона, находит корень не в том промежутке что задан....
Вот сама программа, промежуток [1;2] а программа находит корень 0.62...
uses crt;
var x,a,b,e: real;
function f1(x: real): real;
begin
f1:=ln(2-x)-cos(2*x);
end;
function f2(x:real): real;
begin
f2:=-1/(2-x)+2*sin(2*x);
end;
begin
clrscr;
a:=1;
b:=2;
e:=0.001;
if f1(a)*f2(a)>0 then x:=a
else x:=b;
while abs(f1(x))>e do
begin
x:=x-f1(x)/f2(x);
end;
writeln ('x=',x,' f(x)=',f1(x));
end.
felarl вне форума   Ответить с цитированием
Старый 12.03.2014, 20:41   #23 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от felarl Посмотреть сообщение
Проблема все та же, метод Ньютона, находит корень не в том промежутке что задан.... Вот сама программа, промежуток [1;2] а программа находит корень 0.62...
И ответ будет, увы, всё тот же.
К сожалению, помочь Вам так, чтобы Вы, оставаясь в рамках идиотских преподских указуль, получили правильный ответ, я, при всём желании, не могу.
Потому что вижу всё тот же тупой, бессмысленный, безграмотный дебилизм
Цитата:
if f1(a)*f2(a)>0 then x:=a
else x:=b;
свидетельствующий, увы, о ПОЛНОЙ профессиональной несостоятельности Ваших "преподавателей". Сочувствую.
Теперь по задаче. Как ее грамотно решить?
Как я уже неоднократно Вам объяснял, начать нужно с построения графика функции с целью определения приблизительного значения корня или корней и оптимального выбора исходной точки. В Вашем случае график выглядит так:
lncos.jpg
Как видим, в интервале [0, 2] имеются два корня: один около х=0.6, другой в районе х=1.6. Вас интересует второй - прекрасно! Выбираем исходную точку х0=1.4 или х0=1.8 (совпадение знаков функции и производной в этих точках, вопреки мнению идиотов, которые "вас так учат", НЕ ТРЕБУЕТСЯ!!!). Любую из двух берите, запускайте программу и - вуаля! - вот он, Ваш искомый корень.
Если же следовать "алгоритму", которому "вас учат", то следует взять в качестве исходной точки х=1. Но между этой точкой и искомым корнем, как видно из графика, находится экстремум с максимумом около х=1.2, и "перевалить" через этот горб алгоритм Ньютона, увы, НЕ МОЖЕТ. Как бы того ни хотелось придуркам, купившим дипломы в подземном переходе и объявившим себя "преподавателями".

Уверяю Вас, я не призываю к бунту, конфликту или чему-то подобному, но и Вы поймите: нытьё типа "помогите решить задачу, но обязательно опираясь на неверный алгоритм" - бессмысленно. Всё равно, что "помогите научиться водить машину, но так, чтобы педалью газа тормозить, а педалью тормоза - газовать, потому что нас так учат".

Извините за резкости, к Вам это не относится, просто когда я встречаюсь (а уже даже на этом форуме не впервые) с явной некомпетентностью преподавателей, то мысли возникают самые кровожадные.
Vladimir_S вне форума   Ответить с цитированием
Старый 12.03.2014, 21:17   #24 (permalink)
felarl
Member
 
Регистрация: 18.10.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спсибо за содержательны ответ, будем пробывать)))
felarl вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 04:39.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.