ОЧЕНЬ СЛОЖНО! ОЧЕНЬ ИНТЕРЕСНО!
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.14] |
|
|
правила раздела Алгоритмы

ОЧЕНЬ СЛОЖНО! ОЧЕНЬ ИНТЕРЕСНО!
|
Сообщ.
#1
,
|
|
|
|
Есть график какой-то неизвестной функции. Могу ли я судя по x и y определить что это за функция?
|
|
Сообщ.
#2
,
|
|
|
|
Цитата Антоха, 11.05.03, 20:35:13 Есть график какой-то неизвестной функции. Могу ли я судя по x и y определить что это за функция? конечно нет |
|
Сообщ.
#3
,
|
|
|
|
Почему? :(
|
|
Сообщ.
#4
,
|
|
|
|
ты можешь попытаться восстановить функцию, чей график будет приблизительно похож на заданный.
читай инфу по методам апроксимации, интерполяции, методу наименьших квадратов и сплайн-апроксимации. ну, или если тебе разово надо, а не программу реализовать, которая этим заниматься будет, то пробуй использовать мозги:) |
|
Сообщ.
#5
,
|
|
|
|
Цитата Demo_S, 11.05.03, 21:00:41 читай инфу по методам апроксимации, интерполяции, методу наименьших квадратов и сплайн-апроксимации. Надо будет почитать... Цитата Demo_S, 11.05.03, 21:00:41 ну, или если тебе разово надо, а не программу реализовать, которая этим заниматься будет, то пробуй использовать мозги. Это только если график несложный. А если прогу сварганить, которая будет по каждому следующему x составлять функцию? Или это из фантастики? |
|
Сообщ.
#6
,
|
|
|
|
поясни, что значит по "каждому следующему х составлять функцию"? может и не фантастика:)
|
|
Сообщ.
#7
,
|
|
|
|
x = 0 y = 0 - наверное y = x;
x = 1 y = 2 - один из варианов - y = x + 1; y = 2x; y = x0 + 1; y = x0 + x; - т.е. много вариантов. С помощью проги эти варианты отбирать, подставлять в последующие x, снова отбирать нужные функции. И так пока не останется одна функция или пока мы не убедимся, что такая функция не существует. Фантастика или нет? |
|
Сообщ.
#8
,
|
|
|
|
Цитата Антоха, 11.05.03, 21:32:13 И так пока не останется одна функция или пока мы не убедимся, что такая функция не существует. Фантастика или нет? НЕ фантастика, но с одной оговоркой - с самого начала надо определить класс функций, в которых ведется поиск. Скажем, полиномы минимально возможной степени, проходящие через заданные точки... или аналогичные им тригонометрическое ряды... Потому что среди любых функций можно получить скажем такой вариант: первый шаг: exp(-1000000*|x|) второй шаг: exp(-1000000*|x|) + 2*exp(-1000000*|x-1|) и так для каждого нового значения добавлять f(xi)*exp(-100000*|xi|). удовлетворяет? Практически да, т.к. уже exp(-1000) на компе фиг отличишь от ноля. И таких функций можно напридумывать бесконечно много для любого конечного числа точек. |
|
Сообщ.
#9
,
|
|
|
|
Цитата Антоха, 11.05.03, 21:07:46 Это только если график несложный. А если прогу сварганить, которая будет по каждому следующему x составлять функцию? Или это из фантастики? Для этого надо будет просто проводить аппроксимацию функции для каждого нового х и тем самым будет происходить постепенное "уточнение" оригинальной функции... |
|
Сообщ.
#10
,
|
|
|
|
А что касается, приближения к оригиналу численными методами, то мы можем получить достаточно точный вид нашей оригинальной функции, но ее представление может оказаться "кусочно-интервальным"...
|
|
Сообщ.
#11
,
|
|
|
|
А где можно почитать про апроксимацию, интерполяцию, метод наименьших квадратов и сплайн-апроксимацию?
|
|
Сообщ.
#12
,
|
|
|
|
Chtobi tochno opredelit' funkciju, edinstvennij shans - heuristic algorithms
|
|
Сообщ.
#13
,
|
|
|
|
2Антоха:
http://www.srcc.msu.su/ - Вычислительный центр |
|
Сообщ.
#14
,
|
|
|
|
Цитата xJohn, 12.05.03, 13:56:21 Chtobi tochno opredelit' funkciju, edinstvennij shans - heuristic algorithms Не понял. Что надо сделать с алгоритмом? |
|
Сообщ.
#15
,
|
|
|
|
... эврестические алгоритмы... (xJohn)
Вообще все зависит от того в чем состоит задача. Если задача прикладная, то проще провести аппроксимацию полиномом. Если же нужно найти функцию по графику, то задача решается только приближенно, (за исключением, если график является существующей стандартной функцией, а не природным процессом или экспериментальными данными - тогда возможно точное решение, если в алгоритм будет заложена данная функция). Один из основных вариантов решения - провести аппроксимацию по методу наименьших квадратов для всевозможного набора стандартных функций. Та ф-я, для которой сумма квадратичных отклонений будет наименьшей является искомой из набора функций... |
|
Сообщ.
#16
,
|
|
|
|
Более менее точно приблизить можно почти любую функцию, но при рассмотрении и разбиении ее на интервалы.... ;D
|
|
Сообщ.
#17
,
|
|
|
|
Цитата GrAnd, 13.05.03, 09:21:26 Более менее точно приблизить можно почти любую функцию, но при рассмотрении и разбиении ее на интервалы.... ;D а как же функция дирихле её вообще ни как не приблизишь её даже не нарисуешь и вообще приближать можно если знаешь точный вид того что приближашь а полиномами плохо так как возникает осциляция |
|
Сообщ.
#18
,
|
|
|
|
Цитата GrAnd, 13.05.03, 09:21:26 Более менее точно приблизить можно почти любую функцию, но при рассмотрении и разбиении ее на интервалы.... ;D А если функция бесконечно возрастающая (убывающая)? Цитата esperanto, 13.05.03, 12:59:01 а как же функция дирихле её вообще ни как не приблизишь её даже не нарисуешь Что это за функция такая?? P.S.> Есть ли программы, которе строят графики (x и y могут быть больше, чем макс. значение у DWORD, int64)?? |
|
Сообщ.
#19
,
|
|
|
|
Цитата esperanto, 13.05.03, 12:59:01 а как же функция дирихле её вообще ни как не приблизишь её даже не нарисуешь и вообще приближать можно если знаешь точный вид того что приближашь Если я не ошибаюсь, то изначально задача ставилась - по графику функции определить ее вид ![]() Так что, мы имеем поточечную зависимость F(x)... |
|
Сообщ.
#20
,
|
|
|
|
Цитата Антоха, 13.05.03, 13:11:53 Что это за функция такая?? |0-x иррациональное Dirih(X)=| |1-x рациональное Или LimnLimm[cos(2pi*n!*x)]m Оба предела -> к бесконечности |
|
Сообщ.
#21
,
|
|
|
|
Цитата Антоха, 13.05.03, 13:11:53 P.S.> Есть ли программы, которе строят графики (x и y могут быть больше, чем макс. значение у DWORD, int64)?? Возьми double или real, и массштабируй ;D |
|
Сообщ.
#22
,
|
|
|
|
Цитата Антоха, 13.05.03, 13:11:53 А если функция бесконечно возрастающая (убывающая)? А что, составляет проблему получить внешний вид функций вида ex или 1/x по их графикам.... : |
|
Сообщ.
#23
,
|
|
|
|
Цитата GrAnd, 13.05.03, 13:38:17 Возьми double или real, и массштабируй ;D Хм. DWORD есть double и ограничен 4,294,967,296 (максимальное значение). А мне надо 3,4028236692093846346337460743177e+38 Т.е. DWORD 4 байта, а мне надо в 4 раза больше, т.е. 16 байт. Я в выходные (а может и раньше) нарисую график (надеюсь Excel умеет это делать с такими числами, а потом сюда зашлю. |
|
Сообщ.
#24
,
|
|
|
|
[offtopic]
ты же видишь смайлик, стоит... ![]() Очередная игра слов... для многих прокатывает ;D [/offtopic] P.S. Ладно, это все отвлечение от темы... Поясни конкретно, что надо и что за задача такая.... P.S.S. кстати double - 8 байт |
|
Сообщ.
#25
,
|
|
|
|
Ну помоему есть 1 простой вариант, но с некоторыми ограничениями. Если искомая функция полином, то можно:
по графику определяем корни полинома (a1,a2,a3....) при которых он обращается в 0. Ну или максимально близок к 0. Затем любой полином можно представить в виде:y=K*(x-a1)(x-a2)(x-a3)...; где К-эквивалент масштаба. Рекомендую взять сначала K=1. Затем найти y(истинное)по графику в т. х=0. Затем по полученному полиному подстановкой x=0 получить y(масштабированное). Отсюда K=y(истинное)/y(масштабированное). Вроде все, полином по графику получен. |
|
Сообщ.
#26
,
|
|
|
|
Вообще говоря году в девяностом (еще в ДОС), мне попадалась программа, которая по заданному набору точек выдавала несколько возможных эмпирических зависимостей и рисовала их графики. Для каждой выданной функции выдавалась величина "промаха". Правда это была демка, ограничивающая число точек десятью что-ли. Впрочем отдельная программа нам тогда была не нужна, так что даже ссылок не сохранилось. А общей идеей кто-то даже воспользовался.
Среди предлагаемых зависимостей были полиномиальные, рациональные, степенные, экспоненциальные, логарифмические, тригонометрические, еще какие-то функции и разные их комбинации. Подозреваю, что варианты генерировались по каким-то правилам самой программой. А полиномы высоких степеней обычно быстро начинают расходиться. Небольшого изменения координат одной из точек часто бывает достаточно, чтобы где-нибудь на границе интерполированное значение поменялось на порядки. |
|
Сообщ.
#27
,
|
|
|
|
http://files.mail.ru/DC70V1
Прикреплённый файл approx.rar (78.62 Кбайт, скачиваний: 195)
|
|
Сообщ.
#28
,
|
|
|
|
Это что, приступ злобной некрофилии?
|
|
Сообщ.
#29
,
|
|
|
|
DAnton, есть такая прога уже, маткад =) пишешь свою прогу, в которой определяются точки функции,
сохраняешь в файл, загружаешь файл маткадом, вставляешь формулы и он тебе всё сделает. можно прочитать хелп. недавно сталкивался с похожей задачей. необходимо было скан лекала преобразовать в функцию, так и решал задачу. |
|
Сообщ.
#30
,
|
|
|
|
Цитата esperanto @ Цитата Антоха, 11.05.03, 20:35:13 конечно нетЕсть график какой-то неизвестной функции. Могу ли я судя по x и y определить что это за функция? Нельзя так говорить. Нет ничего невозможного. Например, в школе учат, что делить на ноль нельзя, а оказывается в инженерии можно, просто получается исключение. Также на ноль можно делить в реале. Возьмем за 0 - точку центра нашего сознания. Всем уже известно и логически понятно, что если разделить любое расстояние на бесконечно малое, то получим бесконечно большое число, т.е. точку на границе вселенной. А если поделить на 0, то получим медитацию. Это не юмор, это правда. А тем более автор сам понимает, что очень сложно. Для начала нужно определить базис функций, из которых будет строится искомая функция. Затем нужно доказать, что этот базис полный и из него можно построить любую из функций, заданных условиями задачи. Например, сложение и умножение это тоже функции, а не только sin, exp, log, lg, ln, pow, sec, sh, th, cth, sinc и т.д. Дальше только через минимизацию методом перебора искать но структура не однородная, поэтому немного сложнее. Единственное, что известно о структуре, так это то, что это дерево (иерархия), листьями которого является аргументы x,y,z и т.д. |
|
Сообщ.
#31
,
|
|
|
|
Цитата esperanto @ конечно нет Цитата uelkfr @ Нельзя так говорить Можно, т.к. из дискретной функции однозначно нельзя восстановить непрерывную. Я так понимаю, 7 лет назад автора интересовал качественный ответ, а не комбинация базисных функций. Иначе можно было бы построить сплайн, о чём было сказано в 4м сообщении. Совершенно не понятно зачем вы подняли эту тему с семилетней глубины. |