Kirjoittaja Aihe: Ohjelmaa jolla ratkaista piin likiarvoja?  (Luettu 4426 kertaa)

AnttiLehtinen

  • Käyttäjä
  • Viestejä: 161
    • Profiili
Ohjelmaa jolla ratkaista piin likiarvoja?
« : 07.01.10 - klo:00.49 »
Onko Ubuntulle ohjelmaa jolla voisin ratkaista piin likiarvoja äärettömyyksiin, siten että ohjelma vapauttaisi ram-muistia, tallentaen siihen mennessä lasketut desimaalit tiedostoon (edellisten jatkeeksi)?
Olisi tietysti kiva että ramin käytön voisi rajata haluamakseen ja että ohjelman saisi pyörimään taustalla, niin että se ei normaalia käyttöä hidastaisi. "Pause"-nappulakin olisi kiva. Ajattelin että pitäisin tuota ohjelmaa "huvin vuoksi" päällä 24/7, kunnes olen laskenut pi:n arvoja enemmän kuin kukaan koskaan ennen...  :D
Kiva tietohan olisi jos tuossa ohjelmassa lukisi siihen mennessä ratkaistujen pi:n desimaalien lukumäärä (edes likiarvo, tyyliin 2mrd)
Antti Lehtinen

peran

  • Vieras
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #1 : 07.01.10 - klo:01.07 »
Ilmeisesti sulla on varsin tehokas kone.

Tosin nykyinen ennätys tehtiin ihan tavallisella i7-koneella, mutta todennäköisesti sitä kohta parannetaan super-koneilla. Ja ennätys on jo sitä luokkaa, että pitää koneessa olla muistiakin ihan kohtuullisesti, jotta tekee enkat.

http://www.mbnet.fi/uutiset/index.asp?Uutinen=2861

Kannattaa varmaankin tutustua Bellardin kotisivuihin ihan kunnolla, että saat hyvät algoritmit pyörittämään piin likiarvoa.

En ole tutustunut ko. algoritmeihin.

Edit - Tuskin onnistuu enkan parantaminen ihan tavallisella prutkulla ilman Bellardin desimaalien laskemisen tekniikan apua.
« Viimeksi muokattu: 07.01.10 - klo:01.11 kirjoittanut peran »

AnttiLehtinen

  • Käyttäjä
  • Viestejä: 161
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #2 : 07.01.10 - klo:12.18 »
Ohjelmointi sujui aikoinaan windows 95:n ja 98:n aikoihin c++:n voimin. Kaikenlaisia newton iteraatioita ja mielivaltaisen funktion kaikkien olemassa olevien nolla-kohtien etsimistä koneella (välillä -ääretön - +ääretön) tuli ohjelmoitua. Oli vielä tosi yksinkertainen ms-dos -pohjainen ohjelma, joka tallensi tiedostoon nollakohdat.

Kokeilin aiemmin c:tä ubuntulla ja uudella windowsilla. Ovat penteleet muutelleet mielivaltaisesti C-kielellä ohjelmoimista, niin ettei enää jaksanut kiinnostaa, kun mikään ei mennyt niin kuin ennen. Edes "Hello World" ohjelmaa en saanut käännettyä.

Onko mitään vinkkiä C(++)-ohjelmointia käsitteleviin sivuihin, mielellään niin että saisi aikaiseksi Ubuntulla päätteessä pyörivän ohjelman? Saattaisi kipinä uudelleen syttyä, jos saisi jotain (edes "Hello World") ohjelmoitua.
Antti Lehtinen

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #3 : 07.01.10 - klo:13.44 »
Onko mitään vinkkiä C(++)-ohjelmointia käsitteleviin sivuihin, mielellään niin että saisi aikaiseksi Ubuntulla päätteessä pyörivän ohjelman? Saattaisi kipinä uudelleen syttyä, jos saisi jotain (edes "Hello World") ohjelmoitua.

http://www.linfo.org/create_c1.html


SuperOscar

  • Käyttäjä
  • Viestejä: 4000
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #4 : 07.01.10 - klo:13.48 »
Ovat penteleet muutelleet mielivaltaisesti C-kielellä ohjelmoimista, niin ettei enää jaksanut kiinnostaa, kun mikään ei mennyt niin kuin ennen. Edes "Hello World" ohjelmaa en saanut käännettyä.

Ei kai nyt sentään? Kyllä Hello edelleen toimii ihan näin:

Koodia: [Valitse]
/* hello world */

#include <stdio.h>

int main(void)
{
    printf("Hello world!\n");
}
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

ilkkak

  • Käyttäjä
  • Viestejä: 405
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #5 : 07.01.10 - klo:15.10 »
Onko Ubuntulle ohjelmaa jolla voisin ratkaista piin likiarvoja äärettömyyksiin, siten että ohjelma vapauttaisi ram-muistia, tallentaen siihen mennessä lasketut desimaalit tiedostoon (edellisten jatkeeksi)?
Olisi tietysti kiva että ramin käytön voisi rajata haluamakseen ja että ohjelman saisi pyörimään taustalla, niin että se ei normaalia käyttöä hidastaisi. "Pause"-nappulakin olisi kiva. Ajattelin että pitäisin tuota ohjelmaa "huvin vuoksi" päällä 24/7, kunnes olen laskenut pi:n arvoja enemmän kuin kukaan koskaan ennen...  :D
Kiva tietohan olisi jos tuossa ohjelmassa lukisi siihen mennessä ratkaistujen pi:n desimaalien lukumäärä (edes likiarvo, tyyliin 2mrd)

Otat aika kovan haasteen. Tutustu ensin laskennan dokumentointiin Bellardin kotisivuilla. Vaatii itseasiassa aika paljon matematiikan osaamista.

Tälläinen softa / rauta -yhdistelmä näyttää olleen:

The Linux Operating System was used with the 64 bit Red Hat Fedora 10 distribution. The 7.5 TB disk storage was managed using software RAID-0 and the ext4 filesystem. Files of up to 2.5 TB were manipulated during the computation.

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #6 : 07.01.10 - klo:15.34 »
Ovat penteleet muutelleet mielivaltaisesti C-kielellä ohjelmoimista, niin ettei enää jaksanut kiinnostaa, kun mikään ei mennyt niin kuin ennen. Edes "Hello World" ohjelmaa en saanut käännettyä.

Ei kai nyt sentään? Kyllä Hello edelleen toimii ihan näin:

Koodia: [Valitse]
/* hello world */

#include <stdio.h>

int main(void)
{
    printf("Hello world!\n");
}

Paitsi että funktion joka on määritelty palauttamaan int kuuluu sellainen myös palauttaa.


AnttiLehtinen

  • Käyttäjä
  • Viestejä: 161
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #7 : 07.01.10 - klo:15.55 »
Ja itse olin tottunut käyttämään
Koodia: [Valitse]
cout << "tekstiä\n";sekä
Koodia: [Valitse]
void main(){}että
Koodia: [Valitse]
#include <iostream.h>
Siitä on jo aikaa kun noilla kokeilin. Eikä silloin toiminnut, jostain sain tietää että kielen määrityksiä on päivitetty nykyaikaisemmiksi. Turhaannuin silloin... Aloin harjoitella nyt pythonia, se vaan on hieman sekavaa, ulkoasultaan. Latasin DrPython nimisen ohjelman joka kivasti jäsentelee ja värittää. Ihan ehdoton if- ja muidenkin ehto-lausekkeiden kanssa.

Juu tutustuin tuohon laskenta tapaan ja niihin tulosten oikeellisuuksien varmentamis-tapoihin ja totesin itsekin että tuo on jo liikaa... Ihmetyttää ram-muistin ja kiintolevytilan suuri määrä, tai ennemminkin sen "pakollisuus".
Ehkä ohjelma olisi aivan liian hidas jos joutuisi tallentamaan tietoja useammin, vaikka käsittääkseni aina on ollut suurempi ongelma prosessoriteho, kuin kiintolevyn tai ram-muistin yhteinen tiedostoon kirjoittamiseen kuluva aika?
Kyllähän ihan perus kovalevykin (jopa ulkoinen) pystyy siirtämään tietoa jopa megatavukaupalla/s. Pystyykö siis tämän kaverin tekemä ohjelma todellakin laskemaan piin desimaaleja miljoonia/s?
Antti Lehtinen

snifi

  • Vieras
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #8 : 07.01.10 - klo:16.01 »
Itse lähtisin tekemään tämän tyyppistä ohjelmaa sqlite-tietokannan kautta. Se olisi käytännöllinen tapa pitää kirjaa välituloksista ja voisit kokeilla miten eri algoritmit piin desimaalien laskemiseksi vaikuttavat laskentaan. Pari algoritmia kokeiltuasi huomaat, että niiden tuottamat tulokset ovat ajan kuluessa lineaarisia, eli ihmisen kannalta piin tuhannessa ensimmäisessä desimaalissa on yhtä paljon informaatiota kuin 4 miljardissa. (Eli periaatteessa huomaat, että desimaaleja voi laskea miten pitkään hyvänsä, ainoa rajoittava tekijä on aika ja että uudet desimaalit ovat varsin mielenkiinnottomia ja syövät kiintolevytilaa sitä mukaan kun niitä lasketaan.) Myöhemmin myös havaitset, että taide on mielenkiintoisempaa kuin matematiikka, ja päätät luopua koko ajatuksesta.

SuperOscar

  • Käyttäjä
  • Viestejä: 4000
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #9 : 07.01.10 - klo:17.49 »
Ja itse olin tottunut käyttämään
Koodia: [Valitse]
cout << "tekstiä\n";sekä
Koodia: [Valitse]
void main(){}että
Koodia: [Valitse]
#include <iostream.h>
Siitä on jo aikaa kun noilla kokeilin.

Ahaa, puhutkin C++:sta etkä C:stä! C:tä ei käsittääkseni ole muutettu millään lailla, mutta C++:aan on tullut nimiavaruuksiin liittyviä muutoksia.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

ilkkak

  • Käyttäjä
  • Viestejä: 405
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #10 : 07.01.10 - klo:19.22 »

Kyllähän ihan perus kovalevykin (jopa ulkoinen) pystyy siirtämään tietoa jopa megatavukaupalla/s. Pystyykö siis tämän kaverin tekemä ohjelma todellakin laskemaan piin desimaaleja miljoonia/s?

Pelkästään lopputuloksen tallettamiseen tarvitaan Bellardin mukaan 1,1 Teratavua. jos io levylle on esim. 1 megatavu/s, niin silloin pelkästään luvun kirjoittaminen vie 12 päivää. Jos io:n nopeus on 300 Mt/s (esim usb-3:n teoreettinen nopeus), niin pelkkä talletus vie yhden tunnin.  Matematiikalla saa kyllä aikaan helposti nopeimmankin tietokoneen polvilleen laittavia ongelmia. Matematiikkaa on kyllä paljon mielenkiintoisempaakin kuin ko. ongelma. @snifi: Niille esim. taidekin taitaa kiinnostavuudessaan jäädä pahasti kakkoseksi

Pii -ongelma ei taida valitettavasti rinnakkaistua.

AnttiLehtinen

  • Käyttäjä
  • Viestejä: 161
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #11 : 09.01.10 - klo:00.41 »
Hieman off-topic: Entäs alkuluvut? Mitäs kaikkia selvittämättömiä matemaattisia lukuja/sarjoja/vakioita onkaan?
Antti Lehtinen

zepotus

  • Käyttäjä
  • Viestejä: 271
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #12 : 09.01.10 - klo:09.09 »
Nuo alkuluvut varmaankin tulevat olemaan niitä kivoimpia...

Ubuntu 12.04 64-bit (i5-750 @ 3.8 Ghz, 4Gt, OCZ Agility 3 60Gt, 150Gt Raptor + 500 Gt + 1000 Gt, GT240 nvidia)

Vika/fiba

  • Käyttäjä
  • Viestejä: 652
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #13 : 09.01.10 - klo:12.14 »
Paitsi ovat kivoja, alkuluvuilla voi myös tehdä kunnon tilin!
http://www.mersenne.org/
E. Alkulukuja voi näemmä ostaa valmiiksi painettuna ;)
http://www.perfsci.com/wall-art.asp
« Viimeksi muokattu: 09.01.10 - klo:12.27 kirjoittanut Vika/fiba »

snifi

  • Vieras
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #14 : 09.01.10 - klo:18.41 »
Jos geometria kiinnostaa, niin ehdottaisin että alkaisit laatimaan maailman suurinta visuaalista L-system -kirjastoa. http://en.wikipedia.org/wiki/L-system
Laittaisit koneen käymään järjestelmällisesti lävitse kaikki lähtökaavat, ja muutokset alkaen yksinkertaisista aksioomeista 'F', 'F+F', 'F-F', 'F+F+F', 'F+F-F',... Sitten piirtäisit kuvat, valikoisit pois sellaiset joissa ei ole uutta informaatiota, jne.

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: Ohjelmaa jolla ratkaista piin likiarvoja?
« Vastaus #15 : 09.01.10 - klo:21.09 »
Ahaa, puhutkin C++:sta etkä C:stä! C:tä ei käsittääkseni ole muutettu millään lailla, mutta C++:aan on tullut nimiavaruuksiin liittyviä muutoksia.

jos nyt ihan tarkkoja ollaan, niin C:tä on kyllä muutettu hitusen. muutokset ovat kuitenkin olleet enimmäkseen lisäyksiä ja ovat enimmäkseen taaksepäin yhteensopivia. itse asiassa C-kieltä taidetaan olla päivittämässä edelleenkin. joka tapauksessa kääntäjä hanskaa kyllä ANSI C:n siinä missä C99:nkin.

C++:aan sen sijaan on tullut aika paljonkin uutta standardoinnin myötä. ei pelkästään nimiavaruuksiin liittyvää kamaa, mutta nuo nimiavaruudet ja otsikkotiedostojen nimimuutokset ovat varmaan se mihin ohjelmointi on tyssännyt, vaikka kyseiset muutokset itsessään ovat aika simppeleitä.

no joo, taisi mennä aika paljon aiheen vierestä.
Janne