5.17 Nonlinear fitting

Эти функции подбирают параметры функции для наилучшей аппроксимации данных, т.е. минимизируют сумму \sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2. При этом аппроксимирующая функция ‘f’ может зависеть от одного аргумента ‘x’ (1D случай), от двух аргументов ‘x,y’ (2D случай) или от трех аргументов ‘x,y,z’ (3D случай). Функция ‘f’ также может зависеть от параметров. Список параметров задается строкой var (например, ‘abcd’). Если строка var содержит цифры 1,2,3 или 4, то используется робастная аппроксимация с заменой нормы |df|^2 на следующие: ‘1’ - sqrt(1+|df|^2)-1, ‘2’ - |df|^4, ‘3’ - Andrew sine (1-cos(df)), ‘4’ - Tukey biweight (|df|^2*(1-C*|df|^2)). Обычно пользователь должен предоставить начальные значения параметров в переменной ini. Однако, при его отсутствии используются нулевые значения. Параметр print=true включает вывод найденной формулы в Message (см. Обработка ошибок).

Функции Fit() и FitS() не рисуют полученные массивы. Они заполняют массив fit по формуле ‘f’ с найденными коэффициентами и возвращают \chi^2 ошибку аппроксимации. При этом, координаты ‘x,y,z’ равно распределены в диапазоне осей координат. Число точек в fit определяется опцией value (по умолчанию mglFitPnts=100). Функции используют библиотеку GSL. См. раздел Nonlinear fitting hints, для примеров кода и графика.

Команда MGL: fits res adat sdat 'func' 'var' [ini=0]
Команда MGL: fits res xdat adat sdat 'func' 'var' [ini=0]
Команда MGL: fits res xdat ydat adat sdat 'func' 'var' [ini=0]
Команда MGL: fits res xdat ydat zdat adat sdat 'func' 'var' [ini=0]
Метод класса mglGraph: mglData FitS (const mglDataA &a, const mglDataA &s, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData FitS (const mglDataA &a, const mglDataA &s, const char *func, const char *var, mglData &ini, const char *opt="")
Метод класса mglGraph: mglData FitS (const mglDataA &x, const mglDataA &a, const mglDataA &s, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData FitS (const mglDataA &x, const mglDataA &a, const mglDataA &s, const char *func, const char *var, mglData &ini, const char *opt="")
Метод класса mglGraph: mglData FitS (const mglDataA &x, const mglDataA &y, const mglDataA &a, const mglDataA &s, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData FitS (const mglDataA &x, const mglDataA &y, const mglDataA &a, const mglDataA &s, const char *func, const char *var, mglData &ini, const char *opt="")
Метод класса mglGraph: mglData FitS (const mglDataA &x, const mglDataA &y, const mglDataA &z, const mglDataA &a, const mglDataA &s, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData FitS (const mglDataA &x, const mglDataA &y, const mglDataA &z, const mglDataA &a, const mglDataA &s, const char *func, const char *var, mglData &ini, const char *opt="")
Функция С: HMDT mgl_fit_ys (HMGL gr, HCDT a, HCDT s, const char *func, const char *var, HMDT ini, const char *opt)
Функция С: HMDT mgl_fit_xys (HMGL gr, HCDT x, HCDT a, HCDT s, const char *func, const char *var, HMDT ini, const char *opt)
Функция С: HMDT mgl_fit_xyzs (HMGL gr, HCDT x, HCDT y, HCDT a, HCDT s, const char *func, const char *var, HMDT ini, const char *opt)
Функция С: HMDT mgl_fit_xyzas (HMGL gr, HCDT x, HCDT y, HCDT z, HCDT a, HCDT s, const char *func, const char *var, HMDT ini, const char *opt)

"Подгоняют" формулу вдоль x-, y- и z-направлений для 3d массива заданного параметрически a[i,j,k](x[i,j,k], y[i,j,k], z[i,j,k]) с весовым множителем s[i,j,k]. Если строка var содержит цифры, то меняется норма ошибки, используемая при аппроксимации: ’1’ для нормы sqrt(1+|a|^2), ’2’ для нормы |a|^4, ’3’ для нормы 1-cos(a), ’4’ для нормы |a|^2*(2-|a|^2/6^2), норма по умолчанию |a|^2.

Команда MGL: fit res adat 'func' 'var' [ini=0]
Команда MGL: fit res xdat adat 'func' 'var' [ini=0]
Команда MGL: fit res xdat ydat adat 'func' 'var' [ini=0]
Команда MGL: fit res xdat ydat zdat adat 'func' 'var' [ini=0]
Метод класса mglGraph: mglData Fit (const mglDataA &a, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData Fit (const mglDataA &a, const char *func, const char *var, mglData &ini, const char *opt="")
Метод класса mglGraph: mglData Fit (const mglDataA &x, const mglDataA &a, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData Fit (const mglDataA &x, const mglDataA &a, const char *func, const char *var, mglData &ini, const char *opt="")
Метод класса mglGraph: mglData Fit (const mglDataA &x, const mglDataA &y, const mglDataA &a, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData Fit (const mglDataA &x, const mglDataA &y, const mglDataA &a, const char *func, const char *var, mglData &ini, const char *opt="")
Метод класса mglGraph: mglData Fit (const mglDataA &x, const mglDataA &y, const mglDataA &z, const mglDataA &a, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData Fit (const mglDataA &x, const mglDataA &y, const mglDataA &z, const mglDataA &a, const char *func, const char *var, mglData &ini, const char *opt="")
Функция С: HMDT mgl_fit_y (HMGL gr, HCDT a, const char *func, const char *var, HMDT ini, const char *opt)
Функция С: HMDT mgl_fit_xy (HMGL gr, HCDT x, HCDT a, const char *func, const char *var, HMDT ini, const char *opt)
Функция С: HMDT mgl_fit_xyz (HMGL gr, HCDT x, HCDT y, HCDT a, const char *func, const char *var, HMDT ini, const char *opt)
Функция С: HMDT mgl_fit_xyza (HMGL gr, HCDT x, HCDT y, HCDT z, HCDT a, const char *func, const char *var, HMDT ini, const char *opt)

"Подгоняют" формулу вдоль x-, y- и z-направлений для 3d массива заданного параметрически a[i,j,k](x[i,j,k], y[i,j,k], z[i,j,k]) с весовым множителем 1. Если строка var содержит цифры, то меняется норма ошибки, используемая при аппроксимации: ’1’ для нормы sqrt(1+|a|^2), ’2’ для нормы |a|^4, ’3’ для нормы 1-cos(a), ’4’ для нормы |a|^2*(2-|a|^2/6^2), норма по умолчанию |a|^2.

Метод класса mglGraph: mglData Fit2 (const mglDataA &a, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData Fit2 (mglData &fit, const mglDataA &a, const char *func, const char *var, mglData &ini, const char *opt="")
Метод класса mglGraph: mglData Fit3 (mglData &fit, const mglDataA &a, const char *func, const char *var, const char *opt="")
Метод класса mglGraph: mglData Fit3 (mglData &fit, const mglDataA &a, const char *func, const char *var, mglData &ini, const char *opt="")
Функция С: HMDT mgl_fit_2 (HMGL gr, HCDT a, const char *func, const char *var, HMDT ini, const char *opt)
Функция С: HMDT mgl_fit_3 (HMGL gr, HCDT a, const char *func, const char *var, HMDT ini, const char *opt)

"Подгоняют" формулу вдоль всех направлений для 2d или 3d массива a с s=1 и x, y, z равно распределёнными в диапазоне осей координат.

Команда MGL: putsfit x y ['pre'='' 'fnt'='' size=-1]
Метод класса mglGraph: void PutsFit (mglPoint p, const char *prefix="", const char *font="", mreal size=-1)
Функция С: void mgl_puts_fit (HMGL gr, mreal x, mreal y, mreal z, const char *prefix, const char *font, mreal size)

Печатает последнюю подобранную формулу с найденными коэффициентами в точке p0. Строка prefix будет напечатана перед формулой. Все другие параметры такие же как в Вывод текста.

Метод класса mglGraph: const char *GetFit ()
Функция С: const char * mgl_get_fit (HMGL gr)
Fortran процедура: mgl_get_fit (long gr, char *out, int len)

Возвращает последнюю подобранную формулу с найденными коэффициентами.

Метод класса mglGraph: mreal GetFitChi ()
Функция С: mreal mgl_get_fit_chi ()

Возвращает величину \chi для последней подобранной формулы.

Метод класса mglGraph: mreal GetFitCovar ()
Функция С: mreal mgl_get_fit_covar ()

Возвращает ковариационную матрицу для последней подобранной формулы.