Previous: Теория чисел, Up: Теория чисел [Contents][Index]
Возвращает n-е число Бернулли для целого n.
Числа Бернулли, равные нулю, опускаются, если zerobern
равно false
.
См. также burn
.
(%i1) zerobern: true$ (%i2) map (bern, [0, 1, 2, 3, 4, 5, 6, 7, 8]); 1 1 1 1 1 (%o2) [1, - -, -, 0, - --, 0, --, 0, - --] 2 6 30 42 30 (%i3) zerobern: false$ (%i4) map (bern, [0, 1, 2, 3, 4, 5, 6, 7, 8]); 1 1 1 5 691 7 3617 43867 (%o4) [1, - -, -, - --, --, - ----, -, - ----, -----] 2 6 30 66 2730 6 510 798
Возвращает значение многочлена Бернулли порядка n в точке x.
Возвращает дзэта-функцию Римана для аргумента s. Возвращаемое значение - число с плавающей точкой повышенной точности (bfloat); n - количество цифр в возвращаемом значении.
Возвращает дзэта-функцию Гурвица для аргументов s и h. Возвращаемое значение - число с плавающей точкой повышенной точности (bfloat); n - количество цифр в возвращаемом значении. Дзэта-функция Гурвица определяется как
sum ((k+h)^-s, k, 0, inf)
Функцию загружает команда load ("bffac")
.
Биномиальный коэффициент x!/(y! (x - y)!)
.
Если x и y - целые, рассчитывается численное значение биномиального коэффициента. Если y или x - y - целое, биномиальный коэффициент выражается через многочлен.
Примеры:
(%i1) binomial (11, 7); (%o1) 330 (%i2) 11! / 7! / (11 - 7)!; (%o2) 330 (%i3) binomial (x, 7); (x - 6) (x - 5) (x - 4) (x - 3) (x - 2) (x - 1) x (%o3) ------------------------------------------------- 5040 (%i4) binomial (x + 7, x); (x + 1) (x + 2) (x + 3) (x + 4) (x + 5) (x + 6) (x + 7) (%o4) ------------------------------------------------------- 5040 (%i5) binomial (11, y); (%o5) binomial(11, y)
Возвращает n-е число Бернулли для целого n.
burn
может быть более эффективным, чем bern
для отдельных больших n
(возможно, если n больше 105 или в районе этого), так как bern
рассчитывает все
числа Бернулли до n-го перед выдачей результата.
burn
использует выражение чисел Бернулли через дзэта-функцию Римана.
Функцию загружает команда load ("bffac")
.
Преобразует expr в цепную дробь.
expr - выражение, составленное из цепных дробей и квадратных корней из целых чисел.
Операнды выражения могут комбинироваться арифметическими операторами. Помимо цепных дробей и
квадратных корней, сомножители выражения должны быть целыми или рациональными числами. Maxima
не работает с операциями над цепными дробями вне cf
.
cf
вычисляет аргументы после установки listarith
равной false
.
Цепная дробь a + 1/(b + 1/(c + ...))
представляется в виде списка [a, b, c, ...]
.
Элементы списка a
, b
, c
, ... должны раскрываться в целые числа.
expr может содержать sqrt (n)
, где n
- целое.
В этом случае cf
даст число членов цепной дроби, равное произведению
cflength
на период. Цепная дробь может раскрываться в число через арифметическое
представление, возвращенное cfdisrep
. См. также cfexpand
для другого способа
вычисления цепной дроби.
См. также cfdisrep
, cfexpand
и cflength
.
Примеры:
(%i1) cf ([5, 3, 1]*[11, 9, 7] + [3, 7]/[4, 3, 2]); (%o1) [59, 17, 2, 1, 1, 1, 27] (%i2) cf ((3/17)*[1, -2, 5]/sqrt(11) + (8/13)); (%o2) [0, 1, 1, 1, 3, 2, 1, 4, 1, 9, 1, 9, 2]
cflength
определяет число периодов цепной дроби, рассчитываемых для алгебраических
иррациональных чисел.
(%i1) cflength: 1$ (%i2) cf ((1 + sqrt(5))/2); (%o2) [1, 1, 1, 1, 2] (%i3) cflength: 2$ (%i4) cf ((1 + sqrt(5))/2); (%o4) [1, 1, 1, 1, 1, 1, 1, 2] (%i5) cflength: 3$ (%i6) cf ((1 + sqrt(5))/2); (%o6) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2]
cfdisrep
.
(%i1) cflength: 3$ (%i2) cfdisrep (cf (sqrt (3)))$ (%i3) ev (%, numer); (%o3) 1.731707317073171
cf
.
(%i1) cf ([1,1,1,1,1,2] * 3); (%o1) [4, 1, 5, 2] (%i2) cf ([1,1,1,1,1,2]) * 3; (%o2) [3, 3, 3, 3, 3, 6]
Возвращает простое выражение вида a + 1/(b + 1/(c + ...))
для списочного
представления цепной дроби [a, b, c, ...]
.
(%i1) cf ([1, 2, -3] + [1, -2, 1]); (%o1) [1, 1, 1, 2] (%i2) cfdisrep (%); 1 (%o2) 1 + --------- 1 1 + ----- 1 1 + - 2
Возвращает матрицу числителей и знаменателей последней (первый столбец) и предпоследней (второй столбец) подходящей дроби для цепной дроби x.
(%i1) cf (rat (ev (%pi, numer))); `rat' replaced 3.141592653589793 by 103993/33102 =3.141592653011902 (%o1) [3, 7, 15, 1, 292] (%i2) cfexpand (%); [ 103993 355 ] (%o2) [ ] [ 33102 113 ] (%i3) %[1,1]/%[2,1], numer; (%o3) 3.141592653011902
Значение по умолчанию: 1
Функция cf
возвращает число членов цепной дроби, равное произведению
cflength
на период. Таким образом, по умолчанию возвращается один период.
(%i1) cflength: 1$ (%i2) cf ((1 + sqrt(5))/2); (%o2) [1, 1, 1, 1, 2] (%i3) cflength: 2$ (%i4) cf ((1 + sqrt(5))/2); (%o4) [1, 1, 1, 1, 1, 1, 1, 2] (%i5) cflength: 3$ (%i6) cf ((1 + sqrt(5))/2); (%o6) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2]
divsum (n, k)
возвращает сумму делителей n, возведенных
в степень k.
divsum (n)
возвращает сумму делителей n.
(%i1) divsum (12); (%o1) 28 (%i2) 1 + 2 + 3 + 4 + 6 + 12; (%o2) 28 (%i3) divsum (12, 2); (%o3) 210 (%i4) 1^2 + 2^2 + 3^2 + 4^2 + 6^2 + 12^2; (%o4) 210
Возвращает n-е число Эйлера для неотрицательного целого n.
Для постоянной Эйлера-Маскерони см. %gamma
.
(%i1) map (euler, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); (%o1) [1, 0, - 1, 0, 5, 0, - 61, 0, 1385, 0, - 50521]
Постоянная Эйлера-Маскерони, 0.5772156649015329 ....
Представляет факториал x. Maxima работает с factorial (x)
аналогично x!
. См. !
.
Возвращает n-е число Фибоначчи.
fib(0)
равно 0, fib(1)
равно 1, fib (-n)
равно
(-1)^(n + 1) * fib(n)
.
После вызова fib
prevfib
равно fib (x - 1)
,
числу Фибоначчи, предшествующему последнему рассчитанному.
(%i1) map (fib, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); (%o1) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Выражает числа Фибоначчи в expr через постоянную %phi
,
равную (1 + sqrt(5))/2
, приблизительно 1.61803399.
Примеры:
(%i1) fibtophi (fib (n)); n n %phi - (1 - %phi) (%o1) ------------------- 2 %phi - 1 (%i2) fib (n-1) + fib (n) - fib (n+1); (%o2) - fib(n + 1) + fib(n) + fib(n - 1) (%i3) fibtophi (%); n + 1 n + 1 n n %phi - (1 - %phi) %phi - (1 - %phi) (%o3) - --------------------------- + ------------------- 2 %phi - 1 2 %phi - 1 n - 1 n - 1 %phi - (1 - %phi) + --------------------------- 2 %phi - 1 (%i4) ratsimp (%); (%o4) 0
Для целого положительного n возвращает факторизацию n.
Если n=p1^e1..pk^nk
есть разложение n на простые множители, ifactors
возвращает [[p1, e1], ... , [pk, ek]]
.
Используемые методы факторизации - обычное деление на простые числа (до 9973), ро-алгоритм Полларда и метод эллиптических кривых.
(%i1) ifactors(51575319651600); (%o1) [[2, 4], [3, 2], [5, 2], [1583, 1], [9050207, 1]] (%i2) apply("*", map(lambda([u], u[1]^u[2]), %)); (%o2) 51575319651600
Возвращает целый n-й корень абсолютного значения x.
(%i1) l: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]$ (%i2) map (lambda ([a], inrt (10^a, 3)), l); (%o2) [2, 4, 10, 21, 46, 100, 215, 464, 1000, 2154, 4641, 10000]
Рассчитывает число, обратное n по модулю m.
inv_mod (n,m)
возвращает false
, если n есть делитель нуля
по модулю m.
(%i1) inv_mod(3, 41); (%o1) 14 (%i2) ratsimp(3^-1), modulus=41; (%o2) 14 (%i3) inv_mod(3, 42); (%o3) false
Символ Якоби для p и q.
(%i1) l: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]$ (%i2) map (lambda ([a], jacobi (a, 9)), l); (%o2) [1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0]
Возвращает наибольший общий делитель аргументов. Аргументы могут быть как целыми числами, так и общими выражениями.
Функцию загружает load ("functs")
.
Проверяет expr на наличие двух факториалов, различающихся на целое число.
После этого minfactorial
заменяет выражение произведением многочленов.
(%i1) n!/(n+2)!; n! (%o1) -------- (n + 2)! (%i2) minfactorial (%); 1 (%o2) --------------- (n + 1) (n + 2)
Возвращает наименьшее простое число, большее n.
(%i1) next_prime(27); (%o1) 29
Разлагает выражение expr на простые дроби относительно главной переменной var.
partfrac
делает полное разложение на простые дроби. Используемый алгоритм
основан на том, что знаменатели в разложении на простые дроби (сомножители
исходного знаменателя) взаимно просты. Числители могут быть записаны как
линейные комбинации знаменателей, откуда вытекает разложение.
(%i1) 1/(1+x)^2 - 2/(1+x) + 2/(2+x); 2 2 1 (%o1) ----- - ----- + -------- x + 2 x + 1 2 (x + 1) (%i2) ratsimp (%); x (%o2) - ------------------- 3 2 x + 4 x + 5 x + 2 (%i3) partfrac (%, x); 2 2 1 (%o3) ----- - ----- + -------- x + 2 x + 1 2 (x + 1)
Использует модулярный алгоритм вычисления a^n mod m
, где a и n - целые
и m - положительное целое. Если n отрицательно,
для поиска обратного по модулю m числа используется inv_mod
.
(%i1) power_mod(3, 15, 5); (%o1) 2 (%i2) mod(3^15,5); (%o2) 2 (%i3) power_mod(2, -1, 5); (%o3) 3 (%i4) inv_mod(2,5); (%o4) 3
Проверка на простоту. Если primep (n)
возвращает false
, то n
является составным числом; если возвращает true
, то n с большой
вероятностью является простым числом.
Для n меньше 341550071728321 используется детерминированная версия теста
Миллера-Рабина. Если primep (n)
возвращает true
, то n есть простое число.
Для n больше 34155071728321 primep
использует primep_number_of_tests
тестов Миллера-Рабина на псевдопростоту и один тест Люкаса на псевдопростоту.
Вероятность того, что n пройдет один тест Миллера-Рабина, менее 1/4. Для значения по
умолчанию 25 переменной primep_number_of_tests
вероятность того, что n
будет составным, много меньше 10^-15.
Значение по умолчанию: 25
Число тестов Миллера-Рабина, используемых в primep
.
Возвращает наибольшее простое число, меньшее n.
(%i1) prev_prime(27); (%o1) 23
Возвращает элемент поля sqrt (n)
с единичной нормой, что равносильно
решению уравнения Пелля a^2 - n b^2 = 1
.
(%i1) qunit (17); (%o1) sqrt(17) + 4 (%i2) expand (% * (sqrt(17) - 4)); (%o2) 1
Возвращает число целых чисел, меньших или равных n, которые взаимно просты с n.
Значение по умолчанию: true
Если zerobern
равно false
, bern
исключает числа Бернулли, равные нулю.
См. bern
.
Возвращает дзэта-функцию Римана, если n - отрицательное целое, 0, 1,
или положительное четное число, и возвращает невычисляемую форму zeta (n)
для всех других аргументов, включая не целые рациональные, числа с плавающей точкой и
комплексные.
См. также bfzeta
и zeta%pi
.
(%i1) map (zeta, [-4, -3, -2, -1, 0, 1, 2, 3, 4, 5]); 2 4 1 1 1 %pi %pi (%o1) [0, ---, 0, - --, - -, inf, ----, zeta(3), ----, zeta(5)] 120 12 2 6 90
Значение по умолчанию: true
Значение по умолчанию: true
Если zeta%pi
равно true
, zeta
возвращает выражение,
пропорциональное %pi^n
для целого четного n
. В противном случае для
целого четного n
возвращается невычисляемая форма zeta (n)
.
(%i1) zeta%pi: true$ (%i2) zeta (4); 4 %pi (%o2) ---- 90 (%i3) zeta%pi: false$ (%i4) zeta (4); (%o4) zeta(4)
Previous: Теория чисел, Up: Теория чисел [Contents][Index]