Warning: include(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include_once(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82

Warning: include_once(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82
вещественного | Учебники

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

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

Функция полного упрощения FullSimplify

Функция полного упрощения FullSimplify
Функция FullSimplify, область применения которой в Mathematica 8 заметно расширена, обладает заметно большими возможностями, чем функция Simplify. В частности, она обеспечивает упрощение выражений, содержащих специальные математические функции:
Simplify [Gamma [х] *х* (х+1) * (х+2) * (х+n) ]
х(1+х) (2 + х) (n+x) Garrma[x]
FullSimplify [Gamma [х] *х* (х+1) * (х+2) * (х+n) ]
(п+ х) Garrma[3 + х]
Simplify[Tan[x] , ComplexityFunction-> (Count[{#l}, _Tan, \ [Infinity]]*;)]
Tan[x]
FullSimplify [Tan [x] , ComplexityFunction -> (Count[{#l}, _Tan,
\ [Infinity]] &)]
Как видно из этих примеров, функция FullSimplify обеспечивает упрощение даже в том случае, когда функция Simplify пасует. Неплохо упрощаются тригонометрические функции, особенно при использовании опции Complexity-Function, подсказывающей путь упрощения.
В то же время нельзя не отметить, что теоретический фундамент упрощения выражений находится лишь в начале своего возведения, так что не стоит удивляться, если отдельные выражения не будут упрощаться — даже в том случае, когда это в принципе возможно. Более того, с позиций истинного математика функции Simplify и FullSimplify делают не совсем понятно что. Тем не менее, часто эти функции позволяют получить вполне приемлемую, хотя вовсе не единственную и не самую простую форму упрощаемого выражения.
Раскрытие и расширение выражений — функции класса Expand
Расширение, или раскрытие, выражений — еще одна типовая операция компьютерной алгебры. далее…

Другие манипуляции с выражениями

Другие манипуляции с выражениями
В процессе преобразования выражений с ними возможны и иные манипуляции. Наиболее важные из них выполняются следующими функциями:

  • Append [expr, elem] — возвращает ехрг с дополнением elem;
  • AppendTo [s, elem] — добавляет elem к значению s и присваивает s новое значение;
  • Apply [f, expr, levelspec] — возвращает ехрг, замещая заголовки в тех частях ехрг, которые указаны спецификацией уровня levelspec;
  • Cancel [expr] — возвращает ехрг с сокращением общих множителей числителя и знаменателя;
  • Cases [expr, pattern, levelspec] — возвращает список всех частей выражения expr на уровнях, указанных спецификацией levelspec, которые соответствуют шаблону pattern;
  • Chop [expr] — присваивает значение 0 тем приближенным вещественным числам в выражении expr, абсолютные величины которых меньше 10 -10 ;
  • Chop [expr, tol ] — присваивает значение 0 тем приближенным вещественным числам в выражении expr, абсолютные величины которых меньше tol;
  • Replace [expr, rules] — возвращает expr с подстановкой, заданной правилом или списком правил rules;
  • ReplaceAll — используется в виде expr /. rules и возвращает expr с подстановками, заданными правилом или списком правил rules;
  • ReplacePart [expr, new, n] — возвращает выражение, в котором п-я часть expr заменена на new;
  • ReplacePart [expr, new, {i, j,…}] — заменяет на new часть в позиции {i, j,…};
  • ReplacePart [expr, new, {{il, jl,…}, {i2, j 2 ,…},…}] — заменяет на new части в нескольких позициях выражения;
  • ReplaceRepeated — применяется в виде expr //. rules и неоднократно выполняет замещения до тех пор, пока expr не перестанет изменяться.

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

Ввод (In)

Вывод (Out)

Append [a + с, b]

a+ b+ с

х = {а, b, с}

{a, b, c}

AppendTo [ х , 15 ]

{a, b, c, 15}

x

{a, b, c, 15}

Apply[f, а А 2 + b ^ 2, 2]

f[a, 2] +f[b, 2]

Cancel [(z-1) ^ 2/ (z — 1) ]

-1 + Z

Cases[{a, 3.5, 2, 5, "HELLO"}, _Integer]

{2, 5}

Exp[N[-лI]]

-1. — 1. 22461 x 10 -16 I

Chop[%]

-1.

Ехр[N[-лI]]

-1. — 1. 22461 x10 16 I

Chop[%, 1*10^-10]

-1.

Replace[s ^ 2, s ^ 2 -> a]

a

s^2 /. s -> a

a 2

Заинтересованному в таких манипуляциях читателю рекомендуется просмотреть множество примеров, имеющихся в справочной системе Mathematica, и, разумеется, попробовать свои собственные примеры.
Контроль выражении
При создании программного обеспечения на языке Mathematica, а иногда и в ходе диалоговой работы с системой необходим контроль за некоторыми свойствами выражений. Следующие функции обеспечивают такой контроль:

  • AtomQ [expr] — возвращает True, если выражение ехрг не может быть разложено на подвыражения и является атомарным, и возвращает False в противном случае;
  • FreeQ [expr, form] — возвращает значение True, если в выражении ехрr отсутствует подвыражение, совпадающее с form, в противном случае возвращает False;
  • FreeQ[expr, form, levelspec] — тестирует только части выражения на уровнях, указанных levelspec.

Следующие примеры показывают действие этих функций.

далее…

Вычисление сумм в численном виде

Вычисление сумм в численном виде
Для вычисления сумм в численном виде используются следующие функции:

  • NSum[f, {i, imin, imax }]— возвращает численное значение суммы f [ i ] при i, изменяющемся от imin до imax с шагом +1;
  • NSumff, {i, imin, imax, di }]— возвращает сумму численных значений функции f [i] при i, изменяющемся от imin до imax с шагом di;
  • NSum[f, {i, imin, imax}, {j, jmin, j max },…]— выполняет многомерное суммирование. Функция NSum[… ] эквивалентна выражению N[Sum[…] ].

Особенностью этой функции является возможность использования ряда опций, управляющих вычислительным процессом. Одной из них является NSumTerms, задающая число членов, которые явно должны быть включены в сумму перед экстраполяцией. Вы можете просмотреть список опций, используя команду Options [NSum] . 
Пример применения функции NSum представлен ниже:
NSum[1/i3, {i, 1, бесконечность}]
1.20206
Пример точного вычисления суммы (для сравнения) с помощью функции Sum:
truesum = Sum [1+k/ 2k k/ 3k{k, 1, 50}
1818632874295681087853745424762603034467 / 808281277464764060643139600456536293376
N[%]
2.25
Пример вычисления той же суммы с помощью функции NSum с опциями:
NSum [ 1+k/ 2 k -3k, {k, 1, 50}, Method -> SequenceLimit,
NSumTerms -> 2 , NSumExtraTerms -> 4 ] — truesum
0.0530365
При следующем наборе опций результат еще лучше:
NSum [ 1+k/ 2 k -3k, {k, 1, 50}, Method -> SequenceLimit, WorkingPrecision -> 30 , NSumTerms -> 2 ,
NSumExtraTerms -> 10, WynnDegree -> 4] — truesum
0.x10-26
Функция вычисления суммы NSum выполняется заметно быстрее, чем функция Sum, хотя на практике заметить это трудно — все приведенные выше примеры выполняются за доли секунды. Возвращаемый функцией NSum результат вещественный.
 
Вычисление произведений
 
Вычисление произведений в аналитическом виде
Операции вычисления произведений
Произведение от i=imin до i=imax по fi представлены следующими функциями:

  • Product [f, {i, imax}] — возвращает произведения значений f [i] для значений i, изменяющихся от 1 до imax;
  • Product [f, {i, imin, imax}]—возвращает произведение значений f [ i ] при изменении i от imin до imax с шагом +1;
  • Product[f, {i, imin, imax, di}] — возвращает произведение f [ i ] при i, меняющемся от значения imin до значения imax с шагом di;
  • Product [f, {i, imin, imax}, {j, jmin, jmax},…] — вычисляет многократное произведение (произведение по нескольким переменным).

Примеры использования функций вычисления произведения.

Ввод (In)

Вывод (Out)

Product [i,{i ,10}]

3628800

NProduct [k ^ 2,{k, 1,5}]

14400.

NProduct[i ^ 2, {1,1,2,0. 2}]

93.6405

Product [Logfi], {±,2,5,0.5}]

4.23201 Log[2]

Следующий пример иллюстрирует вычисление произведения в символьном виде:
Произведение (x+i2) , где i=1…5
(1+х) (4 + х) (9 + х) (16 + х) (25 + х)
Об опасности перестановки сомножителей свидетельствуют следующие примеры: Product [i, i,l, 10] 3628800
Product [i,i, 10,1]
1
Product[i,i,10,l,-l]
3628800
Как и в случае вычисления суммы, средний пример явно ошибочен. далее…

Основные арифметические функции

Основные арифметические функции
Для выполнения арифметических действий в системах Mathematica 3/4 определены следующие арифметические функции:

  • Divide [х, у] — возвращает результат деления х на у эквивалентно выражению х у ^ -1;
  • Plus[x, у,…] — возвращает сумму элементов списка;
  • PowerModta, b, n] — возвращает Mod[a ^ b, n]. Для b<0 возвращает инверсию остатка;
  • Times [х, у,…] — возвращает произведение аргументов х*у*…;
  • Mod [m, n] — возвращает остаток от деления m на п. Результат имеет такой же знак, как п.

Ниже представлены примеры применения арифметических функций.

Ввод (In)

Вывод (Out)

Divide [1. ,3]

0.333333

Mod [123, 20]

3

Mod [123, -20]

-17

Mod[-123,20]

17

Plus[2,3,4]

9

Times [2, 3,4]

24

Для обмена значениями переменных х и у можно использовать выражение {х,у}={у,х}
 Пример обмена переменных значениями:
а=1;b=2;
{а,b}={b,а};
{а,b}
{2, 1}
Следующие функции служат для приведения вещественных чисел к ближайшим целым по определенным правилам:

  • Ceiling [х] — возвращает значение наименьшего целого числа, большего или равного х;
  • Floor [х] — возвращает наибольшее целое число, не превышающее данного х;
  • Quotient [n, m] — возвращает целое значение n/m, определяемое как Floor[n/m];
  • Round [х] — округляет х до ближайшего целого.

Хотя аргументами этих функций указано значение х, под ним можно понимать список вещественных чисел. Следующие примеры поясняют это и наглядно иллюстрируют правила приведения к целым числам.

Ввод (In)

Вывод (Out)

Ceiling [{-5. 9, -5..1, 5, 5.1, 5.9}]

{-5, -5, 5, б, 6}

Floor [{-5. 9, -5.1,, 5, 5.1, 5.9}]

{-6, -6, 5, 5, 5}

Round[{-5.9, -5.1,, 5, 5.1, 5.9}]

{-6, -5, 5, 5, 6}

Ряд функций обеспечивает нахождение делителей целых чисел и наименьшего общего -кратного:

  • Divisors [n] — возвращает список целочисленных делителей числа п;
  • DivisorSigma [k, n] — возвращает сумму &-х степеней положительных делителей числа п;
  • ExtendedGCD [n, m] — возвращает расширенный наибольший общий делитель целых чисел пит;
  • GCD [nl,n2,…] — возвращает наибольший общий делитель целых чисел ni;
  • LCM[nl, n2,…] — возвращает наименьшее общее кратное целых чисел ni.

Ниже представлены примеры применения этих функций.

Ввод (In)

Вывод (Out)

LCM[124,12,6]

372

GCD [144, 12, 6]

6

Divisors [123]

{1,3,41,123}

DivisorSigma [17,3]

129140164

ExtendedGCD [144,12]

{12, {0,1}}

К целочисленным функциям можно отнести также функции вычисления факториала и двойного факториала:

  • Factorial [n] или n! — возвращает значение факториала числа n (n!=n* (n-1) *…*3*2*1, причем 0 !=1 и 1 !=1);
  • Factorial2 [n] или n! ! — возвращает значение двойного факториала числа п, равное п* (n-2) * (n-4) *…«%»

Ниже представлены примеры вычисления факториалов.

Ввод (In)

Вывод (Out)

Factorial [10]

3628800

20!

2432902008176640000

10!!

3840

20!//N

2.4329Х10 18

Mathematica способна вычислять факториалы больших чисел. Практически мгновенно (даже на компьютере с 486-м процессором) вычисляются значения до 1000!, хотя результат при этом занимает несколько страниц на экране дисплея. Можно вычислить даже 10000!, но для этого потребуется время до нескольких минут (зависит от типа компьютера). Обратите внимание на то, что управляющий символ //N за выражением дает вывод (аппроксимацию) в форме научной нотации. далее…