Страницы: 1
RSS
Алгоритмы. Поиск десятичного числа при известных границах поиска (мин/макс), Algorithms. Find the decimal number under certain boundaries of a search (min/max)
 
Приветствую!

Дано:
  1. Десятичное число для поиска.
  2. Нижняя (искать от…) и верхняя (искать до…) границы поиска в виде десятичных чисел
Границы входят в область, то есть заданное число может быть границей.

Задача:
Найти заданные числа как можно быстрее.

Кроме бисекции/дихотомии/метода половинного деления (и то нужно докручивать) больше ничего на ум больше не приходит…
Файл, код и отчёт
Изменено: Jack Famous - 06.05.2022 14:17:00
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Все ж задача должна быть описана в сообщении , а не добавлять обратную (пойми что нужно по коду).
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
Дано:  
1. Десятичное число для поиска.  
2. Нижняя (искать от…) и верхняя (искать до…) границы поиска в виде десятичных чисел
Границы входят в область, то есть заданное число может быть границей.

Задача:
Найти заданные числа как можно быстрее.
число уже найдено, см.п.1 (оно задано)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, если вы не собираетесь участвовать, то незачем писать ваши "остроумные" замечания.

Задача упрощена до алгоритма. Как его применять и где - мои проблемы.
Навскидку, что-то похожее, было использовано при создании альтернативы инструменту подбор параметра от маэстро комбинаторики MCH
Изменено: Jack Famous - 06.05.2022 16:03:04
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Ігор Гончаренко написал:
ничем не поспособствовал пониманию задачи(((
Мне не понятна задача, первое что пришло на ум уже здесь озвучено:
Цитата
Ігор Гончаренко написал:
число уже найдено, см.п.1 (оно задано)
Количество итераций - одна, возвращаем искомое число, если оно находится в диапазоне поиска

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

Хотелось бы более подробно получить описание задачи.
Изменено: MCH - 06.05.2022 17:05:35
 
Цитата
MCH: Мне не понятна задача
оу — ну в таком случае, я действительно постараюсь перестроить задачу под конкретный пример.

Например: как найти ТОЧНУЮ высоту строки, при которой Excel начинает считать её скрытой?  :)

Цитата
UPD: MCH: Метод Ньютона  не подойдет или  Метод хорд ?
спасибо) мне тяжело читается подобное — могли бы вы кодом показать на примере из шапки?
Изменено: Jack Famous - 06.05.2022 17:08:34
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Еще раз, перестрелку завершили!

Алексей. Задача непонятна и даже указанное применение,  eё не поясняет. Любой поиск имеет услоаие по которому принимается решение, что нашли. Поис, как правило осуществляется по известному множеству. В противном случае это скорее подбор.  Короче пиши в первом посте. Я почищу тему.
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
число уже найдено, см.п.1 (оно задано)
Да, вопрос задан по примеру известного прикола.

Погадаем.
Скорее всего, автор имел ввиду что-то другое. Например, логично предположить, что номер этого числа между двумя заданными. Тогда вопрос должен звучать примерно так: Найти позицию числа С в заданном упорядоченном по возрастанию массиве чисел от А до В.
Если все числа в массиве М строго возрастают на 0.000000001, то номер числа =А+С (+/- нижняя граница массива) без всякого поиска.
Если числа в массиве последовательные не со строгим шагом, то в поиске можно использовать не деление пополам для очередного индекса, а примерный расчёт в зависимости от А, В и С. Например, если нижняя граница массива =LB, верхняя граница =UB, первое число в массиве M(LB)=А, последнее M(UB)=В, число для поиска =С, то текущий индекс k вычисляется как k=(C-A)/(B-A)*(UB-LB) + LB. Затем элемент массива M(k) сравнивается с С и в зависимости от > или < определяются новые границы LB и UB. И так по циклу.
Изменено: tolikt - 06.05.2022 18:03:30
 
Цитата
БМВ: Поис, как правило осуществляется по известному множеству. В противном случае это скорее подбор
Возможно, тут больше про подбор (для примера с подбором высоты строки — точно), но, по-моему, сути это не меняет. Я ищу способ более быстрого поиска/подбора при постоянном приближении к результату. Чистить — не нужно, страна должна знать своих героев  :) У нас полно тем с перепалками (в том числе, с твоим участием), так что пусть будет всё.

tolikt, ссылка не открывается) что с подбором высоты строки?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Офф...
Не получилось вставить картинку напрямую в сообщение. Как это сделать, так и не понял: либо вставляется значок картинки, либо огромный текст с кучей случайных букв. Ссылка тоже, как видно, не прошла.
Во вложении картинка.
 
tolikt, видел, хорошая)
Поясню ещё: есть некий триггер, при котором мы понимаем, что число найдено. Для аналога подбора параметра - результат функции, основанной на подбираемом параметре, равный требуемому с заданной точностью. Для высоты строки - значение, при котором она начинает считаться скрытой/видимой (тут тоже без заданной точности не обойтись). Пример из шапки, где "известное" число является лишь триггером, чтобы понять, что поиск окончен - только для упрощения задачи.

Может, так понятнее будет  :)
После праздников сделаю другой вариант, основанный на меняющемся шаге приращения.
Изменено: Jack Famous - 06.05.2022 18:20:35
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
что с подбором высоты строки?
0  и подбирать не надо, поясню почему
установи высоту например 0,6,проверь, что скрыта строка, увеличь масштаб, проверь что строка скрыта, удивись,  верни масштаб, проверь, удивись ....
По вопросам из тем форума, личку не читаю.
 
БМВ, не пробовал менять масштаб. Считаем равным 100 и продолжаем искать высоту с точностью хотя бы до 10 знаков)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ну так и напиши, что нужно найти число с известной погрешностью, при котором выполнится условие, которое не позволяет вычислить это число решением уравнения.
Нет тут заданного числа , есть только погрешность.
По вопросам из тем форума, личку не читаю.
 
БМВ, в таком случае, можно расширить до "найти число с минимальной погрешностью за установленное время". Только я всё это упростил, потому что это не должно повлиять на алгоритм, а только раздуть код и увести его от сути.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх