Категории
Самые читаемые
onlinekniga.com » Научные и научно-популярные книги » Математика » Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов

Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов

Читать онлайн Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 62 63 64 65 66 67 68 69 70 ... 125
Перейти на страницу:

5.8.2. Разложение функции в ряд Лорана

Для разложения функции f в ряд Лорана с порядком n в окрестности точки x=а (или x=0) служит функция laurent:

laurent(f, х=а, n)

laurent(f, x, n)

Представленный ниже пример иллюстрирует реализацию разложения в ряд Лорана:

> laurent(f(х),х=0,4);

f(0) + D(f)(0)x + ½(D(2)(f)(0)x2 + ⅙(D(3)(f)(0)x3 + O(х4)

> laurent(exp(х),х,5);

5.8.3. Паде-аппроксимация аналитических функций

Для аппроксимации аналитических функций одной из лучших является Паде-аппроксимация, при которой заданная функция приближается отношением двух полиномов. Эта аппроксимация способна приблизить даже точки разрыва исходной функции с устремлениями ее значений в бесконечность (при нулях полинома знаменателя. Для осуществления такой аппроксимации используется функция pade:

pade(f, х=а, [m,n])

pade(f, х, [m,n])

Здесь f — аналитическое выражение или функция, x — переменная, относительно которой записывается аппроксимирующая функция, a — координата точки, относительно которой выполняется аппроксимация, m, n — максимальные степени полиномов числителя и знаменателя. Технику аппроксимации Паде непрерывной функции поясняет рис. 5.17.

Рис. 5.17. Аппроксимация Паде для синусоидальной функции

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

Важным достоинством Паде-аппроксимации является возможность довольно точного приближения разрывных функций. Это связано с тем, что нули знаменателя у аппроксимирующего выражения способны приближать разрывы функций, если на заданном интервале аппроксимации число разрывов конечно. На рис. 5.18 представлен пример Паде-аппроксимации функции tan(x) в интервале от -4,5 до 4,5, включающем два разрыва функции.

Рис. 5.18. Аппроксимация Паде для разрывной функции тангенса

Как видно из рис. 5.18, расхождение между функцией тангенса и ее аппроксимирующей функцией едва заметны лишь на краях интервала аппроксимации. Оба разрыва прекрасно приближаются аппроксимирующей функцией и никакого выброса погрешности в точках разрыва нет. Такой характер аппроксимации подтверждается и графиком погрешности, которая лишь на концах интервала аппроксимации [-4.0, 4.0] достигает значений 0,01 (около 1%).

5.8.4. Паде-аппроксимация с полиномами Чебышева

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

В общем случае применяется Паде-аппроксимация, характерная представлением аппроксимирующей функции в виде отношения полиномов Чебышева. Она реализуется функциями chebpade:

chebpade(f, x=a..b, [m,n])

chebpade(f, x, [m,n])

chebpade(f, a..b, [m,n])

Здесь a..b задает отрезок аппроксимации, m и n — максимальные степени числителя и знаменателя полиномов Чебышева. Приведенный ниже пример показывает аппроксимацию Паде полиномами Чебышева для функции f=cos(x):

> Digits:=10:chebpade(cos(x),x=0..1,5);

0.8235847380 T(0, 2x-1) - 0.2322993716 T(1, 2 x-1) - 0.05371511462 T(2, 2x-1) + 0.002458235267 T(3, 2 х-1) + 0.0002821190574 T(4, 2x-1) - 0.7722229156-5 T(5, 2x-1)

> chebpade(cos(x),x=0..1,[2,3]);

(0.8162435876 T(0, 2x-1) - 0.1852356296 T(1, 2x-1) - 0.05170917481 T(2, 2x-1))/(T(0, 2x-1) + 0.06067214549 T(1, 2x-1) + 0.01097466398 T(2, 2x-1) + 0.0005311640964 T(3, 2 x-1))

5.8.5. Наилучшая минимаксная аппроксимация

Минимаксная аппроксимация отличается от Паде-аппроксимации минимизацией максимальной абсолютной погрешности во всем интервале аппроксимации. Она использует алгоритм Ремеза (см. ниже) и реализуется следующей функцией:

minimax(f, x=a..b, [m,n], w, 'maxerror')

minimax(f, a..b, [m,n], w, 'maxerror')

Здесь, помимо уже отмеченных параметров, w — процедура или выражение, maxerror — переменная, которой приписывается значение minimax-нормы. Ниже дан пример аппроксимации функции cos(x) в интервале [-3, 3]:

> minimax(cos(х),х=-3..3,[2,3],1,'minmax');

> minimax;

.04621605601

5.8.6. Наилучшая минимаксная аппроксимация по алгоритму Ремеза

Для получения наилучшей полиномиальной аппроксимации используется алгоритм Ремеза, который реализует следующая функция:

remez(w, f, a, b, m, n, crit, 'maxerror')

Здесь w — процедура, представляющая функцию w(x) > 0 в интервале [a, b], f — процедура, представляющая аппроксимируемую функцию f(х), а и b — числа, задающие интервал аппроксимации [a, b], m и n — степени числителя и знаменателя аппроксимирующей функции, crit — массив, индексированный от 1 до m + n + 2 и представляющий набор оценок в критических точках (то есть точек максимума/минимума кривых погрешности), maxerror — имя переменной, которой присваивается минимаксная норма w abs(f-r).

Следующий пример иллюстрирует применение данной функции для аппроксимации функции erf(x):

> Digits:=12:w:=proc(х) 1.0 end;

w:= proc(x) 1.0 end proc

> f:=proc(x) evalf(erf(x)) end;

f: = proc(x) evalf (erf (x)) end proc

> crit:=array(1..7, [0, .1,.25,.5,.75,.9,1.]);

crit := [0, .1, .25, .5, .75, .9, 1.]

> remez(w,f,0,1,5,0,crit,'maxerror');

x→0.0000221268863 + (1.12678937620 + (0.018447321509 + (-0.453446232421 + (0.141246775527 + 0.00966355213050 x) x) x) x) x

> maxerror;

0.0000221268894463

5.8.7. Другие функции пакета numapprox

Отметим назначение других функций пакета numapprox:

chebdeg(p) — возвращает степень полинома Чебышева р;

chebmult(p, q) — умножение полиномов Чебышева p и q;

chebsort(e) — сортирует элементы ряда Чебышева;

confracform(r) — преобразует рациональное выражение r в цепную дробь;

confracform(r, х) — преобразует рациональное выражение r в цепную дробь с независимой переменной х;

hornerform(r) — преобразует рациональное выражение r в форму Горнера;

hornerform(r, х) — преобразует рациональное выражение r в форму Горнера с независимой переменной х;

infnorm(f, x=a…b, 'xmax') — возвращает L-бесконечную норму функции на отрезке х[а, b];

infnorm(f, a…b, "xmax") — возвращает L-бесконечную норму функции на отрезке [а, b].

Действие этих функций очевидно и читатель может самостоятельно опробовать их в работе.

5.9. Пакет приближения кривых CurveFitting

5.9.1. Общая характеристика пакета Curve Fitting

Появившийся еще в Maple 7 пакет приближения кривых CurveFitting весьма полезен тем, кто занимается столь распространенной задачей, как приближение кривых. Он содержит ряд функций:

> with(CurveFitting);

[BSpline, BSplineCurve, Interactive, LeastSquares, PolynomialInterpolation, RationalInterpolation, Spline, ThieleInterpolation]

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

CurveFitting[function](arguments) function(arguments)

Число функций пакета невелико и все они описаны ниже.

5.9.2. Функция вычисления В-сплайнов Bsline

Функция BSpline(k, v, opt) служит для вычисления В-сплайнов. В отличии от обычных сплайнов, у которых точками стыковки сплайн-функций являются узловые точки, В-сплайны позволяют получить стыковку в произвольно заданных точках. Указанная функция имеет следующие параметры: k — порядок сплайна (целое число), v — имя и opt — параметр в виде knots=knotlist, где knotlist — список из k+1 элементов алгебраического типа. Используя функцию CurveFitting[BSplineCurve] можно строить кривые В-сплайнов. Примеры применения этой функции представлены ниже:

> BSpline(3, х);

> BSpline(2, х, knots=[0,a,2]);

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

5.9.3. Функция построения B-сплайновых кривых BsplineCurve

Функция BsplineCurve служит для построения кривых B-сплайнов. Она может использоваться в формах:

BSplineCurve(xydata, v, opts)

BSplineCurve(xdata, ydata, v, opts)

Здесь:

xydata — список, массив или матрица точек в форме [[х1,у1],[х2,у2],…,[хn,уn]];

xdata — список, массив или вектор значений независимой переменной [х1,х2,…,хn];

ydata — список, массив или вектор значений зависимой переменной в форме [у1,у2,…,уn];

v — имя независимой переменной;

opts — не обязательный параметр в форме одного или более выражений вида order=k или knots=knotlist.

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

Следует отметить, что при малом числе точек стыковки аппроксимация B-сплайнами дает невысокую точность, что хорошо видно из рис. 5.19.

1 ... 62 63 64 65 66 67 68 69 70 ... 125
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов.
Комментарии