![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Ven |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Женский Репутация: ![]() ![]() ![]() |
нужно решить уравнение методом простых итераций. Задачу нашла на форуме в FAQ
сделала по образцу, в итоге ошибка 205: Floating Point Overlow
Про метод итераций читала, в принципе поняла, но если кто сможет рассказать доходчиво- буду очень благодарна. Добавлено через 15 мин. кстати,когда выдает ошибку - возращает меня на строку Цитата F:= x*x + x + 0.09; Сообщение отредактировано: Ven - 9.10.2011 22:21 |
![]() ![]() |
Ven |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Женский Репутация: ![]() ![]() ![]() |
но и решения оно не выдает тоже(... Может подскажете, как эту программу правильно написать? или ссылку на рабочую, похожую..
|
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
но и решения оно не выдает тоже(... 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. Помню, когда-то я этим занимался, так я там встроил в код автоматический подбор коэффициента по характеру функции.. )) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:33 |