Всем привет, интересует такая задача : Даны две ф-ции F1(x) и F2(x) нужно найти все корни уравнения : F1(x)=F2(x), с точностью до некоторого эпсилонта (в функциях могут содержаться : логарифм, корень, возведение в степень) .
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 156 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | nor | 152 |
Всем привет, интересует такая задача : Даны две ф-ции 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)) монотонная.
Нет, это работает если значение слева меньше нуля, а справа больше. Функция может и не быть монотонной, но должна быть непрерывной.
Менее глупый вопрос: является ли эта задача вообще алгоритмически разрешимой? Нельзя ли в указанных функциях поставить задачу как решение заданного диофантова уравнения, если эпсилон наперед известен?
Решай с помощью численных методов или поставь задачу более конкретно.
Возведение в степень — натуральную? Корень — только квадратный или всех натуральных степеней? И да, сложение, вычитание, умножение и деление-то в этих функциях может быть?
корень только квадратный, возведение в натуральную, да может быть все из перечисленного