Записи с меткой «приведенные»

Пакет генерации кодов codegen

Пакет генерации кодов codegen
Пакет codegen представляет собой набор команд, предназначенных для организации взаимодействия системы Maple 15 с другими программными средствами:
> with(codegen);
[С, GRAD, GRADIENT, HESSIAN, JACOB1AN, cost, declare, dontreturn, eqnjortran, homer, intrep2maple,joinprocs, makeglobal, makeparam, makeproc, makevoid, maple2intrep, optim ize, packargs, packlocals, packparams, prep2trans, renamevar, split, swapargs ]
Этот пакет очень полезен программистам, занимающимся разработкой сложных программных комплексов. Пакет позволяет создавать процедуры на языке Maple 15 и транслировать их в программные модули, записанные на других языках программирования, таких как Фортран или Си.
Пакет создания контекстных меню context
Пакет context служит для создания контекстных меню. Он содержит небольшое число функций:
> with(context):
[buildcontext, clearlabels, defaultcontext,
display, installcontext, restoredefault, 
testactions, troubleshoot]
Этот пакет используется довольно редко и в основном пользователями, решающими в среде Maple не вычислительные, а системные задачи. Описание таких задач выходит за рамки данной книги.
Пакет организации многопроцессорной работы process )
Этот узкоспециализированный пакет содержит ряд функций по организации работы на нескольких процессорах:
> with(process):
[block, ey.ec, fork, kill, pclose, pipe, popen, wait ]
Данные функции представляют интерес для пользователей операционной системы UNIX, так что в проблематику данной книги не входят.
Новые пакеты системы Maple 15
Пакет поддержки вычислений с размерными величинами Units
При выполнении большинства вычислений рекомендуется использовать безразмерные величины. Однако в некоторых областях науки и техники, например в физике, широко используются размерные величины, у которых помимо их значения указываются единицы измерения. Довольно развитую поддержку таких расчетов обеспечивает новый пакет расширения системы Maple 15 — Units. далее…

Пакет Domains

Пакет Domains
Этот небольшой пакет служит для создания доменов — таблиц операций для вычислений. При его загрузке появляется сообщение о переопределениях объектов и список из всего лишь шести функций:
>restart;with(Domains):
 Domains version 1.0
Initially defined domains are Z and Q the integers and rationale Abbreviations, e.g. DUP for DenseUnivariatePolynomial,                  also made Warning, the protected names Array,                        Matrix and Vector have been redefined and unprotected               [Array, Matrix, Matrixlnverse, Vector, init, show]
Пакет допускает применение следующих конструкций:
 Domains[domain]     Doma1ns[evaldomains]
  Domains[example]    Domains[coding]
Приведенный ниже пример поясняет создание и использование доменов Q (для рациональных
данных) и Z (для целочисленных данных):
> Q[‘+’](l/2,2/5,3/8);
51/40
> Z[Gcd](660,130); 
10
Следующая операция показывает, что домен Z является таблицей: 
> type(Z,table);
true
А функция show позволяет вывести полный перечень всех операций, доступных для домена Z:
> show(Z,operations);
Signatures for constructor Z’ 
note: operations prefixed by — are not available
*: (Integers,Z) ->Z
* :(Z,Z*) ->Z 
+ :(Z,Z*) ->Z
-: (Z,Z) -> Z’
— :Z ->Z
0:Z
1:Z
< :(Z,Z) -> Boolean
<= : (Z.Z) -> Boolean 
<> : (Z.Z) -> Boolean
=:(Z.Z) -> Boolean 
>: (Z.Z) -> Boolean 
>-: (Z.Z) -> Boolean
Abs : Z ->Z
Characteristic : Integers
Coerce : Integers-> Z
 Div : (Z.Z) -> Union(Z,.FAIL)
EuclideanNorm : Z -> Integers 
Factor : Z -> [Z,.[[Z,Integers]*]]
Gcd : Z* -> Z 
Gcdex : (Z,Z,Name) ->Z 
Gcdex : (Z,.Z,Name,Name) -> Z
Input : Expression -> Union(Z,.FAIL)
 Inv : Z -> Union(Z,FAIL)
Lcm : Z* -> Z
Max : (Z,Z*) -> Z
Min : (Z,.Z*)-> Z
Modp : (Z,.Z) ->Z
Mods : (Z.Z)—> Z
ModularHoraomorphlsm : () -> (Z -> Z.Z)’
Normal : Z -> Z
Output : Z -> Expression
Powmod : (Z,Integers,Z) -> Z
Prime : Z -> Boolean
Quo : (Z,.Z,Name) ->Z
Quo : (Z,.Z) -> Z
Random : О ->Z
RelativelyPrime : (Z,.Z) -> Boolean’
Rem : (Z,.Z,.Name)-> Z
Rera : (Z,Z) -> Z
Sign : Z -> UNIONU,.-l,0)
SmallerEuclideanNorm : (Z,.Z) -> Boolean
Sqrfree : Z ->[Z,.[[Z,.Integers]*]]
Type : Expression -> ‘Boolean’
Unit : Z -> Z
UnitNormal : Z -> [Z,.Z,.Z]
Zero : Z -> Boolean
^ : (Z,Integers) -> Z.
Домены позволяют передавать в качестве параметра процедур набор функций в виде единого целою, что и объясняет название этих объектов. Предполагается, что это может привести к заметному сокращению кодов программ вычислений в будущих реализациях системы Maple. Пока же возможности доменов скорее выглядят как очередная экзотика, чем как реальное средство для оптимизации вычислений. Потребуется время, чтобы показать, что это не так.
Обзор пакетов узкого назначения
Мы уже не раз обращали внимание читателя на выборочный характер описания системы Maple 15 в данной книге. Хотя она и является одной из самых полных книг по данной системе, книга не претендует на роль детального справочника по Maple 15: Более того, такого справочника в виде книги нет и, вероятно, учитывая быстрые темпы модернизации программы, так и не будет. Для подобного описания Maple пришлось бы подготовить многотомное издание, охватывающее практически все области математики. далее…

Статистические расчеты

Статистические расчеты

  • Статистические расчеты — пакет Statistics
  • Построение гистограмм
  • Статистика распределен и и
  • Статистическая обработка данных
  • Сглаживание данных
  • Регрессия различного вида

В ядре системы Mathematica практически нет статистических функций. Зато пакет расширения Statistics дает сотни функций, охватывающих практически все разделы теоретической и прикладной статистики. Тем не менее, вопрос о привлечении универсальных математических систем к выполнению серьезных математических расчетов является спорным из-за существования множества специальных статистических компьютерных систем, таких как Statistica, StatGraphics и т. д.
Большинство специализированных статистических программ предлагают специальный интерфейс, базирующийся на обработке табличных данных большого объема, реализуют многовариантный расчет необходимых статистических параметров (например, регрессию сразу по десяткам формул) и отсев заведомо ошибочных данных. Поэтому при статистических расчетах применение подобных программ предпочтительно.
Статистические расчеты— пакет Statistics
 
Учитывая ограниченный объем книги и приведенные выше обстоятельства, данный раздел не содержит исчерпывающего описания всех сотен функций расширения Statiatics, а лишь дает обзор этого пакета с описанием наиболее часто используемых средств статистики, относящихся к обработке данных. далее…

Численное вычисление остатка — N Residue

Численное вычисление остатка — N Residue
В подпакете NResidue имеется функция вычисления остатка NResidue [expr, {x, x0} ] в точке х=х0:
<<NumericalMath` NResidue`
NResidue[1/z, {z, 0}]
1. + 6.35614x 10-18 I
Residue[f, {z, 1.7}]
0
NResidue[f, {z, 1.7}]
0.259067 — 1.9353xl0-17I
l/((z+.2+.5 I)(z+.2-.5 I)) /. z -> 1.7
0.259067 + 0. I
Options[NResidue]
Обратите внимание на возможные опции для этой функции в последнем примере.
Численное разложение в ряд — NSeries
Подпакет NSeries вводит функцию NSeries [f, {x,xO,n}], которая дает численный ряд, аппроксимирующий функцию f(x) в окрестности точки х = х 0 , включая термы от (х -х 0 ) -n до (х — х 0 ) п .
Примеры применения данной функции:
<<NumericalMath`NSeries`
NSeries[Sin[х], {х, -2, 2}]
Rationalize[Chop[%]]
Rationalize[Chop[NSeries[Log[x], {x, 1, 5}, Radius -> 1/8]]]
Rationalize[Chop[NSeries[Exp[x], {x, 0, 5},
WorkingPrecision -> 40, Radius -> 1/8]]]
Rationalize[Chop[NSeries[Exp[x], {x, 0, 5}, Radius -> 4]]]
Chop[NSeries[Zeta[s], {s, 1, 3}]]
 
Вычисление коэффициентов формулы интегрирования Ньютона—Котесса — NewtonCotes
Функция NIntegrate, имеющаяся в ядре системы Mathematica, реализует метод интегрирования Гаусса—Кронрода. Еще одним известным методом интегрирования является метод Ньютона—Котесса, сводящий интегрирование к вычислению взвешенных ординат функции в равномерно расположенных точках оси абсцисс. Для реализации метода используются следующие функции:

  • NewtonCotesWeights [n, a, b] — возвращает список весовых коэффициентов и абсцисс узловых точек {wi, xi} для квадратуры Ньютона—Котесса на интервале от а до b;
  • NewtonCotesError [n, f, a, b] — возвращает погрешность формулы Ньютона—Котесса для заданной функции f.

Примеры применения этих функций представлены ниже:
<<NumericalMath` NewtonCotes`
NewtonCotesWeights[5, 0, 10]
NewtonCotesError[5, f, 0, 10]
NewtonCotesError[5, f, a, a+h]
NewtonCotesWeights[5, -0, 10, QuadratureType -> Open]
NewtonCotesError[5, f, 0, 10, QuadratureType -> Open]

Обратите внимание на то, что приведенные формулы готовят данные для численного интегрирования методом Ньютона—Котесса, но не выполняют самого интегрирования.

Тета-функция Зигеля

Тета-функция Зигеля
Подпакет SiegelTheta содержит еще одну редкую функцию:

  • SiegelTheta [z, s] — возвращает значение тета-функции Зигеля Q(Z, s).

Примеры вычисления этой функции даны ниже:
<< NumberTheory` SiegelTheta`
SiegelTheta[{1+1,2+1}, {2+1,-1+41}, {1.2, 2.3+.3I}]
0.973715-0.0002970481
Sum[E^(Pi I {tl,t2}.{ {1+1,2+1}, {2+1, -1+41} }.{tl,,t2} +
2 Pi I {tl,t2}.{l.2,2.3+.31}), {tl,-10,10>, {t2,-10,10}]
0.973715 — 0.000297048 I
В заключительной части этого примера дано вычисление тета-функции Зигеля по ее исходному определению.
Численные расчеты — пакет NumericalMath
 
Пакет расширения NumericalMath содержит множество полезных функций для тех, кто имеет дело с численными расчетами. В их числе функции для выполнения высокоточных аппроксимаций рациональными функциями, численного интегрирования и дифференцирования, вычисления пределов функций, решения уравнений, разложения в ряд и т. д. Ниже описано подавляющее большинство функций этого расширения. Исключены лишь отдельные функции, представляющие ограниченный интерес и несложные для самостоятельного изучения (в подпаке-mах Butcher, Microscope и ComputerArithmetic).
Аппроксимация аналитических функций — Approximations
Подпакет Approximations содержит ряд функций для улучшенной рациональной аппроксимации аналитических функций. Для рациональной интерполяции и аппроксимации функций по заданным значениям абсцисс служит следующая функция:

  • Rationallnterpolation [f, {x,m, k}, {x 1 , x 2 , …,.x m+k+1 } ] — возвращает аппроксимирующее функцию f выражение в виде отношения полиномов а степенью полинома числителя m и знаменателя k в абсциссах, заданных списком {x l ,x 2 ,…,x m+jt+1 }.

Пример применения этой функции:
<<NumericalMath `Approximations`
ril = Rationallnterpolation[ Exp[x], {х, 2, 4}, {0, 1/3, 2/3, 1, 4/3, 5/3, 2}]
Построим график погрешности аппроксимации, то есть график разности функ ии ril и Ехр [х] — он представлен.
Нетрудно заметить, что если в центральной части области аппроксимации погрешность мала (менее 5-10- 7 ), то у правого края она резко возрастает.
Представленная функция может использоваться и в иной форме:
Rationallnterpolation[f,{х, m, k},{x, xmin, xmax}]
В данном случае выбор абсцисс осуществляется автоматически в интервале от xmin до mах. В отличие от первого случая, когда абсциссы могли быть расположены неравномерно, в данном случае расположение их будет равномерным. Приведем пример аппроксимации функции синуса в интервале от n до n:
ri2 = RationalInterpolation[Sin[x],{x,3,4},{x,-Pi,Pi}]
Интересно оценить погрешность аппроксимации. далее…

Работа с простыми числами-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 дает рациональное представление для одиночных вещественных чисел. далее…