Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Amell
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 13
#1

Перебор значений double - C++

05.09.2011, 02:14. Просмотров 1955. Ответов 30
Метки нет (Все метки)

Привет всем, весь день сижу и думаю над алгоритмом следующего

Нам известна функция которая принимает один параметр типа double и возвращает double.

Реализация функции неизвестна, но известны некоторые особенности:
  1. При вызове функции с параметром 0.0, мы получим число меньше нуля
  2. При вызове функции с параметром 1.0, мы получим число больше нуля
  3. Есть лишь единственное значение Х, между 0.0 и 1.0, при которых функция вернет 0

  • Цель - написать функцию перебора чисел от 0.0 до 1.0 чтобы найти при каком значение Х мы получим 0 из функции о которой писалось выше.


Естественно, double - число довольно здоровое, и хотя мы ограничены определенным диапозоном, у нас всеравно остается куча вариантов для перебора.. [0.000000000000001 ; 0.999999999999999] Простой перебор, увеличение Х на 0.000000000000001 в цикле, займет вечность, хотя и будет самым точным..

Пробовал ограничить кол-во перебора с помощью нахождения Х-а при котором передаваемый параметр был минимальным, но так и не придуал как это граммотно реализовать. Выходило что ограничить мог не так и сильно, либо получал не те результаты..

Можетбыть кто знает какие способы по скоращению времени на перебор в данном случае? Или куда глядеть дальше по этой теме?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2011, 02:14     Перебор значений double
Посмотрите здесь:

перебор значений - C++
Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.

Перебор значений - C++
Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.

Перебор возможных значений для трёх чисел - C++
Доброго времени суток. Нужно перебрать все возможные значения трёх чисел. их сума равна 1. перебрать нужно с шагом 0,01, например 0,01...

Перебор всех значений трёх булевых переменных - C++
Вобщем мне надо проверить функцию на тавтологию, для этого как я понимаю надо проверить чтобы конечная функция была всегда истинной при...

Объясните перебор всех значений от 0 до n с помощью битовых операций - C++
for (int i = (1 << n) - 1; i >= 0; i--) { for (int j = 0; j < n; j++) { if (i & (1 << j)) Этот кусок кода означает...

Используя перебор значений найти все такие целые a, b, что n=3a+5b для любого натурального n>7 - C++
Помогите с задачей,пожалуйста.

Visual c++ импорт double значений из txt файла в массив - C++
Есть два файла, в них цифры, по 21 штуке, идут в столбик разделены CR LF -9.71281397761478 -10.0993674169963 ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Amell
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 13
05.09.2011, 03:45  [ТС]     Перебор значений double #16
Вобщем есть некая функция:

double d_Function(double X);

Мы не знаем ничего про само тело функции. Нам лишь известно следующее:
  1. d_Function математически непрерывная функция
  2. При d_Function(0.0f), return из функции выйдет < 0
  3. При d_Function(1.0f), return из функции выйдет > 0
  4. Есть лишь одно значение Х, при которых return из функции = 0.0f
alkagolik
Заблокирован
05.09.2011, 03:48     Перебор значений double #17
дизассемблер, дебаггер и узнать функцию. иначе перебор (и то... как?). Или есть возможность кормить ей переменные? Если есть, то деление пополам лучший вариант (я так думаю)
Amell
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 13
05.09.2011, 03:49  [ТС]     Перебор значений double #18
узнать функцию к сожалению невозможно
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
05.09.2011, 03:52     Перебор значений double #19
Всё чудесатее и чудесатее (C)
Числа 1.0f и 0.0f имеют тип float. При этом аргумент и результат функций объявлены как double. По-моему кто-то хочет нас запутать

Цитата Сообщение от alkagolik Посмотреть сообщение
дизассемблер, дебаггер и узнать функцию. иначе перебор
Чтобы перебрать все числа double на отрезке (0.0, 1.0) потребуется очень быстрый вычислитель и очень много времени. Ну или очень много удачи
Amell
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 13
05.09.2011, 03:54  [ТС]     Перебор значений double #20
Пардонте, там не флоат (без f), привычка так записывать числа с плав точкой просто

Тобишь, метод половинного деления будет работать только елси математически функция монотонная, я правильно понял? Попытаюсь тогда разузнать, монотонна она или нет.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
05.09.2011, 03:57     Перебор значений double #21
Цитата Сообщение от Amell Посмотреть сообщение
Тобишь, метод половинного деления будет работать только если математически функция монотонная, я правильно понял?
Важнее количество смен знака. Функции не обязательно быть монотонной, но не должно быть больше одной смены знака.
alkagolik
Заблокирован
05.09.2011, 03:57     Перебор значений double #22
Цитата Сообщение от grizlik78 Посмотреть сообщение
потребуется очень быстрый вычислитель и очень много времени
ну это и так понятно. до меня не доходит просто как будет проверяться возвращаемое значение функции, очевидно что ее надо "выудить"... это наверное не в тот форум.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
05.09.2011, 04:00     Перебор значений double #23
alkagolik, ну насколько я понимаю задание — функцию можно вызывать с любыми аргументами, но нет возможности её дизассемблировать. Например программа выполняется на удалённом сервере, куда можно лишь отправить программу.
alkagolik
Заблокирован
05.09.2011, 04:02     Перебор значений double #24
то бишь возврат проверить можно... забыл имя грека, чей это алгоритм (деление пополам) напомни пожалуйста.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
05.09.2011, 04:07     Перебор значений double #25
Ну, в этом контексте мне только Апории Зенона с его Ахиллесом и черепахой вспоминаются. Но вообще-то про дихотомию мы уже третий десяток постов разговариваем
Amell
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 13
05.09.2011, 04:08  [ТС]     Перебор значений double #26
Возврат можно провреить всегда. Т.е. дано полное право вызивать функцию d_Function из другой функуии - например double Search(); сколько угодно раз
Amell
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 13
05.09.2011, 04:09  [ТС]     Перебор значений double #27
Возврат можно провреить всегда. Т.е. дано полное право вызивать функцию d_Function из другой функуии - например double Search(); сколько угодно раз
Amell
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 13
05.09.2011, 04:11  [ТС]     Перебор значений double #28
извиняюсь, произошел сбой с Gateway... Итого прошлый пост запостился дважды.
alkagolik
Заблокирован
05.09.2011, 04:12     Перебор значений double #29
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ну, в этом контексте мне только Апории Зенона с его Ахиллесом и черепахой вспоминаются
ну и не надо)) все равно сам найду, узнаю и запомню
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2011, 06:01     Перебор значений double
Еще ссылки по теме:

Используя перебор значений вывести на экран в убывающем порядке все двузначные числа, в деся-тичной записи кот - C++
Добрый день вот такая вот задача на отладку программы:используя перебор значений вывести на экран в убывающем порядке все двузначные числа,...

Перебор - C++
Ребят, помогите решить две задачи. Занимаюсь программированием уже 6 лет. Но тут в ступор встал. 1 задача: есть массив. из него нужно...

Перебор - C++
Hi.мне нужно часть кода в котором перебирает все значение пример у нас 2 банки(на много литров),и 10 л воды.Нужно сделать все возможние...

Перебор чисел - C++
Здравствуйте. Допустим, есть у меня 2 числа (до 1000, например). Как мне перебрать все возможные комбинации произведений этих чисел? ...

Перебор списка - C++
Всем привет. Задача: Перебрать все элементы списка(линейный однонаправленный), так что бы поучаствовали все элементы, но не было повторов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Amell
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 13
05.09.2011, 06:01  [ТС]     Перебор значений double #30
В ситуациях когда знак у функции за указанный промежуток меняется не один раз остается только перебор?

Добавлено через 43 минуты
Так же в условии сказано, есть только одно значение параметра при котором функция вернет 0, следовательно она меняет знак лишь однажды... Итого данный метод должен сработать.
Yandex
Объявления
05.09.2011, 06:01     Перебор значений double
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru