Показать сообщение отдельно
Старый 19.05.2014, 18:26   #15 (permalink)
Cbvrf86
Member
 
Регистрация: 14.05.2014
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

вы уж извините, побеспокою вас еще раз, что то вот смотрю на алгоритм нахождения коэффициента k, и любо я чего то недопонимаю, или он как то неправильно работает.

[-1.5;1.5] вот из этого интервала он начинает искать (я подшаманил код, и теперь программа сама находит нужный интервал. в отличии от заданного заранее).

вот кусок кода

Repeat
writeln('[',a:1:5,';',b:1:5,']');
writeln(txt,'[',a:1:5,';',b:1:5,']');
c:=(a+b)/2;
if G(a)*G(c)<0 then b:=c else a:=c;
Until b-a<Eps;
EQRoot:=c;

последний интервал, после которого цикл заканчивается: [1.42621;1.42639]
k=1.42630
НО b-a=0.00018 и оно никак не меньше Eps=0.0001
и еще одно по моей методичке написано что должна быть (b-a)/2<Eps а вы написали b-a, тоже вопрос где опечатка у меня или у вас =), ну так вот. даже если подставить в код (b-a)/2<Eps то последний интервал будет
[1.42603;1.42639]
k=1.42621
и (b-a)/2=0.00018 то же самое и опять Еps меньше.
И вот собственно вопрос, почему цикл заканчивается преждевременно, или я конкретно что то не так понял.
Cbvrf86 вне форума   Ответить с цитированием
Ads

Яндекс

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