Hogyan lehet egy elég pontos tizedes törtet felírni két-nem túl nagy- egész szám hányadosaként? Pl. : A/B = 0,33277215908794856. A, B "kicsi" egész számok.
Hogyan lehet ezt hatékonyan megkeresni?
Beszorzom 2,3,4,5,... és figyelem, hogy mikor lesz
xxx.00000000... vagy xxx.99999999... ?
Ennél biztosan van jobb módszer, főleg ha "B" 6-8 számjegyű!
Ja, hogy max. 7-8 jegyű. Hát sok szerencsét hozzá. 20 tizedesjegyet hasraütésszerűen felírva 10^20 féle sorrendet kaphatsz, amiből te egy mondjuk 8 jegyű nevezős törttel és egy legfeljebb ugyanilyen hosszúságú számláló változtatgatásával lefedsz nagyságrendileg 10^8-10^9 darabot, vagyis az arány kb. 10^(-12). Ennyi az esélye, hogy a feladatod megoldható.
És azt honnan veszed, hogy a törted racionális?
A feladatom MINDIG megoldható, mert TUDOM, hogy olyan számaim vannak, hogy N=A/B ahol A,B<10^8 , de sajnos tizedestört formában kaptam őket, 20 jegyre kerekítve.
És meg is tudom oldani, - ld. nyitó kérdés - csak nagyon lassan. B osztó megtalálásához B-1 szorzásra, és vizsgálatra (egész számhoz nagyon közeli?) van szükségem.
Jobb módszert kesesek. Hasonlat: próbaosztó módszerem van, de kvadratikus szitát szeretnék!
Példák GYORS megoldásra: nem lesz belőle algoritmus, program :-(
N=0,33277215908794856163 picit < 1/3-nál
1-3N = 0,00168352273615431511 reciproka:593,99257...
...-1/594 = 0,0000000210526526316 recip:~47499952,5
Ezért: B'= 594 * 2 * 47499952,5 = 56429943570
A'= N * B'= 18778314159
lnko(A',B')=29403 ezzel egyszerűsítve:638653/1919190
... és valóban 20 tiz.jegyre
N=0,90064236838430386817
N-0,9=0,00064236838430386817 rec:1556,739...
...-1/1557=0,00000010762643617389 rec:~9291397,5
B'= 10 * 1557 * 2 * 9291397,5 = 289334118150
A'= 260586565425 ,lnko(A',B')=20202075 ezzel egyszerűsítve:
12899 / 14322
N=0,14863266814486326681 kb.:1/7
7N-1=0,04042867701404286767 hasonlít 4/99-re (,040404...)
...-4/99=0,000024636610002463 recip:~40590
B'= 99 * 40590 = 4018410
A' = 597267 ,lnko(A',B')=297 ezzel egyszerűsítve:
2011/13530
Logikus és szerencsés választások, a milliónyi variációból.
Látszik..., hasonlít... - ezekkel kezdj valamit! :-)
Én közelíttetéssel keresném. (20 jegy pontossággal számolunk)
Pl.: 0.33277215908794856
1/3 = 0.33333333333333333333 <-- Ez nagyobb, kisebb számláló kell a nevezőhöz képest arányában
1/3 = 2/6 --> 2/5 = 0.4 <-- ez meg már túl sok
15 / 50 = 0.3 <-- kevés
15 / 46 = 0.32608695652173913043 <-- kevés
64 / 190 = 0.33684210526315789474 <-- sok
127 / 380 = 0.33421052631578947368 <-- sok
253 / 760 = 0.33289473684210526316 <-- sok, (de legalább 3 jegyre megegyezik)
505 / 1520 = 0.33223684210526315789 <-- kevés
505 / 1518 = 0.33267457180500658762 <-- kevés
505 / 1517 = 0.33289386947923533289 <-- sok
1010 / 3035 = 0.33278418451400329489 <---sok , (de legalább 4 jegyre megegyezik)
... stb
Valahogy így keresném, menet közben nem baj ha nem egyszerűsített alakba van a tört. Pl. Ha sok akkor bővítem a törtet és a számlálót csökkentem vagy a nevezőt növelem, az hogy mikor melyiket érdemes nem tudom csak hasra ütés szerűen csináltam, több módszert is kidolgoznék és ezeket versenyeztetném hogy melyik a gyorsabb, a következtetések levonása után finomítani ... Kapásból az egyik a számláló és a nevező növelését és csökkentését is megcsinálnám értelem szerűen és azt venném amelyik jobban közelíti a tizedestört értékét.
Úgy kell csinálni hogy egy bizonyos iterációtól kezdve ha n tizedes jegyig egyezik akkor ezután is minden becslés legalább n tizedesig egyezzen.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!