Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2011, 19:24   #1
Suntehnik
Новичок
Джуниор
 
Регистрация: 14.01.2011
Сообщений: 1
Вопрос Дихотомия

Здравствуйте!
У меня возникла трабла с написание алгоритма, точнее сомневаюсь в нем, решил выложить проверить можно ли так.
Задача: методом дихотомии решить нелинейное уравнение f(x)=g(x).
Можно было конечно решить элементарно: f(x)-g(x)=0 и решать всё относительно одной функции. Но я пошел другим путем )))
P.S. Без разницы какие функции, но в моём случае это (0,5^x)-3=(x+2)^2
Вот мой алгоритм:
Находим решение на участке [-2,-1] (это графически нашёл - облегчил "кругозор")
1. Находим с=(а+в)/2, проверяем является ли с решением.
Если нет, то
2. Если [min(f(a),f(c)),max(f(a),f(c))][min(g(a),g(c)),max(g(a),g(c))]=0,
то а:=с
иначе в:=с (нахождение участка с решением)
3. Переходим обратно к п.1 и т.д.

P.S. Может я и нагородил тут, но вроде ничего сложного и ещё можно ли сделать так как в п.2. или лучше заменять индексами.
Suntehnik вне форума Ответить с цитированием
Старый 30.06.2011, 06:55   #2
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

метод дихотомии предназначен для решения нелинейных уравнений вида F(x)=0, следовательно ваше уравнение нужно привести к такому виду, т.е. нужно решать f(x)-g(x)=0, не надо ничего усложнять.
Да , кстати причем тут min и max во 2 условии? Нужно ведь проверять смену знака функции на 2 участках.
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дихотомия в C++ k4k7u3 Помощь студентам 0 19.05.2011 21:30