Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Mathematica 5. ╨б╨░╨╝╨╛╤Г╤З╨╕╤В╨╡╨╗╤М

.pdf
Скачиваний:
1
Добавлен:
19.11.2023
Размер:
33.75 Mб
Скачать

Модуль (абсолютная величина) числа: функция Abs

Функция Abs[z] возвращает абсолютную величину (модуль) комплексного числа z. Конечно же, ее аргумент может быть й вещественным.

A b s [ { - 5 , 5 + 12 i ,

(5,13,1)

Знак числа: функция Sign

Если аргумент х — вещественное число, то Sign[x] возвращает -1, 0 или 1, в за­ висимости от того, является аргумент отрицательным, нулем или положительным. Если комплексное число z отлично от нуля, то Sign[z] по определению равно z/Abs [z]. Рассмотрим пример.

Sign/@ {153.2 /Pi, E-Pi, Pi+I E}

Во еще один пример.

Sign[(Pi+E) Exp[I 1234567]]

e1234567 i

Числитель и знаменатель числа:

функции Numerator и Denominator

Функция Numerator [ехрг] собирает в ехрг все множители с неотрицательными показателями. В качестве ехрг можно использовать целые числа, дроби, комплексные числа и их произведение. То же самое функция Denominator делает для сомножите­ лей с отрицательными показателями. Вот пример.

х=з/4;

{Numerator [х] ,Denominator [х] } {3,4}

Эти функции применимы и к комплексным числам.

х= (31+1)/(41+5) ; {Numerator[х],Denominator[х] } {17+11 1,41}

х= (31+1)*(41 +7)/(41 +5) ; {Numerator[х],Denominator[х] } {75+145 1,41}

Но суммы в качестве аргументов остаются непреобразованными.

г 1

у .

Numerator --------

+ --------

1

L1 - z

l +

z J

+ - J —

1 - Z 1 + z

Впрочем, как обычно, все вычисления выполняются с учетом значений переменных.

X

75 145 i

41 + 41

Числа, их представление и операции над ними

93

 

Г

1

]

Num erator ------

34

L1

1 + x

145

 

 

(■ 541

541

 

Знаменатель дроби в предыдущем примере получить совсем не сложно, нужно только все привести к общему знаменателю. Проще всего это сделать так.

1 у

Num erator [T o g eth er [ —------+ —------- ] ]

- 1 - y - z + y z

Аналогично ведет себя и функция Denominator. Вот примеры.

{Num erator [ --------—] , D enom inator [ — -——] }

Ь+с

.a+d }

,

 

Г6 - S i

D enom inator -----------

25

L3 + 4

i J

 

 

D enom inator Г-------+ ———1

1

L1 - z

1 + z J

 

1 + z ]]

 

 

D e n o m in a to r [T o g e th e r [ ——

( - 1 + z )

(1+z )

 

Цепные дроби

Представление числа непрерывной дробью: функция ContinuedFraction

Функция ContinuedFraction [х] преобразует число х в непрерывную дробь. Коли­ чество звеньев определяется точностью числа х. Следующая программа, например, на­ ходит представления первых 50 чисел Бернулли в виде цепных дробей.

Do [

Print[2 n," ContinuedFraction[BernoulliB[2 n]]],{n,0,50}]

Результаты приведены в табл. Б.1.

Как видно из таблицы, некоторые числа Бернулли представляются цепной дробью с очень небольшим количеством звеньев.

Количество звеньев цепной дроби можно задать явно в качестве второго параметра. Это позволяет получить наилучшие приближения числа дробями, знаменатели кото­ рых не превосходят некоторого числа. Пусть, например, нужно найти первые 2d звеньев цепной дроби, представляющей число

2

** - 1

2

ек +1

(Разложение этих чисел в цепную дробь при любом натуральном к было найдено Эйлером в 1737 году.) Вот нужная нам программа.

Do[Print[к,":",ContinuedFraction[ЕА (2/к), 20]],[к,1,10}]

Результаты приведены в табл. Б.2.

94

Глава3

Если у цепной дроби количество звеньев меньше заданного, будет сгенерировано предупреждение. Вот как выглядят, например, результаты разложения корней из 2 в цеп ную дробь с 20-ю звеньями.

Do[

Print[k,":",ContinuedFraction[2A (1/k), 20]],{k,1,10}]

ContinuedFraction::incomp

Warning: ContinuedFraction

terminated before 20 terms. More...

1

21 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 }

31,3,1,5,1,1,4,1,1,8,1,14,1,10,2,1,4,12,2,3}

41,5,3,1,1,40,5,1,1,25,2,3,1,6,2,1,1,2,1,2}

51,6,1,2,1,1,1,3,25,1,4,3,3,7,52,1,2,3,2,15

61,8,6,31,1,2,2,2,10,3,1,9,1,2,8,2,3,21,2,7'

71,9,1,1,1,1,5,46,1,3,2,1,1,3,1,1,2,1,22,48

81,11,20,1,1,761,2,1,1,3,3,9,9,17,3,3,1,2,2,9}

91,12,2,26,3,3,2,1,4,10,16,1,5,1,103,3,2,3,1,9}

10{1,13,1,13,1,6,2,1,1,2,2,2,3,6,13,1,10,1,28,1}

Такое предупреждение, как видим, не препятствует работе программы.

Числа Фибоначчи и цепные дроби

F

Давайте разложим —1— (здесь F, — /-е число Фибоначчи) в цепную дробь.

Do [

Print[n, ":",ContinuedFraction[Fibonacci[n+2]/Fibonacci[n+l]]],{n,l,10}

1

1 ( 2 )

2{ 1 , 2 }

3{1,1,2}

4{1,1,1,2}

5{1,1,1,1,2}

6{1,1,1,1,1,2}

7{1,1,1,1,1,1,2}

811,1 ,1 ,1 ,1 ,1 ,1 ,2 }

9{1,1,1,1,1,1,1,1,2}

10{1, 1, 1, 1, 1, 1, 1, 1, 1, 2}

f

Как видите, количество звеньев разложения дроби —^ равно и, причем послед­ к и

нее звено равно 2, а все предшествующие ему (если они есть) — 1. Этим свойством

обладают только дроби

п+2 , никакая другая дробь такого разложения не имеет.

/ 1+1

Вообще, выражения, содержащие числа Фибоначчи, доставляют подчас примеры чи­ сел, разложения которых в цепные дроби обладают весьма интересными свойствами.

Пример 3.2. Давайте определим следующую функцию.

 

 

aFibonacci[k+2] _ ^

F F r a c tio n [ a

, к ]

:= -— г-------. ■ — —

L —

aFibonacci[k+l] _ ^

А теперь давайте попытаемся представить несколько ее значений в виде цепных дробей. Положим, например, а = 2, к = 15. Вот результаты.

Числа, их представление и операции над ними

95

ContinuedFraction[FFraction[2,15]]

[424910394253413678951670565241974901863674494181625538559555310560322

8478886817941913300018121834285351114635889972008122772634701221657915

276159830132698815550650166683145752253825024,307828173409331868845930

0007823719828521854630505113020933460422206697013398219579016739551162

88403443801781174272,1380349269358112757486951172455405090490221794434

0773110325048447598592,223007451985306231415357182-7;2648361505980416>' 618970019642690137449562112,36028797018963968,17179869184,2097152, 8192,256,32,8,4,2,3]

А теперь давайте возьмем логарифмы по основанию 2.

Log[2,%]

[610,377,233, 144,89, 55,,34,21, 13,8,5,3,2,1,

)

Если и это вам ничего не напоминает, взгляните вот на это.

Table[Fibonacci[n],{n,15,2,-1}]

{610,377,233,144,89,55,34,21,13,8,5,3,2,1}

Так что все звенья цепной дроби (кроме последнего), в которую разлагается число

а*”1—1 —г------ , представляют собой степени числа а, показателями которых служат числа

а-1

Фибоначчи Fn, Fn„ , Fn_2, F2, записанные в обратном порядке! То же самое имеем и для а = 3, к = 25.

Log[3,ContinuedFraction[FFraction[3,25]]]

{75025, 46368,28657,17711, 1094 6, 6765, 4181,2584,1597,987, 610, 377,

233,144,89,55,34,21,13,8,5,3,2,1,

Log[4]

Log[3] }

Последний элемент цепной дроби, как видим, равен а+1. Конечно, фокус основан на тождестве

аF-* -1

aF*+-

 

 

аFH,X-1

 

 

aF”' +-

1

 

 

 

 

 

 

 

 

\ +

 

 

 

aF°

 

Хотя тождество справедливо для всех а, таких, что aFk ^ 1 (^ = 0 , 1,

л+1),

именно для целых а правая часть будет “настоящей” цепной дробью.

ContinuedFraction[FFraction[5,15]]

{2 3 5 3 4 3 7 3 6 8 2 6 4 5 3 5 2 7 1 2 3 1 2 0 1 2 0 5 7 7 3 9 3 4 5 0 8 2 3 3 4 0 3 2 7 5 8 8 8 5 7 2 2 3 8 1 1 5 5 2 7 3 2 1 4 4 4 1 4 4 3 8 7 5 5 8 8 4 8 6 6 9 4 0 9 8 4 5 3 1 0 2 4 9 4 2 8 7 8 7 9 9 2 3 1 8 7 2 2 9 7 7 3 5 5 9 6 9 1 9 7 1 2 9 5 1 8 5 4 0 0 3 2 3 3 0 6 4 6 0 0 2 2 4 9 7 6 0 9 3 8 9 5 1 9 1 8 1 8 6 1 4 6 8 0 3 1 5 4 1 0 2 6 5 4 4 6 8 9 4 6 7 6 2 7 9 0 5 3 4 1 7 1 6 7 5 0 1 0 3 6 2 5 8 8 7 5 2 5 5 8 9 7 9 1 8 8 0 8 7 7 7 0 6 7 4 9 3 5 8 0 6 0 4 2 2 1 3 1 2 6 2 2 3 0 7 4 3 9 0 2 1 6 5 1 1 0 2 5 2 6 8 8 2 6 2 7 1 6 0 3 5 8 2 7 9 9 9 4 7 5 4 6 6 6 4 9 7 0 3 7 2 1 9 4 0 9 3 1 2 8 1 0 5 6 2 7 6 3 4 6 5 9 1 7 9 0 6 8 0 1 1 6 6 6 7 8 6 7 8 9 0 2 1 7 8 8 3 3 0 6 8 1 9 8 9 8 7 8 0 3 0 5 2 5 8 1 4 6 8 0 7 1 2 0 2 9 8 5 1 6 2 8 3 8 4 8 6 1 6 0 5 6 4 4 0 3 0 8 7 9 6 9 1 5 4 1 7 1 3 3 2 7 7 5 1 4 9 4 9 4 4 0 9 5 6 1 1 5 7 2 2 6 5 6 2 5 ,3248565551764031005790751431463095739934232127617402344455757 2111865301732983033266334815091914038863739706765539211466836506513183 2784217-955930413782551011640155711966168968560980329045535207275641961

879139931014576998043359712387001536626485176384449005126953125,724454 3 2 6 3 0 6 1 3 6 9 8 9 4 0 0 7 2 9 5 4 3 2 7 1 0 2 3 3 4 2 4 5 4 6 0 2 4 9 5 8 5 1 1 3 1 0 5 5 1 6 6 6 0 9 1 9 1 1 9 4 8 4 0 1 0 5 4 8 7 4 2 7 6 0 9 1 7 9 1 6 2 5 1 6 1 5 6 8 7 6 6 4 7 9 5 6 3 1 6 1 9 5 1 4 3 7 5 0 2 2 6 3 7 2 4 7 0 6 1 8 6 2 9 8 6 1 8 6 0 4 2 6 8 9 9 5 1 1 3 6

96

Глава 3

7 0 8 2 5 9 5 8 2 5 1 9 5 3 1 2 5 , 4484155085839414626955934666527731620096838214004850 4696226185084473314645947539247572422027587890625,16 1 5 5 8 7 1 3 3 8 9 2 6 3 2 1 7 7 4 8 3 2 2 0 1 0 1 6 9 9 1 4 6 1 9 8 3 7 0 7 2 6 7 7 9 1 0 3 2 7 9 1 1 3 7 6 9 5 3 1 2 5 ,2 7 7 5 5 5 7 5 6 1 5 6 2 8 9 1 3 5 1 0 5 9 0 7 9 1 7 0 2 2 7 0 5 0 7 8 1 2 5 ,582076609134674072265625, 4 7 6 8 3 7 1 5 8 2 0 3 1 2 5 ,1220703125, 390625, 3125, 125,25, 5, 6}

Здесь целая часть выделена полужирным, а остальные элементы курсивом через один, чтобы их было легче отличить. Видно, как быстро убывают элемейты дроби. Но вот если основание а не является целым числом, картина может измениться кар­ динально. Вот, например, разложение, в котором основание а само является дробью того же вида.

ContinuedFraction[FFraction[FFraction[2,7], 7]]

{7 4 8 2 9 3 4 7 6 3 1 7 6 7 3 1 0 4 7 3 5 7 7 9 5 1 4 7 0 4 7 3 4 4 0 0 5 9 6 1 4 4 0 1 0 5 6 3 1 2 2 ,1 ,1,44,2,10,5, 3, 1.7.4.3.3.1.1.1.10.6.1.1.5.1.20.6.4.3.5.1.1.2.153.2.2.1.2.1.1.3.1.3.1, 2,1,5,1,1,24,3,1,10,1,3,1,6,2,2,2,1,1,4,35,1,1,8,34,92,1,1,1,16,1,1,9, 1.13.1.47.1.3.5.5.1.105.1.4.3.3.1.1.2.4.3.26.2.2.1.2.1.1.71.2.3.1.5.1, 1.2.2.2.1.3.2.4.1.7.1.1.1.6.1.6.2.18.3.1.1.1.5.1.1.7.2.2.2.1.1.1.4.5, 85.4.3.10.1.1.1.4.1.6.5.1.2.16.2.8.27.11.1.2.1.15.16.3.8.1.9.1.5.1.5, 1.1.1.2.4.1.1.2.1.8.10.1.24.1.2.13.4.17.11.1.1.1.5.2.2.1.2.9.2.1.1.1, 1.2.4.1.8.1.15.3.3.1.1.8.3.5.1.4.3.3.1.4.1.18.3.1.1.1.2.1.2.1.1.4.6.2, 23.52.3.9.1.1.7.1.1.263.47.59.2.6.2.21.41.3.2.1.2.7.1.1.6.3.2.1.2.1, 10.2.1.11.10.1.9.3.3.1.1.39.1.1.1.2.3.2.5.66.1.2.1.84.3.1.14.2.2.2.2, 1.1.2.1.2.1.2.3.19.1.22.1.2.4.4.2.1.2.3.2.5.4.1.23.4.1.1.1.1.4.1.3.1, 2.2.8.1.5.2.19.7.1.4.1.3.1.38.2.2.4.1.8.3.1.6.2.2.1.1.1.2.1.1.3.1.3.1, 1.2.1.1.1.2.2.1.29.1.3.3.3.24.9.6.1.6.10.1.1.3.2.4.3.1.1.1.4.1.8.11.2, 4.1.5.2.2.8.1.129.1.7.1.2.1.5.1.1.3.1.1.3.1.1.1.3.3.5.101.3.2.5.50.1, 2,18,1,13,6,3,4,64,3,4,1,1,5,1,4,34,1,2,28,5,4,1,3,1,2,3,1,1,91,1,13, 1.33.3.2.4.5.6.1.4.2.8.5.1.1.5.5.1.3.1, 10,6,16,1, 1.1.4.1.55.1.2.6.1.1.3.1.8.8.1.6.1.2.12.1.1.2.3.36.1.8.1.37.5.2.2.4.1, 2,1,1,4,1,5,104,1,4,3,1,13,1,2,2,1,1,18}

Как видите, если не считать целой части, то все элементы цепной дроби являются весьма небольшими числами. Однако так бывает не всегда. Возьмем, например, осно­ вание а = 1/3.

ContinuedFra'ction[FFraction[1/3,15] ]

[1 ,8 2 9 2 3 6 4 9 6 9 2 1 1 4 2 4 7 6 7 0 6 6 9 9 4 9 5 4 9 2 5 3 4 6 7 8 3 3 3 9 5 2 4 2 5 4 1 9 5 3 4 2 8 9 8 9 2 9 0 1 4 8 1 2 0 9 7 8 5 3 4 2 9 6 1 6 8 6 4 9 6 1 1 2 0 0 3 8 4 9 8 1 6 2 5 9 3 5 3 9 4 7 6 6 9 1 8 4 7 8 6 8 1 7 0 8 9 3 5 7 6 4 6 4 4 5 9 0 9 7 0 6 2 6 3 3 5 55843720О32ООО7531348893557О26921195ОО7411595657151332651814619755О677 3 8 3 4 6 6 9 1 9 1 5 4 9 1 1 2 8 4 0 3 3 6 8 5 8 0 9 9 4 3 2 6 3 0 9 9 1 8 7 9 7 7 9 0 0 6 5 5 1 2 3 2 8 7 7 4 0 5 2 9 6 2 0 1 2 5 3 1 6 1 354624 4 7 5 8 2 7 4 6 1 3 3 0 2 2 4 5 4 1 3 3 3 3 5 7 1 4 9 9 7 0 4 4 7 9 7 3 9 2 3 7 6 1 5 7 8 4 3 0 3 3 2 0 1 6 0 9 9 0 6 1 7 0 5 2 80007117648 2 7 6 5 2 3 8 6 5 7 0 6 1 9 4 6 9 0 0 8 1 9 7 7 9 6 4 3 4 3 2 0 9 0 3 2 8 6 1 8 1 1 2 9 9 7 6 2 2 8 5 2 2 3 2 1 5 8 1 2 6 8 4 6 2 0 0 0 9 5 6 1 6 0 5 4 5 8 7 1 7 4 8 2 3 2 6 2 8 0 3 9 5 9 7 3 8 5 0 9 8 9 2 6 8 8 2 5 8 9 1 4 9 ,147656425148539 2778927857721313837180933869708288569663932077079002031653266328641356 763872492873429131586567523, 5 0 7 5 2 8 7 8 6 0 5 6 4 1 5 6 0 0 7 1 9 7 5 4 1 5 9 7 4 1 6 9 6 3 5 6 9 0 8 7 4 2 2 5 0 1 9 1 6 6 3 8 8 7 2 6 3 6 2 7 4 4 2 1 1 4 8 8 1 ,290932118936257080863046582649224244668048

3 ,1 7 4 4 4 9 2 1 1 0 0 9 1 2 0 1 7 9 0 7 1 1 7 0 5 0 7 , 16677181699666569, 1 0 4 6 0 3 5 3 2 0 3 ,1594323, 6 5 6 1 ,2 4 3 ,2 7 , 9, 3, 4}

Здесь самым большим является второе звено. Все, кроме него и последнего звена, являются степенями тройки, причем показатели степеней — числа Фибоначчи.

Log[3,ContinuedFraction[FFraction[1/3,15]]]

[О,— -— Log[829236496921142476706699495492534678333952425419534289892 Log[3]

9014812097853429616864961120038498162593539476691847868170893576464459

Числа, их представление и операции над ними

97

0970626335558437200320007531348893557026921195007411595657151332651814

6197550677383466919154911284033685809943263099187977900655123287740529

6201253161354624475827461330224541333357149970447973923761578430332016

0990617052800071176482765238657061946900819779643432090328618112997622

8522321581268462000956160545871748232628039597385098926882589149],233,

Log[4] 144,89,55, 34,21,13, 8,5,3,2,1, — — }

Log[3]

Вот еше пример.

Log[10,ContinuedFraction[FFraction[1/10,8]]]

{0/ Log[10] Log[10000000000000000000009999999999999 ],

Log[11] 1

8, 5,, 3, 2, 1, Log[10]

Сколько девяток во втором элементе? 13 = 8+5 = Fibonacci [7] — следующее число Фибоначчи. А сколько нулей? 21 = 13+8 = Fibonacci[8] — опять следующее число Фибоначчи! А сколько цифр во втором элементе? 21+ 13+1 = Fibonacci [9]+1 — на единицу больше, чем следующее число Фибоначчи! Но эта единица не для того, чтобы портить картину, она как раз служит для того, чтобы утвердить закономерность, потому что благодаря ей второй элемент равен 10^ +10F7 - 1 .

Однако не при всех основаниях картина столь гармонична. Возьмем, например, в качестве основания

а = лЯ 7 - л/14 .

Числа вида

 

Fibonacci[rH 2 | __л

f

= ----------------- -

J о.п

^Fibonacci[n\ I ] __|

могут доставить множество неприятностей при разложении в цепные дроби. Вот пер­ вая попытка получить первые десять элементов разложения в цепную дробь.

ContinuedFraction[FFraction[Sqrt[17]-Sqrt[14],25],10]

IntegerPart:imeprec

 

 

 

Internal precision limit $MaxExtraPrecision

50.

reached while

evaluating IntegerPart [

1.

More...

N:rmeprec

 

L « 1 »

J

--------

 

 

 

 

Internal precision limit $MaxExtraPrecision

50.

reached while

evaluating IntegerPart [ <<1>:> ]. More...

ContinuedFraction::start

1 « 1 »

J

-----

 

 

 

Warning: ContinuedFraction was unable to

 

 

obtain at least one term using precision

 

 

50.

Try increasi traPrecision. More...

 

 

JT, ..

r -1+ (-VT4 + Vl7 )196418 ' ,Ul

 

 

ContinuedFraction

----5— *==—

. 10

 

 

 

 

1 -1 + (-V IT + V l7 )1Z1393

J

 

 

А вот и вторая

98

Гпава 3

Block[($MaxExtraPrecision = 2500000),

ContinuedFraction[FFraction[Sqrt[17]-Sqrt[14] ,25], 10] ]

ContinuedFraction::start

Warning: ContinuedFraction was unable to obtain at least one term using precision 34. Try increasi .traPrecision. More...

y l ?

+ V 17 )

 

1 0 ]

ContinuedFraction [—

+ Vl7 )

121393 '

1 -1 + <- Vl4

 

 

Точность — два с половиной миллиона десятичных цифр! Куда ж еще увеличи­ вать?! Давайте разберемся, в чем тут дело.

Do [

Print[Block[{$MaxExtraPrecision = 2500000), ContinuedFraction[FFraction[Sqrt[17]-Sqrt[14] ,k],20] ]],

[k, 1 ,1 0 }] [1.2.1.1.1.1.1.3.1.20.1.2.1.2.1.1.1.1.1.3) [1.9.2.43.2.3.3.1.4.1.1.1.11.18.1.10.2.1.1.3) (1,19,1,10,1,3,1,2,30,1,1,1,1,3,6,2,3,1,3,7)

[ 1 . 1 3 0 . 2 1 . 2 . 2 . 2 . 2 . 1 . 1 . 3 . 1 . 1 . 7 . 2 . 6 . 1 . 4 . 7 . 1 . 1 )

[ 1 . 2 2 4 8 . 4 . 4 . 8 . 4 . 6 . 7 . 4 . 2 . 1 . 2 . 9 . 1 . 4 0 . 1 3 . 2 . 2 . 1 . 3 ) [ 1 , 2 7 6 3 9 4 , 1 , 4 1 , 4 , 3 , 1 , 1 , 1 , 1 , 2 , 2 , 1 , 1 , 1 , 1 , 2 , 1 , 4 , 8 )

( 1 . 6 1 6 3 8 7 2 9 0 . 1 . 2 . 1 . 1 8 . 1 . 1 . 8 . 1 . 5 . 6 . 1 . 1 . 2 . 1 . 1 . 4 . 1 . 1 )

{ 1 , 1 7 0 2 8 9 9 9 0 6 8 9 1 5 5 , 1 , 3 6 , 2 , 5 , 3 3 , 1 , 2 , 1 , 4 , 1 0 1 , 1 , 1 , 7 , 1 , 1 , 1 , 1 , 1 } ( 1 , 1 0 4 9 6 4 2 0 6 0 7 0 2 6 2 4 7 4 1 5 1 9 8 3 , 1 , 1 , 1 , 1 , 1 , 3 , 1 0 , 1 , 1 , 1 , 1 , 2 , 1 , 1 , 4 , 2 , 3 , 1 }

ContinuedFraction::start

Warning: ContinuedFraction was unable to obtain at least one term using precision 38. Try increasi traPrecision. More...

ContinuedFraction f— * + ^—' / ^ _ + Vl7J

2 0]

L -1 + (-VT? + V l7 )89

J

Проблема, похоже, в том, что эти числа слишком быстро приближаются к целому числу 1 с возрастанием и, и потому так быстро возрастает второй элемент. Чтобы сде­ лать картину еще более наглядной, придется прибегнуть к хитрости: увеличим коли­ чество вычисляемых элементов. Но чтобы не загромождать распечатку, оставим в ней только 5 элементов. Вот начало распечатки.

Do [

Print[Block[(SMaxExtraPrecision = 2500000), ContinuedFraction[FFraction[Sqrt[17]-

Sqrt [14],k],100000] [[Range [1,5] ]]]'],

[k,1 ,2 0 }]

(1, 2, 1, 1, 1}

{1,9,2,43,2}

{1,19,1,10,1}

(1.130.21.2.2)

(1,2248,4,4,8)

(1,276394,1,41,4)

(1.616387290.1.2.1)

(1.170289990689155.1.36.2)

[1,104964206070262474151983,1,1,1} (1.17874353645400964734983734624075120041.10.7.1) {1,1876167339408603108550411658003840766703482106771398628132736,1,11,2}

Числа, их представление и операции над ними

99

{1,3353527852254039405770717082803983303861052463003962013461351626553

3247347878076203971628130486583,5,1,3}

{1,6291779428196108168967373645439785133517552103372561526357408386082

1906508829608085868343231775444933132228468313769147955779972246404773

964924528934854062843,1,4,3}

{1,2109965755269464276981617102837862192303586140814235637282205686302

2760608505853129857126926252206326410412404739621896454091980218014321

7780838534877851567473052353264519911763103271091313094229327939854299

5211452748600038561210614314738240146205547331115,1,3,1}

{1,1327543913320267945534358867193666244696932451431153746978522035140

6672837536937737357390685434597433623671442468438272134872539486373823

6985793672349869188230738468974937125445944551403229620790576307316527

0907722976198746375807940733664583377513044325510265775188350395193826

0968864895069104096193935877879645709673011959128879921809495180018406

1556636147490109842017573517657724265984996121952573756253523727669,2,

1/44}

{1,2801072195722179373265894953812131646635232077402565245999512855159

6575606657525353307814705384346520179400137114854611139304044607644711

8537366929748721586208836173687090438782670146475715505271008191307115

5334984186543239530429358096187839230205431771872632449405158081979325

3862782052456814944512712271834333560472380006086649974284976508907682

8682991512147831761140755610948939653631696984186282130469444220101952

2128887323673082766429282612902679677964598011833544445806429276338727

9493476364585632689263280966552605312964225518922431185419837631128741

7404152416203008747628289202578262257364363382370847822073173134613088

348344224459385841108818417571921082874486,1,1,1}

Как видите, с ростом /7второй элемент возрастает катастрофически быстро, а по­ тому катастрофически быстро возрастает и точность, требуемая для его вычисления.

Периодические цепные дроби

Как доказал Лагранж, все квадратичные иррациональности (и только они) разла­ гаются в периодические цепные дроби. Как учитывает это обстоятельство система Mathematica? Давайте выясним это на примере разложения квадратных корней из чи­ сел начального отрезка натурального ряда, деленных на 1, 2, 3. Вот определение нуж­ ных нам функций.

FnOl[п_]:=Sqrt[п]

Fn02[n_]:=Sqrt[n]/2

Fn03[n_]:=Sqrt[n]/3

Теперь можем написать программу.

Do[Print[n,

ContinuedFraction[FnOl[n]],":",

ContinuedFraction[Fn02[n]],":",

ContinuedFraction[Fn03[n]] ],{n,1,100}]

Результаты отформатируем в виде таблицы (табл. Б.З).

Эта таблица заслуживает того, чтобы

рассмотреть ее более внимательно. Многие

приведенные в таблице квадратичные

иррациональности имеют вид — , причем

 

Я

>q. Во-первых, период цепной дроби, представляющей такую квадратичную ирра­ циональность, начинается сразу после целой части. (Это следует из теоремы о чисто периодических цепных дробях, которую Эварист Галуа опубликовал в 1828 году.)

100

Гпава 3

does not have a terminating or

Во-вторых, последний элемент периода равен удвоенной целой части. (Это следует из доказанной Эваристом Галуа теоремы о том, что в случае чисто периодического разло­ жения сопряженная квадратичная иррациональность имеет те же элементы, но располо­ жены они в обратном порядке.)

Наконец, давайте посмотрим, как в системе Mathematica представляются чисто пе­ риодические разложения.

ContinuedFraction[(1+13Л (1/2))/3]

{1, {1/ 1,

Сюрприз! Целая часть, как видите, выделена отдельно, а период записан только со следующего звена! Во многих учебниках по теории чисел считается, что период начи­ нается с первого звена и потому вся дробь записывается в виде {{1, 1, 1, 6, 1}}. Конечно, здесь различие только внешнее, но его следует иметь в виду, сравнивая ре­ зультаты, полученные с помощью системы Mathematica, с результатами, полученными другими системами. Впрочем, при разложении чисел в цепные дроби могут происхо­ дить и более серьезные неожиданности...

Частные случаи разложения чисел в цепные дроби

Очень “иррациональный” случай: д + Л Г - д - Л г 1

 

 

о + Л г - о - Л г

а + Л г ' - а - Л г '

„ „

Число

-------- -?=—п--------- г п

выглядит весьма иррационально. Давайте попытаем-

 

(1 + v2)° —(1 —v2 У

 

ся разложить его в цепную дробь.

 

Fn [п_] : =

( ( l +Sqrt[2])A (n+l ) -

(1-Sqrt[ 2 ] ) л (п+1)) / ( ( 1+Sqrt[ 2 ] ) лп-

(1-Sqrt[2])лп)

 

ContinuedFraction[Fn[5]]

 

ContinuedFraction::noterms

 

- « 1»

ь + « 1»

 

1» 5 + « 1»

periodic continued fraction expansion; specify

an explicit number of terms to generate. More...

ContinuedFraction I - 4 - Vj>‘< О < Vj.ll ]

1 -(1 - V I ) 5 + (1 + Л ) 5 J

Как видите, ничего не получилось. Система Mathematica говорит, что цепная дробь бесконечна, не имеет периода, и потому советует указать количество необхо­ димых элементов. На самом же деле все эти иррациональности запутали систему Mathematica. Она нуждается в указании упростить выражение. Давайте дадим ей это указание, а заодно и напечатаем числитель и знаменатель нашего очень “иррацио­ нального”, но на самом деле рационального числа.

Fn [п_]:= Simplify[((1+Sqrt[2])Л (n+1)- (1-Sqrt[2])л (п+1))/

( ( 1 + S q r t [ 2 ] ) лп - ( 1 - S q r t [ 2 ] ) Ап ) ]

Do (Print[п, ":",Numerator[Fn[п]],"/",Denominator[Fn[п]], ":", ContinuedFraction[Fn[n]]],(n,1,20}]

1

2 / 1

[2]

2

5 / 2

{2, 2}

3

1 2 / 5

{ 2 , 2 , 2 }

4

29 / 12

[ 2 , 2 , 2 , 2 1

5

7 0 / 2 9

{ 2 , 2 , 2 , 2 , 2 }

Числа, их представление и операции над ними

101

6

169 / 70

 

 

( 2 , 2 , 2 , 2 , 2 , 2 }

7

408

/

169

 

{ 2 , 2 , 2 , 2 , 2 , 2 , 2 ^

8

985

/

408

 

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

9

2378

/

985

 

: ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

10

5741

/

2378

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

11

13860

/

5741

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

12

33461

/

13860

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

13

80782

/

33461

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

14

1 9 5 0 2 5

/

80782

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

15

4 70832

/

195025

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

16

1 1 3 6 6 8 9

/

 

470832

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

17

2 7 4 4 2 1 0

/

 

1136689

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

18

6 6 2 5 1 0 9

/

 

2744210

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

19

1 5 9 9 4 4 2 8

/

6625109

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

20

3 8 6 1 3 9 6 5

/

15994428

( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 1

Как видите, число оказалось на самом деле рациональным (числители выделены курсивом, а знаменатели полужирным), а цепная дробь — конечной, но система Mathematica об этом не догадалась. Этот случай говорит о том, что иногда нужно под­ сказывать, что некоторые выражения можно упрощать. Без этого в данном случае раз­ ложение не получить.

Интерес представляют и полученные разложения: все их элементы равны 2, а ко­ личество элементов равно п. Никакие другие числа этим свойством не обладают.

Некоторые полезные разложения квадратичных иррациональностей

вцепнуюдробь

Взадачниках часто используются разложения в цепную дробь квадратичных ирра­ циональностей вроде

У/Г + 1

У/Г +1

У /г+ 2

п

 

 

 

 

 

/ б

+ 2/i ,

 

 

VH

 

У2и3+ 1

V(n + l)2-2

\jn2+ 2/i

 

7

п +1

 

/I”

 

 

yj2.n* +1 / э

, VJr+TTT

и т.д.

 

----- г----, V /i'+n + l , --------------

 

/2

/I

Составим таблицу разложения их в цепные дроби. Сначала определим нужные нам функции.

Fnl[nj:= Sqrt[nA2+l]

Fn2[n_]:= Sqrt[пЛ2+1]/2

Fn3[n_J:= Sqrt [nA2+l]/n

Вот как выглядит программа для разложения этих иррациональностей.

Do[Print[n,

ContinuedFraction[Fnl[n]

ContinuedFraction[Fn2[n]] ,

ContinuedFraction[Fn3[n]]],{n,1,100}]

Результаты оформлены в виде таблицы (табл. Б.4).

Посмотрите внимательно на третий и четвертый столбцы этой таблицы. Вы увидите

4пг +1

нечто весьма интересное: --------- при четном п разлагается в дробь {n/2, {4п ,п }}, а при нечетном — в дробь {[n /2] r { l ,l,n } ). Что же касается более сложного выражения,

у/п2+ 1

------- г*, то несколько удивительно то, что его разложение даже проще: {1, {22, 2}}.

п

102

Гпава 3