Метод касат-ных

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Метод касат-ных

evgeny_d » 21 янв 2005, 10:09

У меня сейчас под рукой Maple 8, так даже процедура поиска ВСЕХ корней там реализована ТОЛЬКО для полиномов.
Что тоже забавно.
Для того, чтобы найти все корни полинома степени > 6, вроде как, надо часть из них угадать...
В общем есть сомнения, что Maple зорошо справлятся с полиномами больших степеней.

Дрюль » 21 янв 2005, 08:23

Никаких непоняток. У моего препода было хорошее настроение - и он решил пошутить (он сам так мне сказал в аське пару минут назад). Закончатся каникулы - получит табуреткой по башке.

Eugie » 20 янв 2005, 20:04

Да, Дрюль, ты полез явно не в ту степь. Или ты из команды разработчиков какого-нибудь Maple или Mathematica :)

Если твою задачу понимать буквально, то нужно последовательно:

1) написать парсер аналитического выражения произвольной функции 1-й переменной
2) реализовать аналитическое дифференцирование
3) для произвольного ур-я f(x) = 0 придумать метод отыскания ВСЕХ его корней и сингулярностей; здесь уже аналитика в общем случае не работает, как впрочем и численные методы.

Боюсь, эта задача (во всей ее полноте) не под силу и разработчикам упомянутых программ :) У меня сейчас под рукой Maple 8, так даже процедура поиска ВСЕХ корней там реализована ТОЛЬКО для полиномов.

Приведи-ка лучше дословно условие своего задания. Может, все-таки непонятки?

DeeJayC » 20 янв 2005, 16:21

Дрюль писал(а):Может я просто не в ту степь полез?
Может.
У меня задание - написать прогу, реализующую полный анализ функции, считанной из текстового файла и построение её графика.
Может, значений ли функции? Если нет - функцию ( если это круче
полинома ) задолбаешься анализировать.
Я хотел сделать так: находим D(f) разбиением на более простые функции, методом интервалов находим области знакопостоянства (сами точки, в которых функция равна нулю или не определена находим методом Ньютона).
Это ваще-то уже на курсовик может потянуть....
И т.д. Для нахождения асимптот графика хотел подключить вычисление пределов.

А зачем?
Возникает ещё одна небольшая проблема: чтобы находить экстремумы и точки перегиба (как я планировал, тоже методом Ньютона) нужно получить производную данной функции (не численное значение, а формулу). Алгоритм построения производной я придумал, но он мне кажется неэффективным.
Так вот, можно ли решить мою задачу каким-нибудь другим способом?

Дрюль » 20 янв 2005, 13:08

Может я просто не в ту степь полез? У меня задание - написать прогу, реализующую полный анализ функции, считанной из текстового файла и построение её графика. Я хотел сделать так: находим D(f) разбиением на более простые функции, методом интервалов находим области знакопостоянства (сами точки, в которых функция равна нулю или не определена находим методом Ньютона). И т.д. Для нахождения асимптот графика хотел подключить вычисление пределов. Возникает ещё одна небольшая проблема: чтобы находить экстремумы и точки перегиба (как я планировал, тоже методом Ньютона) нужно получить производную данной функции (не численное значение, а формулу). Алгоритм построения производной я придумал, но он мне кажется неэффективным.

Так вот, можно ли решить мою задачу каким-нибудь другим способом?

evgeny_d » 20 янв 2005, 09:21

Вообще-то за примером далеко ходить не надо.
cos(n*x) на интервале [0,PI]
При n=1 - 1 корень
При n=2 - 2 корня
и т.п.

Если берем некоторое покрытые (сетку) с интервалом e, то всегда найдется такое n, что в одной "ячейке" сетки окажется более одного корня... да и вообще сколько угодно корней.

Мультистарт из равномерно раскиданных узлов имеет смысл делать только в случае, если функция удовлетворяет условию Липшица с некоторой константой K, но это, как говорится, уже совсем другая история %)

Eugie » 19 янв 2005, 20:21

если у тебя задан интервал, то на этом интервале нахождение всех корней гарантировано, скажем, методом хорд. Разумеется, если у тебя шаг меньше расстояния между соседними корнями
То-то и оно, что 'если'... И найдешь ты один корень на интервале, а их может быть несколько.
Короче, нет универсальных методов, увы, и особенно это касается численных методов. Поэтому и приходится постоянно делать оговорки о точности.

AiK » 19 янв 2005, 20:03

Eugie, вот как раз если у тебя задан интервал, то на этом интервале нахождение всех корней гарантировано, скажем, методом хорд. Разумеется, если у тебя шаг меньше расстояния между соседними корнями. С методом касательных сложнее - корень может быть, а касательная в той точке может быть не определена. Другое дело, что в выбранный тобою интервал могут попасть не все корни. Наибольшую засаду тут представляют периодические функции.

Eugie » 19 янв 2005, 19:46

А если ничего предварительно неизвестно, задан только интервал поиска? На самом деле ни один из численных методов не гарантирует нахождение всех корней в общем случае. Можно только исходя из разумных предположений о ..хм.. неизвращенности функции увеличить вероятность их обнаружения :)

AiK » 19 янв 2005, 19:31

Eugie, на сколько я помню, классики рекомендуют комбинировать метод Ньютона с другими, более медленно сходящимися методами, например с методом бисекции (деления отрезка пополам). Однако ж даже для этого метода необходимо делать предварительные предположения о корнях.

Вернуться к началу