Записи с меткой «множества»

Установка аргумента цвета — ArgColor

Установка аргумента цвета — ArgColor
 
При построении графиков в полярной системе координат полезно использовать цвет, зависящий от фазы комплексного числа. Для этого в подпакете ArgColor служат следующие функции:

  • ArgColor [z] — дает цвет, определяемый фазой комплексного аргумента z;
  • ArgShade [ z ] — дает уровень серого цвета, определяемый фазой комплексного аргумента z.

Действие функции ArgShade иллюстрирует показанный например. Он строит 12 расположенных по окружности кругов с разной степенью окраски (от белого до черного) с помощью функции ArgShade.
Заменив в этом программном модуле функцию ArgShade на ArgColor, вы сможете наблюдать окраску кругов разными цветами. далее…

Работа с простыми числами-PrimeQ

Работа с простыми числами-PrimeQ
В подпакете PrimeQ в дополнение к функции ядра PrimeQ [n] имеется ряд функций для работы с простыми числами:

  • ProvablePrimeQ [n] — возвращает True, если п проверено на простоту, и False в ином случае;
  • PrimeQCertif icate [n] — возвращает сертификат о том, что n— простое или композитное число;
  • ProvablePrimeQ [n, Certif icate->True] — возвращает сертификат, который может использоваться для проверки чисел на простоту;
  • PrimeQCertif icateCheck [check, n] — проверяет, удостоверяет ли сертификат check простоту или композитность п.

Следующие примеры показывают работу с простыми числами:
<<NumberTheory` PrimeQ`
PrimeQ[127]
True
ProvablePrimeQ[127]
True
PrimeQCertificate[127]
{127, 3, {2, {3, 2, {2}.}, {7, 3, {2, {3, 2, {2}}}}}}
ProvablePrimeQ[127, Certificate->True]
(True, {127, 3, {2, {3, 2, {2}}, {7, 3, {2, {3, 2, {2}}}}}}}
PrimeQCertificate[3511, SmallPrime -> 1000]
{{CertificatePrime -> 3511,
CertificatePoint->PointEC[2, 2467, 1447, 2135, 3511], Certif icateK-> 32, Certif icateM -> 3424,
CertificateNextPrime -*107, CertificateDiscriminant -> -7},
107, 2, {2, {53, 2, {2, {13, 2, {2, {3, 2, {2}}}}}}}}
 
Вычисление примитивных элементов — Primitive Element
Подпакет PrimitiveElement содержит всего одну функцию для вычисления примитивных элементов множественного алгебраического выражения:

  • PrimitiveElement [z, {а1„а2,…} ] — возвращает список {b, { f1, f2,…}}, где b — примитивный элемент расширения рациональных алгебраических чисел al, а2,… и f1, f 2,… — полином переменной z, представляющей al, a2, … как термы примитивного элемента.

Ее действие видно из следующего примера:
<<NumberTheory`PrimitiveElement`
PrimitiveElement[z, {Sqrt[2], Sqrt[3]}]
RootReduce[%[[2]] /. z -> %[[1]]]
 
Создание рядов Рамануджанат-Дирихле — Ramanujan
В подпакете Ramanujan определены следующие функции:

  • RamanujanTau [n] — n-й коэффициент ряда Рамануджана т-Дирйхле (т n );
  • RamanujanTauGeneratingFunction [z] — производящая функция ряда Рамануджана т-Дирихле;
  • RamanujanTauDirichletSeries [s] — ряд Рамануджана т-Дирихле f(s);
  • RamanujanTauTheta [t] — функция Рамануджана т-Дирихле o(t)
  • RamanujanTauZ [t] — функция Рамануджана т-Дирихле z(t).

Это довольно редкие функции, представляющие интерес для специалистов в теории чисел. Достаточно подробные их определения даны в справочной базе данных. Ограничимся приведением примеров их использования:
<<NumberTheory`Ramanujan`
RamanujanTau[5]
4830
Sum[RamanujanTau[n] z^n, {n, 5}]
z — 24 z2 + 252 z3 — 1472 z4 + 4830 z5
RamanujanTauGeneratingFunction[. 1]
0.00610209
RamanuJanTauGeneratingFunction[.99]
4.10287803703 x -1673
RamanujanTauDirichletSeries[6 + 9.221]
0.00040309-0.002390131
z = RamanujanTauZ[9.22]
0.00242388
theta = RamanujanTauTheta[9.22]
1.40372043366323 z Exp[-I theta]
0.00040309 — 0.00239013 I
 
Рационализация чисел — Rationalize
Подпакет Rationalize расширяет возможности представления чисел в рациональном виде. Он содержит определения следующих функций:

  • ProjectiveRationalize [ {х0, xl,…, хn} ] — возвращает список целых чисел, дающих рациональные представления для чисел заданного списка;
  • ProjectiveRationalize [ {х0, xl,…, хn} ,ргес] — возвращает список целых чисел, дающих рациональные представления с погрешностью не более 10- рreк
  • Af f ineRationalize [ {х0, xl,…, хn} ] — возвращает список рациональных приближений для чисел заданного списка;
  • Aff ineRationalize [ {х0, xl,…, xn} ,prec] — возвращает список рациональных приближений для чисел заданного списка, вычисленных с погрешностью не более 10- ргес .

Встроенная в ядро функция Rationalize дает рациональное представление для одиночных вещественных чисел. далее…

Условные выражения и безусловные переходы

Условные выражения и безусловные переходы
Для подготовки полноценных программ помимо средств организации циклов необходимы и средства для создания разветвляющихся программ произвольной структуры. Обычно они реализуются с помощью условных выражений, позволяющих в зависимости от выполнения или невыполнения некоторого условия (condition) выполнять те или иные фрагменты программ.
Функция IF
Как у большинства языков программирования, условные выражения задаются с помощью оператора или функции IF. Система Mathematica имеет функцию If, формы которой представлены ниже:

  • If [condition, t, f] — возвращает t, если результатом вычисления condition является True, и f, если результат равен False;
  • If [condition, t, f, u ]—то же, но дает и, если в результате вычисления condition не было получено ни True, ни False.

Следующий пример показывает создание программной процедуры с циклом Do, выход из которой реализуется с помощью функции I f и директивы прерывания Aborted! ]:
х := 1; Print["i x"];
Do[{If [i == 5, Abort[], None],
i += 1; x += 2*i; Print[i, " ", N[x]]},
{i, 1, 100}]
i x
2 5
3 11.
4 19.
5 29.
$Aborted
Return[x]
Return[1]
Тот же пример, но с применением директивы выхода из цикла Break [] в функции If показан ниже:
х := 1; Print["i x"];
Do[{If [i == 5, Break[], None],
i += 1; x += 2*i; Print[i, " ", N[x]]},
{i, 1, 100}]
i x
2 5.
3 11.
4 19.
5 29.
Return[x]
Return[29]
В данном случае никаких специальных сообщений о выходе из цикла не выдается. Функция If обеспечивает ветвление максимум по двум ветвям программы. далее…