Статьи

Определитель теории чисел и SymPy

Пусть σ ( n ) — сумма положительных делителей n, а gcd ( a , b ) — наибольший общий делитель a и b .

Формируем матрицу M размером n на n , элемент ( i, j ) которой равен σ (gcd ( i , j )). Тогда определитель M равен n !

Следующий код показывает, что теорема верна для нескольких значений n, и показывает, как выполнить некоторые общие вычисления в теории чисел в SymPy.

from sympy import gcd, divisors, Matrix, factorial
 
def f(i, j):
    return sum( divisors( gcd(i, j) ) )
 
def test(n):
    r = range(1, n+1)
    M = Matrix( [ [f(i, j) for j in r] for i in r] )
    return M.det() - factorial(n)
 
for n in range(1, 11):
    print test(n)

Как и ожидалось, тестовая функция возвращает нули.

Если заменить функцию а выше, т , где τ ( п ) является число положительных делителей п , соответствующий определитель 1. Чтобы проверить это, заменить sumна lenв определении fи заменить factorial(n)на 1.

Если вам интересно, оба результата являются частными случаями следующей более общей теоремы. Я не знаю, чья это теорема. Я нашел это здесь .

Для любой арифметической функции f ( m ) пусть g ( m ) определена для всех натуральных чисел m как

g (m) = \ sum_ {d \, \ mid \, m} \ mu (d) f \ left (\ frac {m} {d} \ right)

Пусть M — квадратная матрица порядка n с элементом ij f (gcd ( i , j )). потом

\ det M = \ prod_i ^ ng (j)

Здесь μ — функция Мёбиуса . Два указанных выше частных случая соответствуют g ( m ) = m и g ( m ) = 1.