Есть ли теоретическая возможность реализовать сабж? Типа на вход массив точек (2d) а на выход — функция, график которой проходит через все точки и интервал на котором она это делает.
Здравствуйте, Renny, Вы писали:
R>Есть ли теоретическая возможность реализовать сабж? Типа на вход массив точек (2d) а на выход — функция, график которой проходит через все точки и интервал на котором она это делает.
Конечно, через любые N точек можно провести график полинома (n-1)-й степени.
Например, интерполяцией по Лагранжу: P = \sum_{i=0}^n \prod_{j=0}^n (x-x_i)/(x_i-x_j)
Или можно методом наименьших квадратов.
Вообще, проще взять любой учебник по численным методам. Там всего много на эту тему.
Здравствуйте, Renny, Вы писали:
R>Есть ли теоретическая возможность реализовать сабж? Типа на вход массив точек (2d) а на выход — функция, график которой проходит через все точки и интервал на котором она это делает.
Можно, вопрос только зачем это надо. Если найти приближённые значения — одно (интерполяция), если угадать приближённую зависимость — это другое (аппроксимация, но тогда функция будет проходить рядом с точками)
Здравствуйте, vvotan, Вы писали:
V>Здравствуйте, Renny, Вы писали:
R>>Есть ли теоретическая возможность реализовать сабж? Типа на вход массив точек (2d) а на выход — функция, график которой проходит через все точки и интервал на котором она это делает.
V>Конечно, через любые N точек можно провести график полинома (n-1)-й степени.
V>Например, интерполяцией по Лагранжу: P = \sum_{i=0}^n \prod_{j=0}^n (x-x_i)/(x_i-x_j)
V>Или можно методом наименьших квадратов.
V>Вообще, проще взять любой учебник по численным методам. Там всего много на эту тему
Может тут кто-нибудь без особой заумности (типа мануалов по матану) по шагам и на конкретном примере объяснить: как реализовывается сабж? У меня есть пара миллионов значений функции и нужно узнать что это за функция....
Здравствуйте, Renny, Вы писали:
R>>>Есть ли теоретическая возможность реализовать сабж? Типа на вход массив точек (2d) а на выход — функция, график которой проходит через все точки и интервал на котором она это делает. V>>Конечно, через любые N точек можно провести график полинома (n-1)-й степени. V>>Например, интерполяцией по Лагранжу: P = \sum_{i=0}^n \prod_{j=0}^n (x-x_i)/(x_i-x_j) V>>Или можно методом наименьших квадратов. V>>Вообще, проще взять любой учебник по численным методам. Там всего много на эту тему
R>Может тут кто-нибудь без особой заумности (типа мануалов по матану) по шагам и на конкретном примере объяснить: как реализовывается сабж?
Я вообще-то конкретную формулу написал, в которую нужно только подставить значения.
R>У меня есть пара миллионов значений функции и нужно узнать что это за функция....
А ты точно уверен, что тебе нужно, чтобы функция проходила через все точки? Тогда наверное легче спросить у того, кто тебе эти точки дал, потому что хотя формально и возможно получить полином, но толку от полинома парамилионной степени будет немного. И вообще, надо плясать от конкретной задачи. Ты спрашивал теоретическую возможность. Так вот — их хоть отбавляй.
Здравствуйте, Renny, Вы писали:
R>Здравствуйте, vvotan, Вы писали:
V>>Здравствуйте, Renny, Вы писали:
R>>>Есть ли теоретическая возможность реализовать сабж? Типа на вход массив точек (2d) а на выход — функция, график которой проходит через все точки и интервал на котором она это делает.
На вход массив точек, наверное, всё-таки линейный (с двумя строчками: x и y). Или тебе нужна поверхность?
R>Может тут кто-нибудь без особой заумности (типа мануалов по матану) по шагам и на конкретном примере объяснить: как реализовывается сабж? У меня есть пара миллионов значений функции и нужно узнать что это за функция....
Ты скажи, что тебе надо, тебе объяснят может быть. А то когда непонятно что тебе нужно, нечего и объяснять подробно.
Например. У тебя функция, похожая на экспоненту. y=a*e^(b*x)
ln(y/a) = ln(e^(b*x))
ln(y/a) =b*x
ln(y/a) = ln(y) — ln(a); Y = ln(y); A = ln(A)
Получаем
Y = A + b*x
Находим таблицу Y из таблицы y
Применяем Метод Наименьших Квадратов (МНК) для нахождения A и b. Если не знаешь, что такое МНК — скажи, объясним.
Из A находим a,
получаем функцию y=a*e^(b*x) с известными коэффициентами.
Существуют аналогичные формулы для других типов функций. Перебором типов функций можно найти функцию, которая лучше всего удовлетворяет заданной таблице.
Однако при этом, если найденная функция близка, но не в точности совпадает с искомой, найденная функция будет проходить р я д о м с заданными точками, а не по ним.
R>Есть ли теоретическая возможность реализовать сабж?
Конечно есть.
Это называется "задача минимизации функции".
R>Типа на вход массив точек (2d)
пар аргумент — значение функции
R>а на выход — функция, график которой проходит через все точки и интервал на котором она это делает.
А хоть какие-то знания о функции наличествуют? Она линейная/нелинейная?
Произвольным полиномом можно приближенно задать какую угодно функцию. Важно только понимать, какая степень приближения необходима.
На практике лучше всего у меня работал алгоритм Levenberg-Marquardt
(Левенберга-Маркварта, он же "марквардта", "маркара", итд..)
— он по стабу функции и парам аргумент-значение подбирает коэффициенты функции.
R>>Есть ли теоретическая возможность реализовать сабж?
Г>Конечно есть. Г>Это называется "задача минимизации функции".
Эммм... боюсь что задача минимизации функции на выходе дала бы лишь примерный минимум (максимум) серди всего полумилионного множества значений функции, которые у мсье и так имеются..
Здравствуйте, anvaka, Вы писали:
R>>>Есть ли теоретическая возможность реализовать сабж?
Г>>Конечно есть. Г>>Это называется "задача минимизации функции".
A>Эммм... боюсь что задача минимизации функции на выходе дала бы лишь примерный минимум (максимум) серди всего полумилионного множества значений функции, которые у мсье и так имеются..
Это смотря что минимизировать. Если минимизировать СКО, то как раз получим то, что надо.