Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.165.66] |
|
Сообщ.
#1
,
|
|
|
Всем хай! Сходу к делу!
Нашел в сети такую задачку. Дана функция на отрезке (см.рис.). Вводятся границы отрезка [a ... b] и n - число шагов табулирования(n > 80). Нужно протабулировать ф-цию на этом отрезке [a; b] и вывести результат в таком виде (табличном): -------------------------------------------------------- | Текущее значение х | Значение функции | Экстремум | -------------------------------------------------------- 3-я колонка предназначена только для вывода МИН/МАКС значения функции. Прикреплённая картинка
- конец условия - 1. область определения ф-ции: [-1; 1] 2. все элементы графика составляют полуокружности (половина окружности единичного радиуса) 3. если x = [0; 4] ИЛИ x = [8; 12], то y = +(1 - x^2) если x = [4; 8], то y = -(1 - x^2) *правда в формулах не просто х нужно подставлять, а учитывать сдвиг окружности (x^2 + y^2 = 1^2) вдоль оси Ох. ГЛАВНАЯ ПРОБЛЕМА с выводом/поиском экстремальных значений функции. 1. хоть предельные значения заданной функции = +-1 нет гарантий, что табулирование пройдет строго через них, может пройти через окрестность 2. как я понимаю, периодичность появления, например, максимумов, не совпадает с периодичностью полуокружностей (№1, №2, №5 или №6). Из этого вытекает такое заключение, что НЕВОЗМОЖНО узнать максимумы до тех пор, пока не будет проведен анализ всего отрезка [a; b]?? Это приводит к тому, что ЗА ОДИН ЦИКЛ результирующую таблицу НЕВОЗМОЖНО построить? Вообще, это задача похожа, например, на задачу, когда нужно вывести на экран все максимальные элементы массива (за 1 цикл такое не делается, но за 1 цикл можно было бы узнать ОБЩЕЕ кол-во максимальных, без печати). 1-ый вопрос: невозможно ли построить результирующую таблицу ЗА 1 ЦИКЛ по отрезку [a; b]?? 2-й вопрос: все эти окружности получаются парал.переносом окружности x^2 + y^2 = 1 вдоль оси Ох. Как оптимально обращаться к нужной окружности (их всего 6 штук) при текущем х? |
Сообщ.
#2
,
|
|
|
Цитата FasterHarder @ 1. область определения ф-ции: [-1; 1] А график прорисован в [0, 12]. Цитата FasterHarder @ нет гарантий, что табулирование пройдет строго через них А когда это таблично заданная недискретная функция давала точно значение экстремума? Цитата FasterHarder @ 1-ый вопрос: невозможно ли построить результирующую таблицу ЗА 1 ЦИКЛ по отрезку [a; b]?? Запросто. Формула есть, считать умеем... Цитата FasterHarder @ 2-й вопрос: все эти окружности получаются парал.переносом окружности x^2 + y^2 = 1 вдоль оси Ох. Как оптимально обращаться к нужной окружности (их всего 6 штук) при текущем х? Параметризовать. |
Сообщ.
#3
,
|
|
|
Цитата Akina @ А график прорисован в [0, 12]. ок, попутал я здесь, конечно с областью допустимых значений ф-ции Цитата Akina @ Запросто. Формула есть, считать умеем... смотря, что считать. Для данного случая я не вижу такой возможности...) |
Сообщ.
#4
,
|
|
|
Надо обозначить всего лишь отрезки, где функция положительна или отрицательна. Т.е. нужна функция типа
y([0..4])=m y([4..8])=n y([8..12])=m ... Это элементарно y=(x DIV 4) MOD 2 имеет именно такой вид, m=0, n=1. Аналогично размечаются и центры полуокружностей - по формуле xo = (x DIV 2) * 2 + 1 |
Сообщ.
#5
,
|
|
|
Akina, твой предыдущий пост описывает, как я понял, параметризацию окружностей (определение центров), это все хорошо, но ГЛАВНАЯ проблема ведь не эта, а нахождение экстремальных за 1 проход табулирования...
еще раз о проблеме, на др.примере: дан одномерный массив целых чисел, нужно вывести на экран ВСЕ МАКСИМАЛЬНЫЕ И МИНИМАЛЬНЫЕ элементы. Вспомог.памяти использовать нельзя. |
Сообщ.
#6
,
|
|
|
Цитата FasterHarder @ дан одномерный массив целых чисел, нужно вывести на экран ВСЕ МАКСИМАЛЬНЫЕ И МИНИМАЛЬНЫЕ элементы. Ну так это ж типичный поиск локального экстремума. Если предыдущий больше текущего и пред-предыдущего - вывести. Ну и по-любому вывести первый и последний - они тоже локальные экстремумы. Три переменные под "доп. память" не подпадают же ж? |
Сообщ.
#7
,
|
|
|
в общем, спустя почти год, пришлось вернуться к данной задаче и ДОБИТЬ ее
все вроде получилось т к функция периодическая, то все переносил для анализа в самый первый период положительный поиск минимального и максимального значения были реализованы предобработкой ДО начала табулирования, т к на лету нереально понять, что это макс/мин, пока не проверены все точки функции в итоге в прожке получилось под 240 строк кода и около 8-10 функций Скрытый текст у меня в загашнике лежит несколько сотен тысяч нерешенных задач, по моим прикидкам мне потребуется порядка 33-37 миллионов лет, чтобы с ними разобраться . Дорогу осилит идущий! Проблема в том, что еще идти желательно в нужном направлении)) |