Записи с меткой «аппроксимация»

Пакет вычислительных функций Calculus

Пакет вычислительных функций Calculus
 
Пакет расширения Calculus содержит представительный набор функций для решения дифференциальных уравнений, задания функций единичного скачка и импульса, выполнения операций с векторами, преобразований Фурье и Лапласа, выполнения спектрального анализа и синтеза, расширенного вычисления пределов и проведения аппроксимаций аналитических функций. Для открытия пакета используется команда Calculus`
Решение дифференциальных уравнений — DSolvelntegrals
Многие нелинейные дифференциальные уравнения не имеют общего решения. В под-пакете DSolvelntegrals определены функции, позволяющие найти решения в форме полного интеграла:

  • Completelntegral [eqn, u [х, у,…], {х, у…} ] — создает полный интеграл для дифференциального уравнения, касательного к и [х, у,…];
  • Differential Invariants [ {eqnsl, eqns2,…}, {u [х] , v [х] ,…}, х} — возвращает список дифференциальных инвариантов для простых переменных {u[x] ,v[x] ,…} и х;
  • Differential Invariants [ {eqnsl, eqns2,…}, {u, v,…}, х} — возвращает список дифференциальных инвариантов для простых переменных {u, v,…} и х;

Применение этих функций поясняют следующие примеры:
<<Calculus`DSolvelntegrals`
Completelntegral[
Derivative[0, 1][u][х, у] == (u[x, у] +
x^2*Derivative[l, 0][u][x, y]^2)/y, u[x,y], {х,у}]
Completelntegral[-u[x, у] +
(2 + y)*Derivative[0, 1][u] [x, y] +
x*Derivative[l, 0][u][x, y] + 3*Derivative[l, 0][u][x, y]^2 == 0,
u[x,y], {x,y}, IntegralConstants->F]
Differentiallnvariants[
{U`[X] == -(U[X] (U[X] +V[X])),
V`-[x] == V[x] (u[x] +V[x])},{u, v}, x]
Дельта-функция Дирака — DiracDelta
В подпакете DiracDelta системы Mathematica 3 задано определение двух полезных функций Дирака:

  • UnitStep [х] — возвращает функцию с единичным скачком при х = 0 (дает значение 0 при х < 0 и 1 при х > 1);
  • DiracDelta [x] — возвращает дельта-функцию Дирака, которая является импульсом с единичной площадью, бесконечно малой шириной в точке х = 0 и бесконечно большой амплитудой.

Рисунок поясняет применение этих функций. Функция UnitStep имеет простую графическую иллюстрацию, тогда как построение графика функции DiracDelta в принципе невозможно — эта функция представляет собой линию бесконечно большой высоты в точке х — 0. Обратите внимание на то, что интеграл от функции Дирака при интегрировании от -°° до +°° равен 1.
Обе описанные функции широко применяются при решении задач автоматического регулирования и при математическом моделировании систем и устройств. Поэтому в системе Mathematica 8 они перешли в разряд встроенных функций.
Улучшенное вычисление пределов — Limit
Подпакет Limit не создает новых функций. Он просто переопределяет встроенную функцию Limit, так что ограничимся примерами его применения:
<<Calculus` Limit`
Limit[Е^х^х/ Е^х^(2 х), x->Infinity]
0
Limit [Е^х^х— Е^х^ (2 х) , x->Infinity]
-бесконечность
Limit[E:x ExpIntegralE[2, ArcTan[E^x]- Pi/2] -E^x- x, x->Infinity]
1 — EulerGamma — I л
Limit[Zeta[l+x, v] — 1/x, x->0]
-PolyGamma[0, v] ,
Limit[x^0 PolyGamma[2,x], x->Infinity] .
0
Limit[x^2 PolyGamma[2,x], x->Infinity]
-1
Limit[x^3 PolyGamma[2,x], x->Infinity]
-бесконечность
Работа скорректированной функции наиболее эффективна при вычислении пределов от выражений, содержащих специальные математические функции, и пределов при х, стремящемся к бесконечности.
Рациональная аппроксимация аналитических функций — Fade
Полиномиальная аппроксимация и обычное разложение функций в ряд Тейлора нередко дают слишком большую погрешность. далее…

Операции с полиномами

Операции с полиномами
Если конечные поля — понятие достаточно экзотическое, то полиномы встреча- ются сплошь и рядом во многих математических и научно-технических расчетах. В пакете расширения Algebra определен ряд новых операций над полиномами. Начнем их рассмотрение с функции PolynomialExtendedGCD:

  • PolynomialExtendedGCD [polyl, poly2 ] — возвращает наибольший общий делитель двух полиномов;
  • PolynomialExtendedGCD[polyl,poly2,Modulus->p] —возвращает наи- больший общий делитель двух полиномов по модулю р.

Примеры применения этой функции приведены ниже:
<<Algebra"PolynomialExtendedGCD
PolynomialExtendedGCDlxл2 + 3 х + 2, Expand[(x + 1)(х + 2)], Modulus->7]
{2+ Зх+х2, (0, 1}}
PolynomialExtendedGCD[
Expand[ ((12+1) z^2 + 5 z + I) (I z + 3)], Expand[ ((9+1) z + (3+1)) ((31) z +9)]]
{-31+z,
{- 2261/3341+ 710I/3341( 35/3341- 3951/10023)+ (5959/20046- 20531/20046)z}}
Далее следует функция PolynomialPowerMod [polyl, n, (poly2, р} ], которая является существенно ускоренной версией функции PolynomialMod.

  • степени ускорения свидетельствует следующий пример:

<<Algebra`PolynomialPowerMod`
Timing[PolynomialPowerMod[1 + х, 200, х^З + x^2 + 1, Prime[4750]]][[1]], Timing [ PolynomialMod [ (1 + x)^200, x^ + х^2 + 1, Prime [4750] ]][[1]]
{0. Second, 2.37 Second)
В данном случае вычисления по функции PolynomialPowerMod оказались вы- полненными менее чем за 0.01 с, что дает нулевой результат.
Еще одна функция в трех ее модификациях работает с симметричными полиномами:

  • SymmetricReduction [ {xl,…,xn}, k] — возвращает симметричный полином степени k по переменным {х1,…, хn);
  • SymmetricReduction [f, {xl,…,xn}] — возвращает часть полинома {p,q} по переменным {х1,…,хп}, где f=p+q, причем р есть симметричная часть, q — остаток;
  • SymmetricReduction [f, {xl,…,xn}, {s1,…, sn} ] — возвращает часть полинома (p,q) попеременным {xl, …,xn}, где элементарный симметричный полином представляет список {s1,…, sn}.

Следующий пример поясняет создание симметричного полинома 4-й степени по переменным {х,у, z,w,t}:
<<Algebra` SymmetricPolynomials`
SyiranetricPolynomial[{x, y, z, w, t}, 4]
twxy+ twxz+ twyz+txyz+wxyz
Действие других функций поясняют следующие примеры:
SynraetricReduction[(х + у)^2 + (х + z)^2 + (z + у)^2, {х, у, z}]
{2 (х+у+ z)2- 2 (xy+xz+yz), 0}
SymmetricReduction[х^5 + у^5 + z^4, {х, у, z}, {s1, s2, s3}]
{s15- 5s13s2 + 5s1s22+ 5sl2s3- 5s2s3, z4-z5}
Преобразование полиномов в схему Горнера — Horner
Подпакет Horner в системе Mathematica 8 реализует хорошо известную схему вычисления полиномов — схему Горнера. При ней операции возведения в степень заменяются операциями умножения. Для этого служит функция Horner:

  • Horner [poly] — устанавливает полином poly в форму Горнера;
  • Horner [poly, vars] — устанавливает полином ряда переменных vars в форму Горнера.

Примеры преобразования полиномов в схему Горнера:
<<NumericalMath`Horner`
Horner[ 11 х^3 -4 х^2 + 7 х + 2 ]
2+ х (7 + х (-4 + 11х))
Horner[ а х^3 + bх^2 + с х + d, х ]
d+ х (с + х (b + ах))
Horner[ х^(1/3) + х + х^(3/2) ]
Схема Горнера может использоваться и для отношения полиномов:
Horner [polyl/poly2] и Horner [polyl/poly2, varsl,vars2] .
Эти функции можно использовать для улучшенного представления аппроксимации Паде, что демонстрирует следующий пример:
<<Calculus ` Fade`
approx = Padef Exp[Log[x] -х] , {х, 0, 3, 2}]]
Horner[ approx ]

Переход к схеме Горнера дает ряд преимуществ перед обычным вычислением полиномов: уменьшается время вычислений, повышается их точность, уменьшается вероятность расхождения численных методов, в которых используются полиномы. В системе Mathematica 3 подпакет Corner находился в пакете расширения NumberMath, что было не вполне логично.