Всем привет, интересует такая задача : Даны две ф-ции F1(x) и F2(x) нужно найти все корни уравнения : F1(x)=F2(x), с точностью до некоторого эпсилонта (в функциях могут содержаться : логарифм, корень, возведение в степень) .
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Всем привет, интересует такая задача : Даны две ф-ции F1(x) и F2(x) нужно найти все корни уравнения : F1(x)=F2(x), с точностью до некоторого эпсилонта (в функциях могут содержаться : логарифм, корень, возведение в степень) .
Название |
---|
Вроде можно перенести F2(x) влево и запустить бинарный поиск.
а как он будет работать ? какое условие присваивания центра влево или вправо ?
В правке неверное решение.
Возможно, глупый вопрос, но все же как узнать, что корней нет?
Ну я исходил из предположения, что корни всегда есть :) Думаю это делается так (не уверен, что этого достаточно):
На каждом шагу обе функции должны быть определены.
После алгоритма проверить, что
abs(F1(l) - F2(l)) < EPS
а если на отрезке несколько корней ?
1) Не думаю, что "int" — хороший выбор для l, r, mid.
2) Вряд ли хорошо иметь сразу l == r
3) Данный метод найдёт только один корень, да и то, если F1(x)-F2(x) имеет разный знак в точках x=l и x=r.
Если это практическая задача, то самое простое — построить график функции. И уже из графика брать начальные значения для l и r бинпоиска или других численных методов. Вместо графика можно использовать возможности функционального анализа.
Ну да, не int :)
Ок, проблема с несколькими корнями есть — убираю свое решение.
Это будет работать, только если (F1(x) — F2(x)) монотонная.
Нет, это работает если значение слева меньше нуля, а справа больше. Функция может и не быть монотонной, но должна быть непрерывной.
Менее глупый вопрос: является ли эта задача вообще алгоритмически разрешимой? Нельзя ли в указанных функциях поставить задачу как решение заданного диофантова уравнения, если эпсилон наперед известен?
Решай с помощью численных методов или поставь задачу более конкретно.
Возведение в степень — натуральную? Корень — только квадратный или всех натуральных степеней? И да, сложение, вычитание, умножение и деление-то в этих функциях может быть?
корень только квадратный, возведение в натуральную, да может быть все из перечисленного