![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 315 Pomógł: 1 Dołączył: 6.08.2003 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Zapewne wykaże się wręcz lamerską niewiedzą, ale interesuje mnie gdzie moge dostać(znaleźć) źródło funkcji(wielu nie jednej ![]() Mój problem polega na tym że musze napisać program wyliczający liczbe e z dowolną precyzją w C. Wiadomo że żaden typ nie daje nieskończonej precyzji(mój też nie będzie), ale jakoś musze sie do tego zabrać. Myślałem żeby każdą kolejną liczbe po przecinku wciskać w tablice(osobne pole), ale żeby to zrobić musze jakoś najpierw dostać te liczby z powyżej 15 miejsca po przecinku. Inna opcja to złożyć jakiś własny typ zmiennych, tylko czy da rade złożyć go z kilku double które razem dadzą np. 50 miejsc po przecinku? Jak uda mi się coś wykombinować to dam znać ![]() Pozdrawiam. Ten post edytował s_w_ir 5.06.2006, 11:10:31 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
-------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
A myślałeś o ułamkach zwykłych? Mógłbyś część całkowitą przechowywać jako zwykły int i resztę jako dwa int - dzielną i dzielnik (a+b/c). Co prawda znając życie szybko by się wyczerpał zakres integera w ułamku, ale może przy odpowiednim skracaniu będzie ok?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 315 Pomógł: 1 Dołączył: 6.08.2003 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje za odpowiedzi. Przeglądam źródła bcmath, ale jest to dość zagmatwane. Potrafi ktoś prostymi słowami opsiać na czym polega magia bcmath?(oczywiście dalej sam kombinuje)
@jabol Najpierw OT: gdy przybyłem na forum miałeś swój 1000 post odpowiadając mi na mój pierwszy, teraz będziesz miał 2000:) Problem w tym że nawet tak nic nie zdziałam bo nie mam skąd brać liczb powyżej 15 miejsca po przecinku. Skracać też nie ma co bo jak skracać: Kod 0.456521325765345232546...2344653...5653... No chyba że jest coś czego nie rozumiem w Twoim pomyśle to mógłbyś go rozwinąć? Dziękuje za pomoc. Ten post edytował s_w_ir 5.06.2006, 19:36:07 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 13.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co pamiętam, to obliczenia na dużych liczbach wykonuje się z pomocą wielomianów (i tablic). Ale niestety szczegółów nie pamiętam.
Popatrz także na metodę Monte Carlo http://www.i-lo.tarnow.pl/edu/inf/alg/calki/pages/005.php ewentualnie tu masz liczbe e z duuuuża ilością miejsc po przecinku, jak nie będziesz musiał pokazywać źródła programu to rozwiązanie nasuwa się samo .... http://antwrp.gsfc.nasa.gov/htmltest/gifcity/e.1mil Ten post edytował bpawlik 6.06.2006, 10:29:12 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 315 Pomógł: 1 Dołączył: 6.08.2003 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje, ale program musze napsisać i chce(naucze się pewnej rzeczy o której od dawna myślałem). Będe poszukiwał w kierunku wielomianów w takim razie.
EDit. Jakoś nie jestem sobie w stanie wyobrazić nawet jak można to programowo stworzyć, tzn. jak obliczyć 16, i dalej, miejsce po przecinku podczas gdy long double przyjmuje tylko 15 miejsc po przecinku. Do liczby Pi znalazłem wzór na obliczanie k-tej liczby po przecinku(zresztą moge obliczyć Pi lub e to nieważne, chodzi o to żeby przedstawić sposób przechowywania tych liczb), ale to nie jest to czego szukam. Może byc nawet coś bardzo obciążające procesor, ale byle można to uznać za metodę..... ....pare skeund później.... właśnie wpadłem na pomysł żeby liczyć to(1+1/n)^n i co pare(co każdą?) iterację, mnożyć to przez 10 i początek wsadzać do tablicy to co znika z lewej strony. Zresztą rozpiszę to zaraz na kartce i się okaże czy to możliwe... Ten post edytował s_w_ir 6.06.2006, 20:34:12 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 07:37 |