Расширение в теории чисел. Цепные дроби (ContinuedFractions). Улучшенное разложение на простые множители (FactorlntegerECM).
Мы уже описывали уникальные возможности систем Mathematica 3/4 в области обработки чисел и численных вычислений. Эти возможности существенно расширяет пакет NumberTheory, содержащий функции, реализующие алгоритмы теории чисел. Данный раздел посвящен знакомству с этим пакетом.
Следующие функции подпакета ContinuedFractions служат для представления чисел в виде цепных дробей или для формирования цепной дроби из списков:
- ContinuedFraction [х] – возвращает цепную дробь для рационального числа х;
- ContinuedFraction [х, n] – возвращает цепную дробь для числа х с числом членов n;
- ContinuedFractionForm [{а0, a1,…}] – создает цепную дробь из списка {a0,a1,…};
- Normal [ContinuedFractionForm[ {а0, a1,…}]] – представление в нормальной форме.
Примеры разложения чисел на цепные дроби:
<<NumberTheory` ContinuedFractionss ContinuedFraction[123/1234] //ContinuedFractionForm ContinuedFraction[Sqrt[5], 10] //ContinuedFractionForm 2, ContinuedFraction[GoldenRatio, 6 ] //ContinuedFractionForm Table[ Normal[ContinuedFractionForm[Table[1, {n}]]], {n, 9}] % -N[GoldenRatio] {-0.618034, 0.381966, -0.118034, 0.0486327, -0.018034, 0.00696601, -0.00264937, 0.00101363,-0.00038693}В подпакете имеются также следующие функции:
- ToPeriodicForm[x] – дает десятичное представление для рационального числа 0 < х < 1;
- ToPeriodicForm [х, b] – дает представление рационального числа х числом с основанием b;
- PeriodicForm[ {а0,…}, {am,…}] – дает периодическую форму представления списков;
- PeriodicForm[ {а0,…}, {am,…},b] – дает периодическую форму представления списков с основанием b;
- Normal [ PeriodicForm [{а0,…}, {am,…}]] – преобразование в нормальную форму;
- Normal [PeriodicForm[ {а0,…}, {am,…},b] ] – преобразование в нормальную форму с основанием b.
Ниже представлены примеры применения этих функций:
ToPeriodicForm[ 1/50 ] 0.02 ToPeriodicForm[ 1/23 ] 0.0434782608695652173913 PeriodicForm[1.2.3.4] 0.1234 RealDigits[ N[ 1/23, 25 ] ] {{4, 3, 4, 7, 8, 2, 6, 0, 8, 6, 9, 5, 6, 5, 2, 1, 7, 3, 9, 1, 3, 0, 4, 3, 5}, -1} ToPeriodicForm[ 1/20, 2 ] 0.000011 ToPeriodicForm[ 1/127 ] 0.007874015748631496062992l2598425l968503937 Normal[%] 1/127В системе Mathematica 4 функция ContinuedFraction стала встроенной. Имеется также встроенная функция FromContinuedFraction [list], которая строит цепную дробь по элементам списка list.
Улучшенное разложение на простые множители (FactorlntegerECM)
Алгоритм разложения чисел на простые множители, реализованный в ядре Mathematiica 3, способен за 3 часа (на рабочих станциях) разлагать числа, имеющие до 18 цифр. Улучшенный алгоритм в подпакете FactorlntegerECM позволяет увеличить максимальное число цифр до 40. Реализуется разложение следующей функцией:
- FactorIntegerECM[n] – возвращает один из делителей числа n. Возможны опции FactorSize › q, CurveNumber › b и CurveCountLimit › c.
Примеры применения этой функции:
<<NumberTheory`FactorlntegerECM` FactorIntegerECM[123456789] 342273*5*7*9945 FactorlntegerECM[945] 189