Статья Автор: Лебедев Дмитрий

Нахождение лучшего решения уравнения в рациональных числах.

Постановка задачи.
Непрерывная функция f(x)  на цлелевом интервале (L,R) возрастает и f(L) <0 < f(R)
Ноебходимо найти корень уравнения f(x) = 0.
В качестве ответа вывести наилучшее "левое приблежение" рациональной дробью со знаменателем не превосходящим N
Пара  чисел a, b (a - целое, b - натуральное) будет ответом, тогда и только тогда, когда:
  • \((I)\ \ L < \frac{a}{b}<R ;\ b<=N;\ f(\frac{a}{b})<0; a\in\mathbb{Z};\ b\in\mathbb{N};\ НОД(|a|,b)=1\)    
  • \(для\ любых\ c,d\ (\frac{c}{d} \neq \frac{a}{b}\ ),\ удовлетворяющих\ (I)\ следует,\ что\ \frac{c}{d}\ <\ \frac{a}{b} \)

Рассмотрим простой пример: \(f(x)=x-\sqrt{m}; N=10^k\)
 

1, Попробуем положить x=m**0.5 и "округлим знаменатель дроби до N"
Запустив программу для разных m, обнаружим "стабилизацию" точности и округления слева и справа. 
 


2. Для нахождения корня возмем бинарный поиск на 100 шагов и определим "левую" и "правую" границы и сравним с результатом простого вычисления. 
Если посмотреть на результаты для m=2 (корня из двух), то можно увидеть, что совпадение приближений левой и правой границ. 
Возникает вопрос: Как найти нужное приблежение?


3. Попробуем изменить способ получения среднего значения на метод "средней скорости".
Поиск продолжается до достижения требуемого значения знаменателя. Эта дробь и будет искомой с нужной границей.
Такой способ подходит для нахождения корней.
 


4. Попробуем решить уравнение \(x^2+\sqrt{x}\ =\ C\)
Возьмем решение и изменим целевую функцию. 
Для получения оптимальных решений желательно, чтобы длина целевого интервала была равна 1.
Для этого достаточно получить прикидку бинарным поиском
Объяснение этому можно найти в теории цепных дробей
 

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать