![]() |
![]() |
![]() |
Пакет алгебраических функций Algebra
Пакет расширения
Algebra содержит ряд новых функций для работы с неравенствами, ограниченными
полями и полиномами. Для доступа сразу ко всем функциям пакета используется
команда «Algebra`.
Загрузка
отдельных функций показана в примерах использования этого пакета, описанных
ниже.
До сих пор
мы сталкивались с решениями уравнений, представленных равенствами. Пакет Algebra
дает важное дополнение в виде функций, обеспечивающих работу с неравенствами.
Прежде всего это функция SemialgebraicCompo-nents [ineqs,
vars], которая
определят комплект решений неравенств ineqs по переменной
vars.
Приведенные
ниже примеры иллюстрируют работу данной функции:
<<Algebra`Algebraiclnequalities`
SemialgebraicComponents[{х
(х^2 - 1) (х^3 - 2) > 1}, х]
{-3, 3}
SemialgebraicComponents[{х
+ у
^
2 < 5, х/у > 1}, {х, у}]
SanialgebraicCarpanents[(x+у
2
< 5, — x/y>1}, {х, у}]
SemialgebraicComponents[{х
^
2
+ у
^
2 < 5, х у > 0}, {х, у}]
{{-3/16,-3/16},{3/16,3/16}}
SemialgebraicComponents[{x
^
2
+ y
^
2/4 + z
^
2/9 > 1, х
^
2 + (у - 1)
^
2
+ (2- 2)
^
2 < 0}, {х, у, z}]
{}
Для решения
неравенства служит функция InequalitySolve [expr, var], которая решает неравенство
ехрг относительно переменной var.
Следующие
примеры иллюстрируют применение данной функции:
<<Algebra` InequalitySolve`
InequalitySolve
[х (х^2- 5) (х^2- 6) > 0, х]
-sqrt(6) <х<-sqrt(5)
| | 0<х<sqrt(6)| | х>7sqrt(6)
InequalitySolve[x^2/Abs[х-
2] >= 0 && 1/х < х + 1, х]
-1/2(1-sqrt(5)<x<0|
| 1/2(-1+sqrt(5)<x<2| | x>2
Функции для представления комплексных данных — Relm
Подпакет
Relm обеспечивает переназначение функций комплексной переменно!! для более корректной
их работы:
<<Algebra`ReIm`
Re[l/x+l/y]
Re[x]/(Im[x]2+Re[x]2 )+ Re[y]/(
Iim[y]2+Re[y]2)
Re[(z + I)^3
+ Exp[I z]]
E[mz] Cos[Re[z]] -2 (1+ Im[z])2Re[z] +
Re[z] (-(1+ Im[z])2+Re[z]2)
Im[x] ^=
0; RealValued[f, g]
{f, g)
Im[l/(l-
I f[x] g[x])]
f [x] g[x]/(1+ f[x]2g[x]2 )
Im[Sin[a]]
Cos[Re[a]] Sinh[Tm[a]]
Операции в конечных полях — FiniteFields
Поле является
алгебраическим понятием, которое может быть определено как множество, имеющее
не менее двух элементов, над которыми заданы две бинарные ассоциативные и коммутативные
операции — сложения и умножения. Кроме того, для существования поля нужны два
особых элемента — нуль 0, задающий правило сложения а + 0 = а, и
единица 1 для задания правила умножения а*1 = 1. Определено также понятие
противоположного элемента -а, такого что а + (-а) = 0, и обратного элемента
а--
1
, такого что a-
1
а = 1. Поле характеризуется
размером р и целым положительным целым d, называемым степенью
расширения.
Пакет задает
набор функций GF[p] [{k}], GF[p,l] [{k}], GF[p, {0,1}] [{k}], GF[p,d]
HGF[p,ilist] [elist], действие которых иллюстрируют следующие примеры:
<<Algebra` FiniteFields`
GF[7][4]
+ GF[7][6]
{3}7
GF[3,4][1,2,1] GF[3,4][2,2,2,0]
{1, 1, 2,
0}3 GF[5,1][1] + GF[3,4][1,1,1]
{1, 1, 1, 0}3+
(1)5
Вряд ли подробное
их описание заинтересует большинство читателей. Специалистов по полям не затруднит
более детальное знакомство с этими функциями в разделе Add-ons справочной базы
данных. Там же можно найти описание ряда других функций, относящихся к теории
конечных полей.
Оценка интервалов изоляции корней полиномов — Rootlsolation
Следующие
функции подпакета Rootlsotation позволяют оценивать интервалы изоляции для
действительных и комплексных корней полиномов:
Применение
этих функций поясняют следующие примеры:
<<Algebra`Rootlsolation`
f = (x^2-
1) (х^2- 3) (х^2- 5); CountRoots [f, {x, 1, 2}]
1
CountRoots[(х^2+2)
х^4, {х, -I, 2 I}]
5
CountRoots[х^21-
1, {х, 0, 5 + 10*1}]
5
RealRootlntervals[f]
{{-4, -2}, {-2,.-1},
{-1, -1}, {1, 1}, {1, 2}, {2, 4}}
ComplexRootlntervals[f+5]
{{-1, 0}, {0,
1}, {-7-71, -7/4}, {-7, -7/4 + 7I},
{-7/4, -7I
+ 7/2}, {-7/4, -7/2 + 7I}}
ComplexRootlntervals[x^3,
x^5+l]
{{{-2, 0}, {0,
0),
{-3-31, 0},
{-3, 31}, {-31, 3), {0, 3+31}}, {2, 1, 2, 2, 2, 2}}
Contractlnterval[Root[x^7-
1, 5], 5]
{ 58333/262144 + 511143I/ 524288+ 116665/524288+ 63893I/65536}
N[%]
{-0.222523+ 0.9749281,
-0.222521 + 0.974931}
Если конечные поля — понятие
достаточно экзотическое, то полиномы встреча-
ются сплошь и рядом во многих математических и научно-технических расчетах.
В пакете расширения Algebra определен ряд новых операций над полиномами.
Начнем их рассмотрение с функции
PolynomialExtendedGCD:
Примеры применения этой
функции приведены ниже:
<<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 с, что дает нулевой результат.
Еще одна функция в трех
ее модификациях работает с симметричными полиномами:
Следующий
пример поясняет создание симметричного полинома 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 4 реализует хорошо известную схему вычисления полиномов
— схему Горнера. При ней операции возведения в степень заменяются операциями
умножения. Для этого служит функция Horner:
Примеры преобразования
полиномов в схему Горнера:
<<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, что было не вполне
логично.