IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> метод итераций по образцу с форума, выдает ошибку
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский

Репутация: -  1  +


нужно решить уравнение методом простых итераций. Задачу нашла на форуме в FAQ


сделала по образцу, в итоге ошибка 205: Floating Point Overlow


program ITERAT;
uses crt;

const max_iter=100; {maksimal'noe chislo iteraciy}

var

i: integer;
x,x0,eps,M: real;

function F(x:real):real; {funkciya}

begin

F:= x*x + x + 0.09;
end;

begin {osnovnaya programma}
clrscr;
write('Vvedite priblijennoe znachenie x='); readln(x);
write('Vvedite tochnost vichisleniy eps='); readln(eps);

i:=0;
repeat
x0:=x;
x:=x0+F(x0);
inc(i);
writeln('---Iteraciya ' , i:3,' x=',x);
writeln('F(x)=' , F(x),' tochnost=' , abs(x-x0));
until (abs(x-x0)<=eps) or (i>max_iter);

if (abs(x-x0)<=eps) then writeln ('Otvet: X=' , x)
else writeln('OTVET NE NAYDEN!!! za ',max_iter:0,' shagov iteraciya ne soshlas');

end.





Про метод итераций читала, в принципе поняла, но если кто сможет рассказать доходчиво- буду очень благодарна.

Добавлено через 15 мин.
кстати,когда выдает ошибку - возращает меня на строку
Цитата
F:= x*x + x + 0.09;


Сообщение отредактировано: Ven -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Ven, я не понимаю, в чем проблема? Ты задаешь точность в одну сотую, то есть хочешь, чтобы в ответе были как минимум 2 цифры после запятой правильны. Так? Получаешь
Otvet : X=-9.01...E-0001
, то есть, если перейти от экспоненциального представления к более привычному: - 0.901... Все, как заказывала, 2 цифры после запятой правильные...

Когда точность задана в одну тысячную - значит, надо чтоб как минимум три цифры после запятой были точными. Что имеем?
Otvet : X=-9.00075...E-0001
, или -0.900075... Опять все правильно. Три цифры точны, дальше - как повезёт. Тебе повезло, точны даже 4. Где подвох? Что не так?

Печатай результат не в экспоненциальной форме, а в обычной:
if (abs(x-x0)<=eps) then writeln ('Otvet: X=', x:15 :10)
, не надо будет переводить в привычный вид, сразу будет печататься в нём.

Сообщение отредактировано: IUnknown -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Ven   метод итераций по образцу с форума   10.10.2011 2:17
IUnknown   Значит, задаешь начальное приближение неверно. Пот…   10.10.2011 3:30
Ven   но и решения оно не выдает тоже(... Может подскаж…   10.10.2011 12:47
Lapp   но и решения оно не выдает тоже(... Ven, дело в т…   10.10.2011 13:49
IUnknown   но и решения оно не выдает тоже(... Правда? Vved…   10.10.2011 14:01
Lapp   Правда? ... То есть, -0.9 это уже не решение? Упс…   10.10.2011 14:23
Ven   Правда? Vvedite priblijennoe znachenie x=-1 Vved…   10.10.2011 17:25
Гость   Нажми Alt-F5 И еще совет: убери ужасный clrscr, то…   10.10.2011 17:28
Ven   Нажми Alt-F5 И еще совет: убери ужасный clrscr, т…   10.10.2011 17:34
Гость   Спасибо.А без Alt-F5 можно как нибудь вывести сраз…   10.10.2011 17:40
Ven   и еще. мне дали вот такую программу, но я в ней ос…   10.10.2011 17:42
Lapp   ты что-то такое имеешь в виду? l:= Round(-ln(eps…   10.10.2011 17:54
Ven   Огромное спасибо! :wub: Вы мне очень помогли)…   10.10.2011 18:10
Гость   Это снова я))) В общем программу я так и не сдала.…   16.01.2012 0:04
Krjuger   Выложи полный код со всеми исправлениями,чтобы мы …   16.01.2012 1:05
Гость   program ITERAT; uses crt; const max_iter=100; {m…   16.01.2012 1:20
Krjuger   Покажите примеры для которых у вас получаются разн…   16.01.2012 1:45
Гость   смысл в том что первые числа должны совпадать, вот…   17.01.2012 0:54
Ven   у меня такой последовательности не получается...…   17.01.2012 0:58
IUnknown   Ven, я не понимаю, в чем проблема? Ты задаешь точн…   17.01.2012 1:12
Ven   я конечно понимаю что мне еще далеко до осознания …   17.01.2012 1:17
Krjuger   Блин,уже все разъяснили,долго писал,удалите мой по…   17.01.2012 3:17
Ven   Еще подскажите пож-та. Тут вообще 2 корня:-0,9 и -…   17.01.2012 17:33
IUnknown   Можно: x0:=x; x:=x0-F(x0); // <--- внимательно…   17.01.2012 18:38
Ven   приближении = -1. а если нужно чтобы программа с…   17.01.2012 21:50
Krjuger   Ну как вариант ввести такую переменную,как a=1/f…   17.01.2012 23:34


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 7.09.2025 18:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name