Типовые задачи >  Аппроксимация функций >  Примеры


Примеры аппроксимации функций

1. Рассмотренный в общем виде метод наименьших квадратов для оценки коэффициентов регрессионного уравнения, аппроксимирующего таблично заданную функцию, может быть реализован средствами программирования системы Mathcad. В приводимых далее примерах по заданным вектору значениям функции отклика y и матрице значений факторов z вычисляются последовательно

Приведем два варианта решения задачи аппроксимации:

Функция MNK, использованная во втором примере, получает через список параметров m – объем выборки; k – число факторов; z – матрицу значений факторов; y – вектор значений функции отклика. Результатом выполнения функции будет вектор коэффициентов регрессии – (k+1) элемент, так как исходное регрессионное уравнение предполагает наличие свободного члена.

Отметим, что рассмотренный алгоритм позволяет оценить коэффициенты уравнений при нескольких независимых переменных, т.е. является алгоритмом множественной линейной регрессии. Основная задача пользователя – правильно определить факторы и вычислить их значения для матрицы факторов.

Mathcad имеет ряд встроенных функций, реализующих алгоритмы аппроксимации для различных видов уравнений. Как правило, предполагается наличие одной независимой переменной.

Все функции, упоминаемые далее в этом разделе, описаны в приложении "Встроенные функции и ключевые слова" настоящего пособия.

2. Линейная регрессия общего вида аппроксимирует заданную совокупность точек функцией вида

F(x, K1, K2, ..., Kn) = K1F1(x)+K2F2(x) + .. .+KnFn(x)

Таким образом, функция регрессии является линейной комбинацией функций F1(x), F2(x), ..., Fn(x), причем сами эти функции (факторы) могут быть нелинейными, что расширяет возможности такой аппроксимации и распространяет ее на нелинейные функции.

Для реализации линейной регрессии общего вида используется функция

linfit(VX, VY ,F)

Она возвращает вектор коэффициентов линейной регрессии общего вида К, при котором среднеквадратичная погрешность приближения "облака" исходных точек, координаты которых хранятся в векторах VX и VY, оказывается минимальной. Вектор F должен содержать функции F1(x), F2(x), ..., Fn(x), записанные в символьном виде.

Пример 3: HTML-документ; рабочий лист Mathcad

3. В Mathcad введена и функция для обеспечения полиномиальной регрессии при произвольной степени полинома

regress(VX, VY, n)

Она возвращает вектор VS, запрашиваемый функцией interp(VS, VX, VY.x), содержащий коэффициенты многочлена n-й степени, который наилучшим образом приближает «облако» точек с координатами, хранящимися в векторах VX и VY. Для вычисления коэффициентов полинома регрессии используется функция submatrix (см. пример).

На практике не рекомендуется делать степень аппроксимирующего полинома выше 4–6, поскольку погрешности реализации регрессии сильно возрастают. Функция regress создает единственный приближающий полином, коэффициенты которого вычисляются по всей совокупности заданных точек.

Пример 4: HTML-документ; рабочий лист Mathcad

4. Многомерную регрессию также можно реализовать в Mathcad. Самый типичный случай ее использования – приближение поверхностей в трехмерном пространстве. Их можно описать, задав массив значений высот z, соответствующих двухмерному массиву Мху координат точек (х,у) на горизонтальной плоскости.

Новых функций для этого не задано. Используются уже описанные ранее функции, но в несколько иной форме, например

5. Под нелинейной регрессией общего вида подразумевается нахождение вектора К коэффициентов произвольной функции F(x, К1, К2, ..., Кn), при котором обеспечивается минимальная среднеквадратичная погрешность приближения "облака" исходных точек.

Для проведения нелинейной регрессии общего вида используется функция

genfit(VX, VY, VS, F)

Эта функция возвращает вектор К параметров функции F, дающий минимальную среднеквадратичную погрешность приближения функцией F(x, К1, К2, ..., Кn) исходных данных.

F должен быть вектором с символьными элементами, причем они должны содержать аналитические выражения для исходной функции и ее производных по всем параметрам. Вектор VS должен содержать начальные значения элементов вектора К, необходимые для решения системы нелинейных уравнений регрессии итерационным методом.

В примере далее приведен образец реализации нелинейной регрессии общего вида для уравнения ln p = A – B / (C + t).

При решении этой задачи возникают две проблемы. Во-первых, надо вычислить значения производных по переменным A, B, C. В документе это сделано с помощью символьных операций

Вторая проблема связана с необходимостью применения функции genfit в ее стандартном виде. Поэтому пришлось заменить искомые коэффициенты модели на элементы массива k

Пример 5: HTML-документ; рабочий лист Mathcad

6. Перечень некоторых дополнительных функций для оценки коэффициентов аппроксимирующих уравнений разного вида (см. приложение)


Типовые задачи >  Аппроксимация функций >  Примеры