Расширение в теории чисел. Цепные дроби (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
]
34227
3
*
5
*
7
*
9
945
FactorlntegerECM[
945
]
189