Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
14-101452
vopros
2002-10-10 17:56
2002.10.31
Выключил, телефоны так хорошо стало.


7-101544
sukhanov
2002-08-27 08:24
2002.10.31
Определение версии операционки


14-101472
JTH
2002-10-11 13:43
2002.10.31
MD плеер


14-101523
Николай Быков
2002-10-09 14:40
2002.10.31
Виктор Цой


3-101168
kserg@ukr.net
2002-10-10 12:01
2002.10.31
WinXP + ADO? = проблем





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский