Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

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

 
lak_b ©   (2002-10-11 00:58) [0]

как это попределить _математически_ хотяб.... а потом ни на пае найтиее период...))


 
MJH ©   (2002-10-11 01:14) [1]

>переодичной
>как это попределить
>хотяб.... а потом ни на пае найтиее
ты хоть русский выучи, потом уже и математику :)


 
Mystic ©   (2002-10-11 03:29) [2]

1) все числа на компьютере представляются с ограниченной точностью. Следдовательно все числа являются рациональными.

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

Тогда проверить дробь на периодичность, или, что то же самое, на рациональность, можно при помощи следующего алгоритма:

А) Находим наилучшее приближение данного числа рациональной дробью, со знаменателем, не превосходящим например, 1000.

Б) Сравниваем подученное приближение с самим числом.

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

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

Вот примерный исходник

procedure FloatToRational(X: Extended; var Num, Denom: Int64; MaxDenom: Int64);
var
Qs: Int64;
P, Pprev, Pnext: Int64;
Q, Qprev, Qnext: Int64;
begin
Pprev := 1;
Qprev := 0;
Pnext := Trunc(X);
Qnext := 1;
X := Frac(X);
while Qnext < MaxDenom do
begin
if X < 1E-6 then Break;
X := 1 / X;
Qs := Trunc(X);
X := Frac(X);
P := Qs * Pnext + Pprev;
Q := Qs * Qnext + Qprev;
Qprev := Qnext;
Pprev := Pnext;
Qnext := Q;
Pnext := P;
end;
Num := Pnext;
Denom := Qnext;
end;

.....................

FloatToRational(X, N, D, 1000);
if Abs(N/D - X) < 1E-12
then Label1.Caption := "Rational"
else Label1.Caption := "Not rational";



Страницы: 1 вся ветка

Текущий архив: 2002.10.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
3-101075
Azbul
2002-10-13 17:31
2002.10.31
проблема с table1.Post


4-101594
iNew
2002-09-16 19:34
2002.10.31
Нажал на кнопку в области Caption нарисованную DrawFrameControl,


3-101161
Igoryan
2002-10-11 12:39
2002.10.31
Копирование в буфер из DBGrid


3-101066
BJValentine
2002-10-11 20:49
2002.10.31
Помогите...


3-101057
KidMan
2002-10-10 22:20
2002.10.31
SQL параметры и дата