Воостановление простой дроби из десятичной

gopnik1994

Как-то в школе я "изобрел" очень простой и универсальный способ получения из любой десятичной дроби (записанной с достаточной точностью) ее "простой" исходник. Т.е., например, пользуясь им, можно быстро и легко выяснить, что 0.59962072931886716199832126092 не что иное, как 19288 / 32167 (только что посчитал на бумажке)
Функция на паскале занимает примерно 4-5 строк.
Но!...
Как человек, вполне разумный, я понимаю, что я не гений, и, скорее всего, этот способ давно известен.
Чисто ради интереса попробовал поискать сейчас в инете существующие методы такого преобразования и ничего умнее анализа периодичности не нашел
Что скажете, господа программисты и математики?
Есть ли простые и эффективные методы?
(суть своего метода пока - до поры до времени - раскрывать не буду, а то вдруг он неизвестен, и на патент потянет )

Marinavo_0507

цепными дробями вроде приближают

gopnik1994

ага, это оно
спс

1businka1

Влёт находится гуглем по запросу типа "approximate real number by rational". LOL.

Syraya

Нам в школе рассказывали.

Corrector

Елютин на теории колебаний про это говорил

rosali

ничего умнее анализа периодичности не нашел

Переодичность нужно не анализировать а иметь изначально! Иначе не понятно какая задача вообще решается. Зная начало вещественного числа, но _не_ зная в каком месте период зацикливается, нельзя ведь его рациональную запись найти...

yolki

Ну да. если число записано в виде
непериодическая.часть(периодическая_часть)
то посчитать его очень просто - действия на уровне упрощения сократимой дроби.

gopnik1994

Влёт находится гуглем по запросу типа "approximate real number by rational". LOL.

что находится?
яндекс нашел диофантовы приближения
а гугл ниче толкового не нашел..

gopnik1994

смысл в том чтобы не парится такой фигней, как анализ анализ вообще...
ни периодической, ни непериодической...
и ниче не сокращать

psihodog

0.59962072931886716199832126092 \ne 19288/32167

yolki

скорее всего, имелось в виду
0.(59962072931886716199832126092) - проверять влом. скорее всего подходит, иначе зачем весь сыр-бор?
хотя.. calc выдаёт:
0.59962072931886716199832126091958

artimon

0.(59962072931886716199832126092) это 59962072931886716199832126092/99999999999999999999999999999
19288/32167=0.5996207293188671619983212609195759629433891876
768116392576242733235925016321074393011471383716230919886840
550875120465072900798955451238847265831442161221127242204743
992290235334348866851120713774986787701681847856498896384493
424938601672521528274318400845587092361737184070631392420803
929492958622190443622345882426088848820219479590885068548512
450648179811608169863524730313675505953306183355612895203158
516492057077128734417259924767618988404265240774706997854944
5083470637609972953648148723847421270245904188
И это еще не период
Оставить комментарий
Имя или ник:
Комментарий: