ГЛАВНАЯ Визы Виза в Грецию Виза в Грецию для россиян в 2016 году: нужна ли, как сделать

Аппроксимация характеристик нелинейных элементов. Способы аппроксимации характеристик нелинейных элементов Аппроксимация нелинейной функции

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

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

Классический пример - задача о радиоактивном распаде облученного образца, в которой удобны переменные и t, где - скорость распада. В этих переменных кривая обычно аппроксимируется ломаной, звенья которой соответствуют распаду все более долгоживущих членов радиоактивного ряда.

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

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

Однако квадрат погрешности уже не будет квадратичной функцией коэффициентов, так что найти коэффициенты рациональной функции нелегко. Можно по аналогии со среднеквадратичной аппроксимацией многочленами выдвинуть гипотезу, что погрешность имеет на число нулей, не меньшее числа свободных коэффициентов (сравните с замечанием 3 в п. 2). Тогда задача сводится к лагранжевой интерполяции по этим нулям и коэффициенты находятся из системы линейных уравнений:

Разумеется, точное положение нулей неизвестно; их выбирают произвольно, обычно равномерно распределяя на отрезке . Этот способ называют методом выбранных точек. Полученное этим методом приближение вовсе не будет наилучшим.

Кроме того, метод выбранных точек неразумен, как и всякая интерполяция, если имеют заметную погрешность.

Наилучшее приближение можно найти методом итерированного веса. Заметим, что задача

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

и будем решать ее простым итерационным процессом

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

а) Рассмотрим некоторые примеры аппроксимации рациональной функцией. Положим

заменяя два первых члена ряда дробью, получим . Эта несложная формула обеспечивает точность при и очень удобна для оценок.

б) В теории вероятностей важную роль играет интеграл ошибок для которого известны разложения в ряды:

Первый ряд абсолютно сходится, но при сходимость очень медленная; второй ряд сходится асимптотически при больших значениях . Заменяя первые члены каждого ряда дробями, получим

В указанных диапазонах изменения аргумента погрешность первой формулы не превышает 0,4%, а погрешность второй формулы -2,4%. Таким образом, точность этих аппроксимаций вполне достаточна для многих 1 практических приложений.

в) Положим при . Эта функция монотонна, причем при Легко построить дробь

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

Введение

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

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

Функция f(x), в зависимости от специфики задачи, может отвечать различным требованиям.

  • Функция f(x) должна проходить через точки (x i ,y i ), т. е. f(x i )=y i ,i=1...n. В этом случае говорят об интерполяции данных функцией f(x) во внутренних точках между x i , или экстраполяции за пределами интервала, содержащего все x i .
  • Функция f(x) должна некоторым образом (например, в виде определенной аналитической зависимости) приближать y(x i ), не обязательно проходя через точки (x i ,y i ). Такова постановка задачи регрессии , которую во многих случаях также можно назвать сглаживанием данных.
  • Функция f(x) должна приближать экспериментальную зависимость y(x i ), учитывая, к тому же, что данные (x i ,y i ) получены с некоторой погрешностью, выражающей шумовую компоненту измерений. При этом функция f(x), с помощью того или иного алгоритма уменьшает погрешность, присутствующую в данных (x i ,y i ). Такого типа задачи называют задачами фильтрации. Сглаживание - частный случай фильтрации.

Критерии близости функций и могут быть различные.

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

В том случае, когда аппроксимация проводится на непрерывном множестве точек (отрезке), аппроксимация называется непрерывной или интегральной . Примером такой аппроксимации может служить разложение функции в ряд Тейлора, то есть замена некоторой функции степенным многочленом.

Наиболее часто встречающим видом точечной аппроксимации является интерполяция (в широком смысле).

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

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

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

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

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

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

Рис. 1. Виды построения аппроксимирующей зависимости

Интерполяция и экстраполяция

В огромном количестве численных методов используются алгоритмы интерполяции. Вообще говоря, вычислительная математика - это наука о дискретных представлениях функций. Именно конечный набор значений y(x i ) представляет на компьютерном языке математическую абстрацию - непрерывную функцию y(x). Задача интерполяции функции одной переменной состоит в замене дискретной зависимости y(x i ), т.е. N пар чисел (x i ,y i ), или, по-другому, узлов, некоторой непрерывной функцией y(x). При этом основным условием является то, что функция y(x) должна проходить через точки (x i ,y i ), т. е. y(x i )=y i ,i=1...N, а также возможность вычислить значение y(x) в любой точке, находящейся между узлов.

Рис. 2. Построение интерполирующих и экстраполирующих зависимостей.

Когда искомое значение y(x) вычисляется в точке x, которая находится между каких-либо из узлов x i , говорят об интерполяции , а когда точка x лежит вне границ интервала, включающего все x i - об экстраполяции функции y(x).

На Рис. 2 по множеству точек (x i ,y i ), обозначенных кружками, построена как интерполирующая (при x>100), так и экстраполирующая их функция (при x<100). Интерполяция-экстраполяция показаны на рис. сплошной кривой.

Следует иметь в виду, что точность экстраполяции обычно очень невелика.

Для экстраполяции данных в отдельных версиях пакета применяется функция predict (v, m ,n) . Она формирует вектор предсказанных значений, построенный на m последовательных элементах вектора v .

Параметры функции predict (v, m ,n ) : v - вектор, чьи значения представляют выборки, принятые в равных интервалах, m и n - целые числа.

Таким образом «предсказывающаяся функция» predict (v, m ,n) использует существующие данные, чтобы предсказать новые данные, которые находящиеся за пределами задания. Она использует линейный алгоритм предсказания, который является достаточным, когда функции гладкие или знакопеременные, хотя не обязательно периодические.

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

7 .1 Локальная интерполяция

7 .1.1. Линейная интерполяция

Простейшим случаем локальной интерполяции является линейная интерполяция, когда в качестве интерполяционной функции выбирается полином первой степени, то есть узловые точки соединяются прямой линией.

Линейная интерполяции представляет искомую зависимость y(x) в виде ломаной линии. Интерполирующая функция у(x) состоит из отрезков прямых, соединяющих точки (x i ,y i ) (см. рис. 3).

Рис.3 Линейная интерполяция

Для построения линейной интерполяции достаточно на каждом из интервалов (x i ,x i+1 ) вычислить уравнение прямой, проходящей через эти две точки:

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

linterp (VX , VY , х)

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

Пусть требуется провести линейную интерполяцию функции sin(x ) на интервале , используя пять узлов интерполяции, и вычислить значения функции в четырех точках Xk :

Задаем интервал изменения x и число узловых точек

Определяем шаг изменения x :

Вычисляем координаты узлов и значения функции в них:

Проводим линейную интерполяцию:

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

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

7 .1.2. Интерполяция сплайнами

В настоящее время среди методов локальной интерполяции наибольшее распространение получила интерполяция сплайнами (от английского слова spline – гибкая линейка).

В большинстве практических приложений желательно соединить экспериментальные точки (x i ,y i )не ломаной линией, а гладкой кривой. Лучше всего для этих целей подходит интерполяция у(x) квадратичными или кубическими сплайнами, т. е. отрезками квадратичных или кубических парабол (см. рис.4).

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

Рис.4 Сплайн-интерполяция

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

и удовлетворяет условиям.

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

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

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

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

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

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

Наконец, четвертая функция

interp (VS , VX , VY , x)

возвращает значение у(х) для заданных векторов VS, VX, VY и заданного значения х.

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

Решим задачу об интерполяции синуса с помощью сплайнов через функцией interp(VS,x,y,z) . Переменные x и y задают координаты узловых точек, z является аргументом функции, VS определяет тип граничных условий на концах интервала.

Определим интерполяционные функции для трех типов кубического сплайна

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

Следует обратить внимание, что результаты интерполяции различными типами кубических сплайнов практически не отличаются во внутренних точках интервала и совпадают с точными значениями функции. Вблизи краев интервала отличие становится более заметным, а при экстраполяции за пределы заданного интервала различные типы сплайнов дают существенно разные результаты. Для большей наглядности результаты представлены на графиках (Рис.5) .

Рис.5 Сравнение сплайн-интерполяция

Аналогично можно убедиться, что первые и вторые производные сплайна непрерывны (Рис.6).

Рис.6 Сравнение производных (1-х и 2-х) сплайн-интерполяция

П роизводные более высоких порядков уже не являются непрерывными.

7.1.3. Интерполяция B-cплайнами

Рис.7 Интерполяция B-cплайнами

Чуть более сложный тип интерполяции – так называемая полиномиальная сплайн-интерполяция, или интерполяция B-сплайнами . В отличие от обычной сплайн-интерполяции, сшивка элементарных B-сплайнов производится не в точках (t i ,x i ), а в других точках, координаты которых обычно предлагается определить пользователю. Таким образом, требование равномерного следования узлов при интерполяции B-сплайнами отсутствует, и ими можно приближать разрозненные данные.

Сплайны могут быть полиномами первой, второй или третьей степени (линейные, квадратичные или кубические). Применяется интерполяция B-сплайнами точно так же, как и обычная сплайн-интерполяция, различие состоит только в определении вспомогательной функции коэффициентов сплайна.

bspline (vx , vy , u , n ) Возвращает вектор, содержащий коэффициенты В- сплайна степени n для данных , которые находяться в векторах vx и vy (с учет ом значений узл ов, которые заданы в u ) . Возвращаемый вектор становится первым аргументом функции interp .

interp (vs , vx , vy , x ) Возвращает B - сплайн интерполированной величины vy в точке x , где vs – результат работы функции bspline .

Аргументы

vx x .

vy y vx .

U - действительный вектор с числом элементов n-1 меньшим, чем в vx (где n - 1, 2, или 3). Элементы u должны быть в порядке возрастания. Элементы содержат значения узлов для интерполяции. Первый элемент в u должен быть меньше чем или равняться первому элементу в vx . Последний элемент в u должен быть больше или равняться последнему элементу в x.

N - целое число, равняются 1, 2, или 3, указывая степень индивидуального кусочно-линейного (n=1) , - квадратичного (n=2) , или кубического (n=3) полиномиал соответственно.

vs - вектор, образованный bspline .

X - значения независимой переменной, по которой Вы хотите интерполировать результаты. Для лучших результатов она должна принадлежать интервалу задания исходных значений х.

B - spline интерполяция позволяет передавать кривую через набор точек. Эта кривая строится на трех смежных точках полиномами градуса степени n и проходит через эти точки. Эти полиномы сопрягаются вместе в узлах так, чтобы сформировать законченную кривую.

7 .2. Глобальная интерполяция

При глобальной интерполяции ищется единый полином для всего интервала. Если среди узлов { x i ,y i } нет совпадающих, то такой полином будет единственным, и его степень не будет превышать n .

Запишем систему уравнений для определения коэффициентов полинома

Определим матрицу коэффициентов системы уравнений

Решим систему уравнений матричным методом

Определим интерполяционный полином

Вычислим значения интерполяционного полинома в заданных точках и сравним их с точными значениями

Коэффициенты интерполяционного полинома следующие:

Для наглядности результаты представлены на графике (Рис.8).

Примечание.

Из-за накопления вычислительной погрешности (ошибок округления) при большом числе узлов (n>10) возможно резкое ухудшение результатов интерполяции. Кроме того, для целого ряда функций глобальная интерполяция полиномом вообще не дает удовлетворительного результата. Рассмотрим в качестве примера две таких функции. Для этих функций точность интерполяции с ростом числа узлов не увеличивается, а уменьшается.

Рис. 8 . Глобальная интерполяция полиномом функции sin (z ).

Следующим примером является функция. Для нее интерполяционный полином строится на интервале [–1;1], используется 9 точек.

Результаты представлены на графике Рис. 9.

Рис. 9 Глобальная интерполяция полиномом функции.

Для функция найдем интерполяционный полином, используя заданные выше точки.

Результаты представлены на графике Рис. 10.

Рис. 10 Глобальная интерполяция полиномом функции.

При увеличении числа узлов интерполяции, результаты интерполирования вблизи концов интервала ухудшаются.

7 .3 Метод наименьших квадратов

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

Критерием близости в методе наименьших квадратов является требование минимальности суммы квадратов отклонений от аппроксимирующей функции до экспериментальных точек:

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

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

7 .3.1. Аппроксимация линейной функцией

Применим метод наименьших квадратов для аппроксимации экспериментальных данных.

Данные считываются из файлов datax и datay

При использовании MathCAD имя файла следует заключать в кавычки и записывать его по правилам MS DOS, например, READPRN("c:\mylib\datax.prn").

Определяется количество прочитанных данных (число экспериментальных точек).

В дальнейшем используются встроенные функции slope и intercept для определения коэффициентов линейной регрессии (аппроксимация данных прямой линией).

Функция slope(vx , vy ) определяет угловой коэффициент прямой, а функция intercept(vx , vy ) – точку пересечения графика с вертикальной осью.

Mathcad 2000 предлагает для этих же целей использовать функцию line(vx , vy ) , которая образует вектор (первый элемент - угловой коэффициент прямой, второй - точку пересечения с вертикальной осью).

Аргументы

v x - вектор действительных значений данных в порядке возрастания. Они соответствуют значениям x .

vy - вектор действительных значений данных. Они соответствуют значениям y . Содержит тот же число элементов, что и vx .

Коэффициенты линейной регрессии –

Стандартное отклонение составляет:

Рис. 11. Аппроксимация линейной функцией.

7 .3.2. Аппроксимация полиномами.

Для аппроксимация экспериментальных данных полиномами второй и третьей степени служат встроенные функции regress и уже знакомая нам функция interp . (Очевидно, что если в качестве аппроксимирующей функции брать полином степени на единицу меньше числа точек, то задача сведется к задаче глобальной интерполяции и полученный полином будет точно проходить через все заданные узлы.)

Вводим степени полиномов:

Функция regress(vx , vy , k ) является вспомогательной, она подготавливает данные, необходимые для работы функции interp .

Аргументы

v x - вектор действительных значений данных в порядке возрастания. Они соответствуют значениям x .

vy - вектор действительных значений данных. Они соответствуют значениям y . Содержит тот же число элементов, что и vx ,

k - степень полинома .

Вектор vs содержит, в том числе, и коэффициенты полинома

Функция interp (vs , vx , vy , z ) возвращает полином интерполированной величины vy в точке z , где vs – результат работы функции regress .

Определяя новые функции f2, f3 , мы получаем возможность находить значение полинома в любой заданной точке:

а также коэффициенты:

Стандартные отклонения почти не отличают друг от друга, коэффициент при четвертой степени z невелик, поэтому дальнейшее увеличение степени полинома нецелесообразно и достаточно ограничиться только второй степенью.

Функция regress имеется не во всех версиях Matcad "а. Однако, провести полиномиальную регрессию можно и без использования этой функции. Для этого нужно определить коэффициенты нормальной системы и решить полученную систему уравнений, например, матричным методом.

Теперь попытаемся аппроксимировать экспериментальные данные полиномами степени m и m1, не прибегая к помощи встроенной функции regress .

Вычисляем элементы матрицы коэффициентов нормальной системы

и столбец свободных членов

Находим коэффициенты полинома, решая систему матричным методом,

Определяем аппроксимирующие функции

Коэффициенты полиномов следующие:

Рис. 12. Аппроксимация полиномами 2-й и 3-й степени.

Функция regress создает единственный приближающий полином, коэффициенты которого вычисляются по всей совокупности заданных точек, т. е. глобально. Иногда полезна другая функция полиномиальной регрессии, дающая локальные приближения отрезками полиномов второй степени: loess(VX, VY, span ) — возвращает вектор VS , используемый функцией interp(VS, VX, VY, x) , дающей наилучшее приближение данных (с координатами точек в векторах VX и VY ) отрезками полиномов второй степени. Аргумент span > 0 указывает размер локальной области приближаемых данных (рекомендуемое начальное значение — 0,75). Чем больше span , тем сильнее сказывается сглаживание данных. При больших span эта функция приближается к regress(VX, VY, 2) .

Ниже в примере показано приближение сложной функции со случайным разбросом ее ординат с помощью совокупности отрезков полиномов второй степени (функция loess ) для двух значений параметра span .

По рисунку примера можно отметить, что при малом значении span = 0.05 отслеживаются характерные случайные колебания значений функции, тогда как уже при span = 0.5 кривая регрессии становится практически гладкой. К сожалению, из-за отсутствия простого описания аппроксимирующей функции в виде отрезков полиномов этот вид регрессии получил ограниченное применение.

Проведение многомерной регрессии

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

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

regress(Mxy, Vz, n ) — возвращает вектор, запрашиваемый функцией interp (VS, Мху, Vz, V) для вычисления многочлена n -й степени, который наилучшим образом приближает точки множества Мху и Vz . Мху — матрица т 2, содержащая координаты х и у. Vz — m -мер-ный вектор, содержащий z -координаты, соответствующие т точкам, указанным в Мху;

Loes(Mxy, Vz, span ) — аналогичен loes(VX, VY, span ), но в многомерном случае;

interp(VS, Мху, Vz, V) — возвращает значение z по заданным векторам VS (создается функциями regress или loess ) и Мху , Vz и V (вектор координат х и у заданной точки, для которой находится z ).

Пример многомерной интерполяции был приведен выше. В целом многомерная регрессия применяется сравнительно редко из-за сложности сбора исходных данных.

7 .3.3. Аппроксимация линейной комбинацией функций

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

Функция linfit(x , y , F ) имеет три аргумента:

  • вектор x – x –координаты заданных точек,
  • вектор y – y –координаты заданных точек,
  • функция F – содержит набор функций, который будет использоваться для построения линейной комбинации.

Задаем функцию F (аппроксимирующая функция ищется в виде:

Определяем аппроксимирующую функцию:

Вычисляем дисперсию:

Рис. 1 3 . Аппроксимация линейной комбинацией функций

8.3.4.

Теперь построим аппроксимирующую функцию дробно–

рационального типа . Для этого воспользуемся функцией genfit(x , y , v,F ) .

Функция имеет следующие параметры:

  • x, y – векторы, содержащие координаты заданных точек,
  • F – функция, задающая искомую функциональную n –параметрическую зависимость и частные производные этой зависимости по параметрам.
  • v – вектор, задающий начальные приближения для поиска параметров.

Поскольку нулевой элемент функции F содержит искомую функцию, определяем функцию следующим образом:

Вычисляем среднее квадратичное отклонение

Рис. 1 4 . Аппроксимация функцией произвольного вида

на основе genfit .

Функция genfit имеется не во всех реализациях Mathcad "а. Возможно, однако, решить задачу, проведя линеаризацию.

Заданная функциональная зависимость может быть линеаризована

введением переменных и. Тогда .

Определим матрицы коэффициентов нормальной системы.

Находим коэффициенты функции, решая систему матричным методом,

Определяем функцию:

Вычислим стандартное отклонение

Обратите внимание! Мы получили другие коэффициенты! Задача на нахождение минимума нелинейной функции, особенно нескольких переменных, может иметь несколько решений.

Стандартное отклонение больше, чем в случае аппроксимации полиномами, поэтому следует остановить свой выбор на аппроксимации полиномом.

Представим результаты аппроксимации на графиках

Рис. 1 5 . Аппроксимация функцией произвольного вида

на основе genfit .

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

  • Решение систем нелинейных и трансцендентных уравнений.
  • Системы нелинейных и трансцендентных уравнений. Решение уравнений в численном виде.
  • Численные методы решения задач

    Радиофизики и электроники

    (Учебное пособие)

    Воронеж 2009

    Учебное пособие подготовлено на кафедре электроники физического

    факультета Воронежского Госуниверситета.

    Рассматриваются методы решения задач, связанных с автоматизированным анализом электронных схем. Излагаются основные понятия теории графов. Приводится матрично-топологическая формулировка законов Кирхгофа. Описываются наиболее известные матрично-топологические методы: метод узловых потенциалов, метод контурных токов, метод дискретных моделей, гибридный метод, метод переменных состояний.

    1. Аппроксимация нелинейных характеристик. Интерполяция . 6

    1.1. Полиномы Ньютона и Лагранжа 6

    1.2. Сплайн-интерполяция 8

    1.3. Метод наименьших квадратов 9

    2. Системы алгебраических уравнений 28

    2.1. Cистемы линейных уравнений. Метод Гаусса. 28

    2.2. Разреженные системы уравнений. LU-факторизация. 36

    2.3. Решение нелинейных уравнений 37

    2.4. Решение систем нелинейных уравнений 40

    2.5. Дифференциальные уравнения. 44

    2. Методы поиска экстремума. Оптимизация. 28

    2.1. Методы поиска экстремума . 36

    2.2. Пассивный поиск 28

    2.3. Последовательный поиск 36

    2.4. Многомерная оптимизация 37

    Список литературы 47

    Аппроксимация нелинейных характеристик. Интерполяция.

    1.1. Полиномы Ньютона и Лагранжа.

    При решении многих задач возникает необходимость в замене функции f, о которой имеется неполная информация или форма которой слишком сложна, более простой и удобной функцией F, близкой в том или ином смысле к f, дающей её приближённое представление. Для аппроксимации (приближения) используются функции F, принадлежащие определённому классу, например, алгебраические полиномы заданной степени. Существует много разных вариантов задачи о приближении функции, зависящих от того, какие функции f аппроксимируются, какие функции F используются для аппроксимации, как понимается близость функций f и F и т.д.

    Одним из методов построения приближённых функций является интерполирование, когда требуется, чтобы в определённых точках (узлах интерполяции) совпадали значения исходной функции f и аппроксимирующей функции F. В более общем случае должны совпадать значения производных в заданных точках.

    Интерполирование функций используется для замены сложно вычисляемой функции другой, вычисляемой проще; для приближённого восстановления функции по её значениям в отдельных точках; для численного дифференцирования и интегрирования функций; для численного решения нелинейных и дифференциальных уравнений и т.д.

    Простейшая задача интерполирования заключается в следующем. Для некоторой функции на отрезке заданы n+1 значений в точках , которые называются узлами интерполяции. При этом . Требуется построить интерполирующую функцию F(x), принимающую в узлах интерполяции те же значения, что и f(x):

    F(x 0) = f(x 0), F(x 1) = f(x 1), … , F(x n) = f(x n)

    Геометрически это означает нахождение кривой определённого типа, проходящей через заданную систему точек (x i , y i), i = 0,1,…,n.

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

    Наиболее часто функция F(x) строится в виде алгебраического полинома . Существует несколько представлений алгебраических интерполяционных полиномов.

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

    Степень интерполяционного полинома, проходящего через n+1 узлов интерполяции, равна n.

    Из вида полинома Лагранжа следует, что добавление новой узловой точки приводит к изменению всех членов полинома. В этом состоит неудобство формулы Лагранжа. Зато метод Лагранжа содержит минимальное количество арифметических действий.

    Для построения полиномов Лагранжа возрастающих степеней может быть применена следующая итерационная схема (схема Эйткена).

    Полиномы, проходящие через две точки (x i , y i) , (x j , y j) (i=0,1,…,n-1 ; j=i+1,…,n), могут быть представлены таким образом:

    Полиномы, проходящие через три точки (x i , y i) , (x j , y j) , (x k , y k)

    (i=0,…,n-2 ; j=i+1,…,n-1 ; k=j+1,…,n), могут быть выражены через полиномы L ij и L jk:

    Полиномы для четырёх точек (x i , y i) , (x j , y j) , (x k , y k) , (x l , y l) строятся из полиномов L ijk и L jkl:

    Процесс продолжается до тех пор, пока не будет получен полином, проходящий через n заданных точек.

    Алгоритм вычисления значения полинома Лагранжа в точке XX, реализующий схему Эйткена, может быть записан с помощью оператора:

    for (int i=0;i

    for (int i=0;i<=N-2;i++)Здесь не нужно слово int, программа

    его воспримет как ошибку – повторное объявление переменной,

    переменная i уже была объявлена

    for (int j=i+1;j<=N-1;j++)

    F[j]=((arg-x[i])*F[j]-(arg-x[j])*F[i])/(x[j]-x[i]);

    где массив F – это промежуточные значения полинома Лагранжа. Первоначально следует положить F[I] равными y i . После выполнения циклов F[N] – это значение полинома Лагранжа степени N в точке XX.

    Другой формой представления интерполяционного полинома являются формулы Ньютона. Пусть - равноотстоящие узлы интерполяции; i=0,1,…,n ; - шаг интерполяции.

    1-я интерполяционная формула Ньютона, которая используется для интерполирования «вперёд», имеет вид:

    Называется (конечными) разностями i-го порядка. Они определяются так:

    Нормированный аргумент.

    При интерполяционная формула Ньютона превращается в ряд Тейлора.

    2-я интерполяционная формула Ньютона используется для интерполирования «назад»:

    В последней записи вместо разностей (называемых разностями «вперёд») употребляются разности «назад» :

    В случае неравноотстоящих узлов рассматриваются т.н. разделённые разности

    При этом интерполяционный многочлен в форме Ньютона имеет вид

    В отличие от формулы Лагранжа прибавление новой пары значений. (x n +1 , y n +1) сводится здесь к прибавлению одного нового члена. Поэтому число узлов интерполяции может быть легко увеличено без повторения всего вычисления. Это позволяет оценить точность интерполирования. Однако формулы Ньютона требуют большее количество арифметических действий, чем формулы Лагранжа.

    При n=1 получаем формулу линейного интерполирования:

    При n=2 будем иметь формулу параболического интерполирования:

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

    На практике чаще всего используют кусочно-линейное или кусочно-параболическое интерполирование.

    При кусочно-линейном интерполировании функция f(x) на интервале (i=0,1,…,n-1) аппроксимируется отрезком прямой

    Алгоритм вычисления, реализующий кусочно-линейное интерполирование, может быть записан с помощью оператора:

    for (int i=0;i

    if ((arg>=Fx[i]) && (arg<=Fx))

    res=Fy[i]+(Fy-Fy[i])*(arg-Fx[i])/(Fx-Fx[i]);

    С помощью первого цикла ищем, где находится искомая точка.

    При кусочно-параболическом интерполировании полином строится по 3-м узловым точкам, ближайшим к заданному значению аргумента.

    Алгоритм вычисления, реализующий кусочно-параболическое интерполирование, может быть записан с помощью оператора:

    for (int i=0;i

    y0=Fy;При i=0 элемент не существует!

    x0=Fx; То же самое

    res=y0+(y1-y0)*(arg-x0)/(x1-x0)+(1/(x2-x0))*(arg-x0)*(arg-x1)*(((y2-y1)/(x2-x1))-((y1-y0)/(x1-x0)));

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

    Коэффициенты аппроксимирующего полинома находятся из решения системы m+1 линейных уравнений, т.н. «нормальных» уравнений , k=0,1,…,m

    Кроме алгебраических полиномов для аппроксимации функций широко используются тригонометрические полиномы

    (см. «численный гармонический анализ»).

    Эффективным аппаратом приближения функции являются сплайны. Для сплайна требуется совпадение его значений и производных в узловых точках с интерполируемой функцией f(x) и её производными до некоторого порядка. Однако построение сплайнов в ряде случаев требует значительных вычислительных затрат.


    1 | | | | | | | | | | | |

    (Обратите внимание на дополнительный раздел от 04.06.2017 в конце статьи.)

    Учет и контроль! Те, кому за 40 должны хорошо помнить этот лозунг из эпохи построения социализма и коммунизма в нашей стране.

    Но без хорошо налаженного учета невозможно эффективное функционирование ни страны, ни области, ни предприятия, ни домашнего хозяйства при любой общественно-экономической формации общества! Для составления прогнозов и планов деятельности и развития необходимы исходные данные. Где их брать? Только один достоверный источник – это ваши статистические учетные данные предыдущих периодов времени.

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

    «Мы, помню, 5 лет назад изготавливали до 1000 штук таких изделий в месяц, а сейчас и 700 еле-еле собираем!». Открываем статистику и видим, что 5 лет назад и 500 штук не изготавливали…

    «Во сколько обходится километр пробега твоего автомобиля с учетом всех затрат?» Открываем статистику – 6 руб./км. Поездка на работу – 107 рублей. Дешевле, чем на такси (180 рублей) более чем в полтора раза. А бывали времена, когда на такси было дешевле…

    «Сколько времени требуется для изготовления металлоконструкций уголковой башни связи высотой 50 м?» Открываем статистику – и через 5 минут готов ответ…

    «Сколько будет стоить ремонт комнаты в квартире?» Поднимаем старые записи, делаем поправку на инфляцию за прошедшие годы, учитываем, что в прошлый раз купили материалы на 10% дешевле рыночной цены и – ориентировочную стоимость мы уже знаем…

    Ведя учет своей профессиональной деятельности, вы всегда будете готовы ответить на вопрос начальника: «Когда!!!???». Ведя учет домашнего хозяйства, легче спланировать расходы на крупные покупки, отдых и прочие расходы в будущем, приняв соответствующие меры по дополнительному заработку или по сокращению необязательных расходов сегодня.

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

    Аппроксимация в Excel статистических данных аналитической функцией.

    Производственный участок изготавливает строительные металлоконструкции из листового и профильного металлопроката. Участок работает стабильно, заказы однотипные, численность рабочих колеблется незначительно. Есть данные о выпуске продукции за предыдущие 12 месяцев и о количестве переработанного в эти периоды времени металлопроката по группам: листы, двутавры, швеллеры, уголки, трубы круглые, профили прямоугольного сечения, круглый прокат. После предварительного анализа исходных данных возникло предположение, что суммарный месячный выпуск металлоконструкций существенно зависит от количества уголков в заказах. Проверим это предположение.

    Прежде всего, несколько слов об аппроксимации. Мы будем искать закон – аналитическую функцию, то есть функцию, заданную уравнением, которое лучше других описывает зависимость общего выпуска металлоконструкций от количества уголкового проката в выполненных заказах. Это и есть аппроксимация, а найденное уравнение называется аппроксимирующей функцией для исходной функции, заданной в виде таблицы.

    1. Включаем Excel и помещаем на лист таблицу с данными статистики.

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

    3. «Наводим» мышь на любую из точек на графике и щелчком правой кнопки вызываем контекстное меню (как говорит один мой хороший товарищ — работая в незнакомой программе, когда не знаешь, что делать, чаще щелкай правой кнопкой мыши…). В выпавшем меню выбираем «Добавить линию тренда…».

    4. В появившемся окне «Линия тренда» на вкладке «Тип» выбираем «Линейная».

    6. На графике появилась прямая линия, аппроксимирующая нашу табличную зависимость.

    Мы видим кроме самой линии уравнение этой линии и, главное, мы видим значение параметра R 2 – величины достоверности аппроксимации! Чем ближе его значение к 1, тем наиболее точно выбранная функция аппроксимирует табличные данные!

    7. Строим линии тренда, используя степенную, логарифмическую, экспоненциальную и полиномиальную аппроксимации по аналогии с тем, как мы строили линейную линию тренда.

    Лучше всех из выбранных функций аппроксимирует наши данные полином второй степени, у него максимальный коэффициент достоверности R 2 .

    Однако хочу вас предостеречь! Если вы возьмете полиномы более высоких степеней, то, возможно, получите еще лучшие результаты, но кривые будут иметь замысловатый вид…. Здесь важно понимать, что мы ищем функцию, которая имеет физический смысл. Что это означает? Это означает, что нам нужна аппроксимирующая функция, которая будет выдавать адекватные результаты не только внутри рассматриваемого диапазона значений X, но и за его пределами, то есть ответит на вопрос: «Какой будет выпуск металлоконструкций при количестве переработанных за месяц уголков меньше 45 и больше 168 тонн!» Поэтому я не рекомендую увлекаться полиномами высоких степеней, да и параболу (полином второй степени) выбирать осторожно!

    Итак, нам необходимо выбрать функцию, которая не только хорошо интерполирует табличные данные в пределах диапазона значений X=45…168, но и допускает адекватную экстраполяцию за пределами этого диапазона. Я выбираю в данном случае логарифмическую функцию, хотя можно выбрать и линейную, как наиболее простую. В рассматриваемом примере при выборе линейной аппроксимации в excel ошибки будут больше, чем при выборе логарифмической, но не на много.

    8. Удаляем все линии тренда с поля диаграммы, кроме логарифмической функции. Для этого щелкаем правой кнопкой мыши по ненужным линиям и в выпавшем контекстном меню выбираем «Очистить».

    9. В завершении добавим к точкам табличных данных планки погрешностей. Для этого правой кнопкой мыши щелкаем на любой из точек на графике и в контекстном меню выбираем «Формат рядов данных…» и настраиваем данные на вкладке «Y-погрешности» так, как на рисунке ниже.

    10. Затем щелкаем по любой из линий диапазонов погрешностей правой кнопкой мыши, выбираем в контекстном меню «Формат полос погрешностей…» и в окне «Формат планок погрешностей» на вкладке «Вид» настраиваем цвет и толщину линий.

    Аналогичным образом форматируются любые другие объекты диаграммы в Excel !

    Окончательный результат диаграммы представлен на следующем снимке экрана.

    Итоги.

    Результатом всех предыдущих действий стала полученная формула аппроксимирующей функции y=-172,01*ln (x)+1188,2. Зная ее, и количество уголков в месячном наборе работ, можно с высокой степенью вероятности (±4% — смотри планки погрешностей) спрогнозировать общий выпуск металлоконструкций за месяц! Например, если в плане на месяц 140 тонн уголков, то общий выпуск, скорее всего, при прочих равных составит 338±14 тонн.

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

    Из практики скажу, что хорошим результатом следует считать нахождение аппроксимирующей функции с коэффициентом достоверности R 2 >0,87. Отличный результат – при R 2 >0,94.

    На практике бывает трудно выделить один самый главный определяющий фактор (в нашем примере – масса переработанных за месяц уголков), но если постараться, то в каждой конкретной задаче его всегда можно найти! Конечно, общий выпуск продукции за месяц реально зависит от сотни факторов, для учета которых необходимы существенные трудозатраты нормировщиков и других специалистов. Только результат все равно будет приблизительным! Так стоит ли нести затраты, если есть гораздо более дешевое математическое моделирование!

    В этой статье я лишь прикоснулся к верхушке айсберга под названием сбор, обработка и практическое использование статистических данных. О том удалось, или нет, мне расшевелить ваш интерес к этой теме, надеюсь узнать из комментариев и рейтинга статьи в поисковиках.

    Затронутый вопрос аппроксимации функции одной переменной имеет широкое практическое применение в разных сферах жизни. Но гораздо большее применение имеет решение задачи аппроксимации функции нескольких независимых переменных…. Об этом и не только читайте в следующих статьях на блоге.

    Подписывайтесь на анонсы статей в окне, расположенном в конце каждой статьи или в окне вверху страницы.

    Не забывайте подтверждать подписку кликом по ссылке в письме, которое придет к вам на указанную почту (может прийти в папку « Спам» )!!!

    С интересом прочту Ваши комментарии, уважаемые читатели! Пишите!

    P.S. (04.06.2017)

    Высокоточная красивая замена табличных данных простым уравнением.

    Вас не устраивают полученные точность аппроксимации (R 2 <0,95) или вид и набор функций, предлагаемые MS Excel?

    Размеры выражения и форма линии аппроксимирующего полинома высокой степени не радует глаз?

    Обращайтесь через страницу « » для получения более точного и компактного результата аппроксимации ваших табличных данных и для того, чтобы узнать простую методику решения задач высокоточной аппроксимации функцией одной переменной.

    При использовании предлагаемого алгоритма действий найдена весьма компактная функция, обеспечивающая высочайшую точность аппроксимации: R 2 =0,9963!!!

    Аппроксимация нелинейной функции

    x 0 /12 /6 /4 /3 5/12 /2

    y 0,5 0,483 0,433 0,354 0,25 0,129 0

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

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

    Формирование функции времени

    Интервал изменения:

    Время циклического перезапуска: T = 1c

    Теперь смоделируем функцию:

    Аппроксимация


    Рисунок 3.1 - Схема решения уравнения

    Рисунок 3.2 - Блок-схема формирования нелинейной функции

    Таким образом, автоматически формируется левая часть уравнения. При этом условно считается, что старшая производная x// известна, поскольку члены правой части уравнения известны и могут быть подключены к входам У1 (рисунок 3.1). Операционный усилитель У3 выполняет роль инвертора сигнала +х. Для моделирования x// необходимо в схему ввести еще один підсумовуючий усилитель, на входы которого необходимо подать сигналы, которые моделируют правую часть уравнения (3.2).

    Рассчитываются масштабы всех переменных с учетом того, что максимальная величина машинной переменной за абсолютной величиной равняется 10 В:

    Mx = 10 / xmax; Mx/ = 10 / x/ max; Mx// = 10 / x //max;

    My = 10 / ymax. (3.3)

    Масштаб времени Mt = T / tmax = 1, поскольку моделирование задачи осуществляется в реальном масштабе времени.

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

    Для усилителя У1 коэффициенты передачи находятся за формулами:

    K11 = Mx/ b / (MyMt); K12 = Mx/ a2 / (MxMt);

    K13 = Mx/ a1 / (MxMt). (3.4)

    Для усилителя У2:

    K21 = Mx/ / (Mx/ Mt), (3.5)

    и для усилителя У3:

    К31 = 1. (3.6)

    Напряжения начальных условий вычисляются за формулами:

    ux/ (0) = Mx/ x/ (0) (-1); ux(0)= Mxx(0) (+1). (3.7)

    Правая часть уравнения (3.2) представлена нелинейной функцией, которая задается путем линейной аппроксимации. При этом необходимо проверять, чтобы погрешность аппроксимации не превышала заданную величину. Блок-схема формирования нелинейной функции представлена на рисунку 3.2.

    Описание принципиальной схемы

    Блок формирования функции времени (Ф) выполняется в виде одного (для формирования t) или двух последовательно соединенных (для формирования t2) интегрирующих усилителей с нулевыми начальными условиями.

    В этом случае при подаче на вход первого интегратора сигнала U, на его выходе получим:

    u1(t)= - K11 = - K11Et. (3.8)

    Положив K11E=1, имеем u1(t)= t.

    На выходе второго интегратора получим:

    u2(t)= K21 = K11K21Et2 / 2 (3.9)

    Положив K11K21E/2 = 1, имеем u2(t)= t2.

    Блоки формирования отрезков аппроксимирующей функции реализуются в виде диодных блоков нелинейных функций (ДБНФ), входной величиной для которых является функция времени t или t2. Порядок расчета и построения ДБНФ приведенные в .

    Сумматор (ГРУСТЬ) отрезков аппроксимирующей функции выполняется в виде дифференциального итогового усилителя.

    Начальные условия для интеграторов моделирующей схемы вводятся с помощью узла с переменной структурой (рисунок 3.3). Эта схема может работать в двух режимах:

    а) интегрирование - при положении ключа К в позиции 1. При этом исходный сигнал схемы с достаточной точностью описывается уравнением идеального интегратора:

    u1(t)= - (1 / RC) . (3.10)

    Этот режим используется при моделирование задачи. Для проверки правильности выбора параметров R и C интегратора проверяют величину исходного напряжения интегратора в функции времени и полезное время интегрирования в пределах допустимой ошибки?Uдоп.

    Величина исходного напряжения интегратора

    U(t)= - KYE {1 - e - Т / [(Ky+1)RC} (3.11)

    за время моделирования Т при интегрировании входного сигнала E с использованием операционного усилителя с коэффициентом передачи Ky без цепи обратной связи не должна превышать значения машинной переменной (10 В).

    Время интегрирования

    Tи = 2RC(Kу + 1)?Uдоп (3.12)

    при выбранных параметрах схемы не должен быть меньше, чем время моделирования Т.

    б) задание начальных условий реализуется при переводі ключа К в положение 2. Этот режим используется при подготовке моделирующей схемы к процессу решения. При этом исходный сигнал схемы описывается уравнением:

    u0(t)= - (R2 /R1) E (3.13)

    где u0(t) - величина начальных условий.

    С целью сокращения времени формирования начальных условий и обеспечение надежной работы, параметры схемы должны удовлетворять условие: R1C1 = R2C.

    Построить полную расчетную схему. При этом следует пользоваться условными обозначениями, приведенными в подразделе 3.1.

    Пользуясь разрядностью входных и исходных данных, построить принципиальные схемы блоков Б1 и Б2 и соединить их с блоком РС.