Здравствуйте! Помогите пожалуйста с поиском аналитической формулы.
Постановка:
Необходимо получить формулу
Для набора данных в объеме
...
Особенности данных:
- может принимать от 1 до 20 разных значений с определенным шагом.
Пусть
- количество различных значений
для
-той независимой.
например
или
и т.д. (значения могут быть от 1.e-9 до 1.e+9).
Тогда данные составляются путем комбинации всех вариантов
, то есть получается
(n - объем данных, m - количество независимых параметров).
Для каждой
-той комбинации вычисляется
(сложные вычисления).
Так и получается набор данных,
...
который может составлять гигабайты.
Способ решения:
Способ состоит в использовании "Polynomial curve fitting", а точнее функция p = polyfit(x,y,nFits) в MATLAB, где
-вектор, nFits степеней.
В итоге если nFits = 1, то функция находит коэффициенты
такие, что
(при вычислении используется nFits = 4).
Метод состоит в том, чтобы "сжимать" данные по каждому из параметров.
Например:
Пусть исходные данные состоят из 4х независимых
...
Тогда находим все различные комбинации без последнего
:
всего таких комбинаций будет
,
и каждой комбинации
будет соответствовать
разных значений
и
из исходного набора.
Теперь для этих (
и
) данных найдем коэффициенты с помощью polyfit().
В результате построим новый набор данных, который будет в
раз меньше исходного.
...
теперь в качестве y, уже имеет два значения a,b, для каждого ищется новые коэффициенты, далее происходит замена аналогичным образом.
И так "сжатие" выполняется на
.
В конце концов, остается только
коэффициентов, из которых составляется формула по вычисленным коэффициентам a,b,c,d,...,n,o,p:
Эксперименты:
Вычисления проводились для структур из 4-11 параметров по 100-200 мб данных, на некоторых структурах данные восстановленные по формуле почти полностью совпадают с исходными (могу вставить рисунки). Но есть проблемы.
Проблема:
Главная проблема заключается в том, что формулы получаются слишком длинные,
количество коэффициентов вычисляется по формуле
s - количество параметров, p - полиномы, то есть для 4 полиномов и 6 параметров будет 15625 коэффициентов, если составить формулу, то она будет занимать
то есть ~ 122 килобайта.
Для 11 параметров и 4 полинома (макс тест) ~ 372 Mb.
Также на некоторых структурах появляются сильное расхождение с реальными данными, что неприемлемо.
Увеличение полиномов повышает точность, но количество коэффициентов становится еще больше.
Подскажите, пожалуйста, что еще можно применить?
Спасибо.