Вернуться к списку примеров


Рациональные числа

Рациональное число естественным образом представляется в системе GAP парой целых чисел - числителем и знаменателем, которые являются взаимно простыми (если ввести сократимую дробь, она будет преобразована в несократимую). Если знаменатель рационального числа равен единице, то оно фактически является целым, и в этом случае будет представлено, как целое. Знак рационального числа определяется знаком числителя, знаменатель же всегда является положительным числом.

Поскольку GAP может оперировать с целыми числами  произвольной величины, то рациональная арифметика в GAP всегда является точной, даже в случае, когда числитель и знаменатель записываются с помощью тысяч цифр.

Все вышесказанное демонстрируется следующими примерами:
gap> 2/3;
2/3
gap> 66/123;
22/41   # после сокращения числитель и знаменатель стали взаимно просты
gap> 17/-13;
-17/13  # знак рационального числа "хранится" в числителе
gap> 121/11;
11      # после сокращения было получено целое число
gap> 18912132/414656456 + 4734788564/7867889513;
48002482065655475/74147072310457862
По аналогии с целыми числами, рациональные числа (как алгебраическая система)  задаются с помощью функции Rationals:
gap> Size( Rationals ); 2/3 in Rationals;
infinity
true
Функция IsRat(obj) проверят, является ли obj рациональным числом:
gap> IsRat( 2/3 );
true
gap> IsRat( 17/-13 );
true
gap> IsRat( 11 );
true
gap> IsRat( IsRat );
false    # поскольку IsRat - функция, а не рациональное число
Аналогично, функции IsPosRat(obj) и IsNegRat(obj) проверяют, является ли obj соответственно положительным и отрицательным рациональным числом.

Функция NumeratorRat возвращает числитель рационального числа rat:
gap> NumeratorRat( 2/3 );
2
gap> NumeratorRat( 66/123 );
22    # ответ после сокращения на наибольший общий делитель
gap> NumeratorRat( 17/-13 );
-17   # знак рационального числа "хранится" в числителе
gap> NumeratorRat( 11 );
11    # целые - это рациональные со знаменателем 1

Функция DenominatorRat возвращает знаменатель рационального числа rat:
gap> DenominatorRat( 2/3 );
3
gap> DenominatorRat( 66/123 );
41    # ответ после сокращения на наибольший общий делитель
gap> DenominatorRat( 17/-13 );
13    # знак рационального числа "хранится" в числителе
gap> DenominatorRat( 11 );
1    # целые - это рациональные со знаменателем 1
Функция Rat(elm) вовзращает рациональное число rat, которое определяется типом аргумента elm. Если elm является строкой, состоящей из цифр 0, 1, ... , 9 и знаков '-' (в первой позиции), '/' и десятичной точки '.', то rat - это рациональное число, описываемое данной строкой. Обратно, функция String может вычислить строку, описывающую рациональное число:
gap> Rat( "1/2" );  Rat( "35/14" );  Rat( "35/-27" );  Rat( "3.14159" );
1/2
5/2
-35/27
314159/100000
Random(Rationals) возвращает псевдослучайное число, являющееся частным двух случайных целых, которые лежат в диапазоне от -10 до 10 в соответствии с биномиальным распределением. Учтите, что для того, чтобы получить равномерное распределение целых чисел на заданном диапазоне, необходимо явно указать этот диапазон в виде  Random( [ low .. high ] ).


Вернуться к списку примеров