Seuraa 
Viestejä568
Liittynyt10.10.2013

Ylläoleva laskukaava on kuulemma yksi nopeiten suppenevista. Yritän REBOL-kielellä laskea edes muutaman desimaalin oikein, mutta ei onnistu. REBOL-kielessä merkintä "power 5 n" tarkoittaa 5:n korottamista n:teen potenssiin. Osaatteko tehdä jollain kielellä toimivan koodin tai kertoa missä mun koodissa on virhe? Otan noita termejä sitten 10 tai 20, niin saan tulokseksi saman luvun 3.18326359832632.

Tässä vielä loopissa käyttämäni sijoitus lauseke tekstinä:
pii: pii + (4 / (n * power 5 n)) - (4 / ((n + 2) * power 5 (n + 2))) - (1 / (n * power 239 n)) + (1 / ((n + 2) * power 239 (n + 2)))

Bernard Shawn: ”Tiede on aina väärässä: se ei koskaan ratkaise ongelmaa luomatta kymmentä lisää.”

Sivut

Kommentit (43)

Keckuli
Seuraa 
Viestejä568
Liittynyt10.10.2013

Neutroni kirjoitti:
Siinä varmaan pitäisi olla n = n+2:n tilalla n = n+4, koska n kasvaa aina kahdella ja lasket kaksi termiä kerrallaan.

Totta., Ehdit vastata ennen kuin minä :) Tämä koodi toimii. Nyt aion vääntää tuon koodin Pytrhonille ja laskea itse miljoona piin desimaalia :)

Bernard Shawn: ”Tiede on aina väärässä: se ei koskaan ratkaise ongelmaa luomatta kymmentä lisää.”

Neutroni
Seuraa 
Viestejä30510
Liittynyt16.3.2005

Luulen, että se menee helpommin sillä pii/4 = 1 + 1/3 - 1/5 + 1/7 - ... kaavalla, niin ei tarvita potenssiinkorotuksia.

Meinaatko tehdä kertolaskut FFT-algoritmilla?

Keckuli
Seuraa 
Viestejä568
Liittynyt10.10.2013

Neutroni kirjoitti:
Luulen, että se menee helpommin sillä pii/4 = 1 + 1/3 - 1/5 + 1/7 - ... kaavalla, niin ei tarvita potenssiinkorotuksia.

Meinaatko tehdä kertolaskut FFT-algoritmilla?

Tuosta sarjakehitelmästä sanotaan:
https://fi.wikipedia.org/wiki/Pii_(vakio)
"Tämä sarja suppenee kuitenkin liian hitaasti, jotta sitä kannattaisi käyttää piin likiarvojen laskemiseen. Siitä olisi laskettava vähintään 294 ensimmäistä termiä, jotta saataisiin edes kaksidesimaalinen likiarvo 3,14"

Tuolla toisella sarjakehitelmällä ei tarvitse laskea kuin 6 (12) ensimmäistä termiä, niin saadaan piille likiarvo REBOL-kielen tarkkuudellaa oikein 3.14159265358979.

Ihan tavallisella kertolaskulla teen kertolaskut. Mulla on käytössä Pythonin gmpy2 ohjelma kirjasto ja sieltä mpfr, mikä mahdollistaa laskujen tekemisen miljoonien desimaalien tarkkuudella. Yllä koodi, joka ei tosin vielä toimi. Olen ihan vasta-alkaja Pythonin ohjelmoinnissa.

Bernard Shawn: ”Tiede on aina väärässä: se ei koskaan ratkaise ongelmaa luomatta kymmentä lisää.”

Neutroni
Seuraa 
Viestejä30510
Liittynyt16.3.2005

Keckuli kirjoitti:

"Tämä sarja suppenee kuitenkin liian hitaasti, jotta sitä kannattaisi käyttää piin likiarvojen laskemiseen. Siitä olisi laskettava vähintään 294 ensimmäistä termiä, jotta saataisiin edes kaksidesimaalinen likiarvo 3,14"

Tuolla toisella sarjakehitelmällä ei tarvitse laskea kuin 6 (12) ensimmäistä termiä, niin saadaan piille likiarvo REBOL-kielen tarkkuudellaa oikein 3.14159265358979.

Ei se sitten tuo ollut. Milläköhän joskus leikin. Siinä taisi olla jotain arkustangentteja. Ehkä tämä: https://en.wikipedia.org/wiki/Machin-like_formula  ..

Se oli joskus opiskeluaikana ja muistaakseni kymmeniä tuhansia desimaaleja sai laskettua nopeasti omilla tyhmillä kertolaskurutiineilla.

Lainaus:
Ihan tavallisella kertolaskulla teen kertolaskut. Mulla on käytössä Pythonin gmpy2 ohjelma kirjasto ja sieltä mpfr, mikä mahdollistaa laskujen tekemisen miljoonien desimaalien tarkkuudella. Yllä koodi, joka ei tosin vielä toimi. Olen ihan vasta-alkaja Pythonin ohjelmoinnissa.

OK. Se on tietysti fiksua käyttää toimivaksi tiedettyjä kirjastoja. Minulla on vain pakkomielle koodata kaikki itse, jos teen itselle.

Kokeilin joskus FFT-kertolaskua 9^(9^9):n laskemiseen. Jätin työkoneen jauhamaan kesäloman ajaksi. Se laski reilut 20 vuorokautta, sai tuloksen, jossa oli oikea määrä numeroita ja ensimmäiset oikein, mutta viimeiset puuta heinää. En jaksanut sen enempää ihmetellä sitä. Siihen aikaan sen kokoista lukua ei saanut kerralla muistiin, vaan se oli kovalevyllä useana tiedostona ja vain osa kerrallaan muistissa. Siksi siihen meni niin älyttömästi aikaa.

PPo
Seuraa 
Viestejä13396
Liittynyt10.12.2008

Keckuli kirjoitti:
Ylläoleva laskukaava on kuulemma yksi nopeiten suppenevista. Yritän REBOL-kielellä laskea edes muutaman desimaalin oikein, mutta ei onnistu. REBOL-kielessä merkintä "power 5 n" tarkoittaa 5:n korottamista n:teen potenssiin. Osaatteko tehdä jollain kielellä toimivan koodin tai kertoa missä mun koodissa on virhe? Otan noita termejä sitten 10 tai 20, niin saan tulokseksi saman luvun 3.18326359832632.

Tässä vielä loopissa käyttämäni sijoitus lauseke tekstinä:
pii: pii + (4 / (n * power 5 n)) - (4 / ((n + 2) * power 5 (n + 2))) - (1 / (n * power 239 n)) + (1 / ((n + 2) * power 239 (n + 2)))

n=1

pii=0

pii=pii+(-1)^(n+1)/(2n-1)*(4/5^(2n-1)-1/239^(2n-1))

Lyde19
Seuraa 
Viestejä3878
Liittynyt7.7.2013

Joskus tein Rubylla huvikseen muutamalle prosessorille säikeytetyn piin arvon laskennan.
Kanattaa valita tietokoneen laskentaan optimoitu laskukaava.

Keckuli
Seuraa 
Viestejä568
Liittynyt10.10.2013

Ei toimi, ei toimi. Nollaa pukkaa tulokseksi. Yo. ohjelma tulostaa:

(mpfr('0.0',100), datetime.timedelta(0, 0, 297000))

Virhe täytynee olla tuossa sijoituslausekkeessa:
pii2=pii2+(4/(ind*(5**ind)))-(4/(((ind+2)*5**(ind+2))))-(1/(ind*239**ind))+(1/((ind+2)*239**(ind+2)))
REBOL-kielen sijoituslauseke, joka toimi:
pii: pii + (4 / (n * power 5 n))  - (4 / ((n + 2) * power 5 (n + 2))) - (1 / (n * power 239 n))  + (1 / ((n + 2) * power 239 (n + 2)))

Olen nyt puoli tuntia sitä tuijottanut tupta Python kielen sijoituslauseketta, mutta en näe siinä virhettä.

Bernard Shawn: ”Tiede on aina väärässä: se ei koskaan ratkaise ongelmaa luomatta kymmentä lisää.”

Keckuli
Seuraa 
Viestejä568
Liittynyt10.10.2013

Neutroni kirjoitti:
Neutroni kirjoitti:
Ei se sitten tuo ollut. Milläköhän joskus leikin. Siinä taisi olla jotain arkustangentteja. Ehkä tämä: https://en.wikipedia.org/wiki/Machin-like_formula

-

Tuo on muuten täsmälleen sama kuin sinun kaava.

Joo, mutta siitä ollaan arkustangentin Taylorin sarjakehitelmän avulla saatu minun käyttämä sarjakehitelmä.

Bernard Shawn: ”Tiede on aina väärässä: se ei koskaan ratkaise ongelmaa luomatta kymmentä lisää.”

Keckuli
Seuraa 
Viestejä568
Liittynyt10.10.2013

Neutroni kirjoitti:
Neutroni kirjoitti:
Ei se sitten tuo ollut. Milläköhän joskus leikin. Siinä taisi olla jotain arkustangentteja. Ehkä tämä: https://en.wikipedia.org/wiki/Machin-like_formula

-

Tuo on muuten täsmälleen sama kuin sinun kaava.

Ai niin se olikin Neutroni, joka kirjoitti minulle "sinä=minä" Luulin, että joku muu kirjoitti Neutronille, että Neutroni käytti samaa sarjakehitelmää...

Bernard Shawn: ”Tiede on aina väärässä: se ei koskaan ratkaise ongelmaa luomatta kymmentä lisää.”

Keckuli
Seuraa 
Viestejä568
Liittynyt10.10.2013

Vaikka tuosta yksinkertaisemmasta algoritmista laskee kymmenen miljoona ensimmäsitä termiä, niin ei saa kuin:
3.14159245358978 eli kuusi desimaalia oikein
>>
oikea pii:
3.14159265359265

Bernard Shawn: ”Tiede on aina väärässä: se ei koskaan ratkaise ongelmaa luomatta kymmentä lisää.”

Keckuli
Seuraa 
Viestejä568
Liittynyt10.10.2013

Keckuli kirjoitti:

oikea pii:
3.14159265359265

Eiku:

3.14159265358979

Mutta kuitenkin vain kuusi desimaalia 10 miljoonalla termillä.

Bernard Shawn: ”Tiede on aina väärässä: se ei koskaan ratkaise ongelmaa luomatta kymmentä lisää.”

Sivut

Suosituimmat

Uusimmat

Uusimmat

Suosituimmat