Перейти к содержимому

Как сделать апроксимацию в маткаде

  • автор:

Аппроксимация функций в MathCAD

Из курса математики известны 3 способа задания функциональных зависимостей:

Табличный способ обычно возникает в результате эксперимента.

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

Аппроксимация заключается в том, что, используя имеющуюся информацию по функции f(x), можно рассмотреть другую функцию — ц(x), близкую в некотором смысле к f(x) и позволяющую выполнить над ней соответствующие операции и получить оценку погрешности такой замены.

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

Рисунок 2. Пример аппроксимирующей функции.

Задача приближенного вычисления значений функций в промежутках между узловыми точками (интерполяция) и за их пределами (экстраполяция) решается аппроксимацией исходной зависимости, т. е. её подменой какой-либо достаточно простой функцией. Система МаthCAD предоставляет возможность аппроксимации двумя важными типами функций: кусочно-линейной и сплайновой.

Функции для аппроксимации:

  • *regress (Mxy, Vz, n) :возвращает вектор, запрашиваемый функцией interp (VS. Mxy, Vz, V) для вычисления многочлена n-й степени, который наилучшим образом приближает точки множества Мху и Vz, Мху — матрица размера 2m, содержащая координаты х и у. Vz — m-мерный вектор, содержащий z-координаты, соответствующие m точкам, указанным в Мху.
  • *Interp(VS, Mxy, Vz, V) возвращает значение z по заданным векторам VS (создается функцией regress) и Мху, Vz и V (вектор координат х и у заданной точки, для которой находится z).
  • *genfit(VX, VY, VS, F) Эта функция возвращает вектор К параметров функции F, дающий минимальную среднеквадратичную погрешность приближения функцией F(x, К1, К2, …, Кn) исходных данных.

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

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

Интерполяция (частный случай аппроксимации)

Если для табличной функции y=f(x), имеющей значение f(x0) требуется построить аппроксимирующую функцию (x) совпадающую в узлах xi c заданной, то такой способ называется интерполяцией.

При кусочно-линейной интерполяции вычисления дополнительных точек выполняются по линейной зависимости. Графически это означает просто соединение узловых точек отрезками прямых, для чего используется следующая функция:

*Linterp (VХ, VУ, х) — для заданных векторов VХ и VУ узловых точек и заданного аргумента х. Linterp возвращает значение функции при ее линейной интерполяции. При экстраполяции используются отрезки прямых, проведенных через две крайние точки.

При линейной интерполяции уже первая производная аппроксимирующей функции терпит разрывы в узловых точках. В тех случаях, когда есть основания полагать, что не только аппроксимирующая функция, но и ряд ее производных непрерывны, существенно лучшие результаты дает сплайн-аппроксимация. При ней исходная функция заменяется отрезками кубических полиномов, проходящих через три смежные узловые точки. Коэффициенты полиномов рассчитываются так, чтобы непрерывными были первая и вторая производные. Линия, которую описывает сплайн-функция, напоминает по форме гибкую линейку, закрепленную в узловых точках (откуда и название аппроксимации: splain- гибкая линейка).

Для осуществления сплайновой аппроксимации MathCAD предлагает четыре встроенные функции. Три из них служат для получения векторов вторых производных сплайн-функций при различном виде интерполяции:

  • *Cspine(VX, VY) возвращает вектор VS вторых производных при приближении в опорных точках к кубическому полиному;
  • *pspline(VX, VY)- возвращает вектор VS вторых производных при приближении к опорным точкам к параболической кривой;
  • *Ispline(VX, VY)- возвращает вектор VS вторых производных при приближении к опорным точкам прямой.

Таким образом, сплайн-аппроксимация проводится в два этапа. На первом с помощью одной из функций cspline, pspline или ispline отыскивается вектор вторых производных функции у(х), заданной векторами VХ и VУ ее значений (абсцисс и ординат). Затем на втором этапе для каждой искомой точки вычисляется значение у(х) с помощью функции interp.

Аппроксимация и интерполяция данных в MathCad

Линейная интерполяция осуществляется с помощью встроенной функции linterp, имеющей следующий общий вид:

linterp(VX,VY,x),

где VX, VY – векторы координат узловых точек;

x – значение аргумента, для которого будет получено интерполяционное значение функции y.

В MathCAD для проведения кубической сплайн-интерполяции предлагается три встроенные функции (VX, VY – вектора узловых точек):

cspline(VX, VY) – возвращает вектор вторых производных (VK) при приближении в опорных точках к кубическому полиному;

pspline(VX, VY) – возвращает вектор вторых производных (VK) при приближении в опорных точках к параболической кривой;

lspline(VX, VY) – возвращает вектор вторых производных (VK) при приближении в опорных точках к прямой.

Интерполирующая функция строится с помощью стандартной функции interp, имеющей следующий общий вид:

interp(VK,VX, VY,x),

VK – вектор вторых производных сплайна в опорных точках;

x – произвольная точка, в которой вычисляется значение интерполирующей функции.

Последовательность кубической сплайн-интерполяции такова:

— создаются вектора VX и VY, содержащие координаты точек, через которые нужно провести кубический сплайн;

— вычисляется вектор VK с использованием одной из перечисленных функций;

— вычисляется множество произвольных значений интерполирующей функции в нужном количестве точек с помощью стандартной функции interp.

MathCAD позволяет проводить линейную регрессию общего вида, в которой аппроксимирующая функция задается линейной комбинацией функций, причем сами функции fi(x) могут быть нелинейными:

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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Студопедия рекомендует:

Векторные и растровые карты Цифровая картографическая информация Электронная карта – это карта, существующая в виде компьютерного файла.
Дознание и предварительное следствие: общие черты и различия Дознание — форма предварительного расследования, осуществляемого дознавателем (следователем), по уголовному делу, по которому.
Система органов государственной власти субъектов РФ Система органов государственной власти субъекта Росийской Федерации&nbsp.
Основные определения и теоремы. Геометрия 8 класс Многоугольник — это фигура, составленная из отрезков так, что смежные отрезки не лежат на одной прямой, а несмежные отрезки не.
Функциональная организационная структура управления Организационные структуры управления Механические организационные структуры управления Структура отражает строение системы, т.

Как сделать апроксимацию в маткаде

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

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

  • матрица коэффициентов системы линейных уравнений А;
  • вектор свободных членов B этой системы;
  • вектор корней системы линейных уравнений – искомые коэффициенты регрессии.

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

    в первом примере каждый из перечисленных этапов реализован в виде отдельного блока с необходимыми комментариями;

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

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

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

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

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

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

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

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

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

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

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

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

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

  • regress (Mxy, Vz, n) – возвращает вектор, запрашиваемый функцией interp (VS. Mxy, Vz, V) для вычисления многочлена n-й степени, который наилучшим образом приближает точки множества Мху и Vz, Мху – матрица размера 2m, содержащая координаты х и у. Vz – m-мерный вектор, содержащий z-координаты, соответствующие m точкам, указанным в Мху.
  • Interp(VS, Mxy, Vz, V) – возвращает значение z по заданным векторам VS (создается функцией regress) и Мху, Vz и V (вектор координат х и у заданной точки, для которой находится 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

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

Аппроксимация и интерполяция данных в MathCad

Линейная интерполяция осуществляется с помощьювстроенной функции linterp , имеющей следующий общий вид:

linterp(VX,VY,x) ,

где VX , VY – векторыкоординат узловых точек;

В MathCAD для проведения кубическойсплайн-интерполяции предлагается тривстроенные функции ( VX , VY – вектора узловыхточек):

cspline(VX, VY) – возвращает вектор вторых производных (VK) при приближениив опорных точках к кубическому полиному;

p spline(VX, VY) – возвращает вектор вторых производных (VK) приприближении в опорных точках к параболической кривой;

lspline(VX, VY) – возвращает вектор вторых производных (VK) приприближении в опорных точках к прямой.

Интерполирующая функция строится с помощью стандартнойфункции interp , имеющей следующий общий вид:

VK –вектор вторых производных сплайна в опорных точках;

x –произвольная точка, в которой вычисляется значение интерполирующей функции.

Последовательность кубической сплайн-интерполяциитакова:

– создаются вектора VX и VY, содержащиекоординаты точек, через которые нужно провести кубический сплайн;

– вычисляется вектор VK с использованием одной из перечисленных функций;

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

Общий вид функции предсказания следующий:

n – количество предсказанных значений;

V – вектор исходных данных;

m – размерность вектора V.

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

MathCAD позволяет проводить линейную регрессию общеговида, в которой аппроксимирующая функция задается линейной комбинацией функций,причем сами функции f i (x) могут быть нелинейными:

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

VX , VY – координаты исходных точек;

F – вектор, содержащий функции f i (x) ,записанные в символьном виде.

Функция linfit еще называется функциейаппроксимации по методу наименьших квадратов.

Результатом работы функции linfit является вектор коэффициентов К , при котором среднеквадратичнаяпогрешность приближения исходных точек скоординатами VX , VY , минимальна.

Вектор VX должен быть возрастающим.

Полиномиальная регрессия позволяет аппроксимироватьзависимость полиномом произвольной степени.

Вычислениекоэффициентов полинома осуществляется с помощью встроенной функции regress , которая имеетследующий общий вид:

VX, VY –вектора с координатами исходных данных,

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

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

VK, x вектор, который содержит искомую функцию и еечастные производные по параметрам K

Более полную информацию и примеры можно скачать сдесь

  • Метки: MathCad, Аппроксимация, данных, интерполяция
  • Программирование

Уточнения, корректировки и обсуждения статьи «Аппроксимация и интерполяция данных в MathCad» — под данным текстом, в комментариях.

Ответственность, за все изменения, внесённые в систему по советам данной статьи, Вы берёте на себя.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *