На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> ОЧЕНЬ СЛОЖНО! ОЧЕНЬ ИНТЕРЕСНО!
    Есть график какой-то неизвестной функции. Могу ли я судя по x и y определить что это за функция?



      Цитата Антоха, 11.05.03, 20:35:13
      Есть график какой-то неизвестной функции. Могу ли я судя по x и y определить что это за функция?


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

          читай инфу по методам апроксимации, интерполяции, методу наименьших квадратов и сплайн-апроксимации.

          ну, или если тебе разово надо, а не программу реализовать, которая этим заниматься будет, то пробуй использовать мозги:)
            Цитата Demo_S, 11.05.03, 21:00:41
            читай инфу по методам апроксимации, интерполяции, методу наименьших квадратов и сплайн-апроксимации.


            Надо будет почитать...

            Цитата Demo_S, 11.05.03, 21:00:41
            ну, или если тебе разово надо, а не программу реализовать, которая этим заниматься будет, то пробуй использовать мозги.


            Это только если график несложный. А если прогу сварганить, которая будет по каждому следующему x составлять функцию? Или это из фантастики?

              поясни, что значит по "каждому следующему х составлять функцию"? может и не фантастика:)
                x = 0 y = 0 - наверное  y = x;
                x = 1 y = 2 - один из варианов - y = x + 1; y = 2x; y = x0 + 1; y = x0 + x;  - т.е. много вариантов. С помощью проги эти варианты отбирать, подставлять в последующие x, снова отбирать нужные функции. И так пока не останется одна функция или пока мы не убедимся, что такая функция не существует.

                Фантастика или нет?

                  Цитата Антоха, 11.05.03, 21:32:13
                  И так пока не останется одна функция или пока мы не убедимся, что такая функция не существует.
                  Фантастика или нет?

                  НЕ фантастика, но с одной оговоркой - с самого начала надо определить класс функций, в которых ведется поиск. Скажем, полиномы минимально возможной степени, проходящие через заданные точки... или аналогичные им тригонометрическое ряды...

                  Потому что среди любых функций можно получить скажем такой вариант:
                  первый шаг: exp(-1000000*|x|)
                  второй шаг:  exp(-1000000*|x|) + 2*exp(-1000000*|x-1|)

                  и так для каждого нового значения добавлять f(xi)*exp(-100000*|xi|).

                  удовлетворяет? Практически да, т.к. уже exp(-1000) на компе фиг отличишь от ноля. И таких функций можно напридумывать бесконечно много для любого конечного числа точек.
                    Цитата Антоха, 11.05.03, 21:07:46

                    Это только если график несложный. А если прогу сварганить, которая будет по каждому следующему x составлять функцию? Или это из фантастики?


                    Для этого надо будет просто проводить аппроксимацию функции для каждого нового х и тем самым будет происходить постепенное "уточнение"  оригинальной функции...
                      А что касается, приближения к оригиналу численными методами, то мы можем получить достаточно точный вид нашей оригинальной функции, но ее представление может оказаться "кусочно-интервальным"...
                        А где можно почитать про апроксимацию, интерполяцию, метод наименьших квадратов и сплайн-апроксимацию?




                        Сообщение отредактировано: DAnton -
                          Chtobi tochno opredelit' funkciju, edinstvennij shans - heuristic algorithms
                            2Антоха:
                            http://www.srcc.msu.su/ - Вычислительный центр
                              Цитата xJohn, 12.05.03, 13:56:21
                              Chtobi tochno opredelit' funkciju, edinstvennij shans - heuristic algorithms

                              Не понял. Что надо сделать с алгоритмом?


                                  ... эврестические алгоритмы... (xJohn)
                                 Вообще все зависит от того в чем состоит задача. Если задача прикладная, то проще провести аппроксимацию полиномом. Если же нужно найти функцию по графику, то задача решается только приближенно, (за исключением, если график является существующей стандартной функцией, а не природным процессом или экспериментальными данными - тогда возможно точное решение, если в алгоритм будет заложена данная функция). Один из основных вариантов решения - провести аппроксимацию по методу наименьших квадратов для всевозможного набора стандартных функций. Та ф-я, для которой сумма квадратичных отклонений будет наименьшей является искомой из набора функций...
                                  Более менее точно приблизить можно почти любую функцию, но при рассмотрении и разбиении ее на интервалы.... ;D
                                    Цитата GrAnd, 13.05.03, 09:21:26
                                    Более менее точно приблизить можно почти любую функцию, но при рассмотрении и разбиении ее на интервалы.... ;D


                                    а как же функция дирихле её вообще ни как не приблизишь
                                    её даже не нарисуешь


                                    и вообще приближать можно если знаешь точный вид того что приближашь

                                    а полиномами плохо так как возникает осциляция
                                      Цитата GrAnd, 13.05.03, 09:21:26
                                      Более менее точно приблизить можно почти любую функцию, но при рассмотрении и разбиении ее на интервалы.... ;D

                                      А если функция бесконечно возрастающая (убывающая)?

                                      Цитата esperanto, 13.05.03, 12:59:01
                                      а как же функция дирихле её вообще ни как не приблизишь  
                                      её даже не нарисуешь

                                      Что это за функция такая??

                                      P.S.> Есть ли программы, которе строят графики (x и y могут быть больше, чем макс. значение у DWORD, int64)??

                                      Сообщение отредактировано: DAnton -
                                        Цитата esperanto, 13.05.03, 12:59:01


                                        а как же функция дирихле её вообще ни как не приблизишь
                                        её даже не нарисуешь
                                        и вообще приближать можно если знаешь точный вид того что приближашь

                                        Если я не ошибаюсь, то изначально задача ставилась - по графику функции определить ее вид ;)
                                        Так что, мы имеем поточечную зависимость F(x)...

                                          Цитата Антоха, 13.05.03, 13:11:53

                                          Что это за функция такая??

                                                     |0-x иррациональное
                                          Dirih(X)=|
                                                     |1-x рациональное
                                          Или LimnLimm[cos(2pi*n!*x)]m
                                          Оба предела -> к бесконечности
                                            Цитата Антоха, 13.05.03, 13:11:53

                                            P.S.> Есть ли программы, которе строят графики (x и y могут быть больше, чем макс. значение у DWORD, int64)??

                                            Возьми double или real, и массштабируй  ;D
                                              Цитата Антоха, 13.05.03, 13:11:53

                                              А если функция бесконечно возрастающая (убывающая)?

                                              А что, составляет проблему получить внешний вид функций вида ex или 1/x по их графикам.... ::)
                                                Цитата GrAnd, 13.05.03, 13:38:17

                                                Возьми double или real, и массштабируй  ;D

                                                Хм. DWORD есть double и ограничен 4,294,967,296 (максимальное значение). А мне надо
                                                3,4028236692093846346337460743177e+38  :) Т.е. DWORD 4 байта, а мне надо в 4 раза больше, т.е. 16 байт. Я в выходные (а может и раньше) нарисую график (надеюсь Excel умеет это делать с такими числами, а потом сюда зашлю.
                                                Сообщение отредактировано: DAnton -
                                                  [offtopic]
                                                  ты же видишь смайлик, стоит... ;)
                                                  Очередная игра слов... для многих прокатывает  ;D
                                                  [/offtopic]

                                                  P.S.
                                                  Ладно, это все отвлечение от темы...
                                                  Поясни конкретно, что надо и что за задача такая....
                                                  P.S.S.
                                                  кстати double - 8 байт
                                                  Сообщение отредактировано: GrAnd -
                                                    Ну помоему есть 1 простой вариант, но с некоторыми ограничениями. Если искомая функция полином, то можно:
                                                    по графику определяем корни полинома (a1,a2,a3....) при которых он обращается в 0. Ну или максимально близок к 0. Затем любой полином можно представить в виде:y=K*(x-a1)(x-a2)(x-a3)...; где К-эквивалент масштаба. Рекомендую взять сначала K=1. Затем найти y(истинное)по графику в т. х=0. Затем по полученному полиному подстановкой x=0 получить y(масштабированное). Отсюда K=y(истинное)/y(масштабированное).

                                                    Вроде все, полином по графику получен.
                                                      Вообще говоря году в девяностом (еще в ДОС), мне попадалась программа, которая по заданному набору точек выдавала несколько возможных эмпирических зависимостей и рисовала их графики. Для каждой выданной функции выдавалась величина "промаха". Правда это была демка, ограничивающая число точек десятью что-ли. Впрочем отдельная программа нам тогда была не нужна, так что даже ссылок не сохранилось. А общей идеей кто-то даже воспользовался.
                                                      Среди предлагаемых зависимостей были полиномиальные, рациональные, степенные, экспоненциальные, логарифмические, тригонометрические, еще какие-то функции и разные их комбинации. Подозреваю, что варианты генерировались по каким-то правилам самой программой.

                                                      А полиномы высоких степеней обычно быстро начинают расходиться. Небольшого изменения координат одной из точек часто бывает достаточно, чтобы где-нибудь на границе интерполированное значение поменялось на порядки.
                                                        http://files.mail.ru/DC70V1
                                                        Сообщение отредактировано: repz -

                                                        Прикреплённый файлПрикреплённый файлapprox.rar (78.62 Кбайт, скачиваний: 195)
                                                          Это что, приступ злобной некрофилии?
                                                            DAnton, есть такая прога уже, маткад =) пишешь свою прогу, в которой определяются точки функции,
                                                            сохраняешь в файл, загружаешь файл маткадом, вставляешь формулы и он тебе всё сделает.
                                                            можно прочитать хелп.

                                                            недавно сталкивался с похожей задачей. необходимо было скан лекала преобразовать в функцию, так и решал задачу.
                                                              Цитата 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 и т.д.
                                                                Цитата esperanto @
                                                                конечно нет

                                                                Цитата uelkfr @
                                                                Нельзя так говорить

                                                                Можно, т.к. из дискретной функции однозначно нельзя восстановить непрерывную.
                                                                Я так понимаю, 7 лет назад автора интересовал качественный ответ, а не комбинация базисных функций. Иначе можно было бы построить сплайн, о чём было сказано в 4м сообщении. Совершенно не понятно зачем вы подняли эту тему с семилетней глубины.
                                                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                0 пользователей:


                                                                Рейтинг@Mail.ru
                                                                [ Script execution time: 0,0612 ]   [ 15 queries used ]   [ Generated: 28.03.26, 11:30 GMT ]