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


Новичок
*

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

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


но и решения оно не выдает тоже(... Может подскажете, как эту программу правильно написать? или ссылку на рабочую, похожую..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Ven @ 10.10.2011 9:47) *
но и решения оно не выдает тоже(...

Ven, дело в том, что область сходимости тут действительно очень узкая. Задай x=-0.5 - и получишь ответ, левую точку (-0.9). Метод итераций очень капризный - с одной стороны. А с другой - имеет много свобод. Вот смотри..

Ты имеешь уравнение

F(x) = 0

По нему ты конструируешь

F(x) + x = x

- и пользушься им. Но можно же исходное уравнение домножить на любой множитель:

a*F(x) = 0

И тогда ты получишь:

a*F(x) + x = x

Коэффициент a можно подобрать так, чтобы расхирить зону сходимости. Для этого можно его специально подобрать (по формулам), но можно для начала и просто попробовать разные значения. Например, если положить a=-1, то получим

-F(x) + x = x

Если ты внесешь это изменение в программу и снова задашь начальное значение x=-0.5, то ты теперь получишь уже правый корень (-0.1). Потом попробуй задать a=0.1, и зона сходимости расширится довольно неплохо. Можно будет начинать, скажем, с -10 или с +5. Попробуй )). А потом попробуй a=-0.1. Попробуй и одну сотую.. Ты увидишь, что чем меньше (по модулю) этот коэффициент - тем лучше )). Но при его уменьшении сходимость хоть и стабилизируется, но и замедляется. Рекомендую увеличить максимальное число итераций по крайней мере до 1000.
Давай, дерзай. И показывай результаты )).

P.S.
Помню, когда-то я этим занимался, так я там встроил в код автоматический подбор коэффициента по характеру функции.. ))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  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 21:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name