Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB.NET: Piin likiarvo

TJN [14.09.2004 20:43:19]

#

Laskee piin likiarvon jokseenkin tarkasti ympyrän sädettä käyttäen

'PIIN LIKIARVON LASKEMINEN
   'Koodi laskee ympyrän säteestä neljänneksen piirtämällä
   'pieniä janoja ja laskemalla ne yhteen
   'tulos kerrotaan neljällä ja sijoitetaan ympyrän säteen kaavaan
   'tämä on ymmärrettävä tapa laskea piin likiarvo


   Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
       Dim x As Double         'x koordinaatti
       Dim y As Double         'y koordinaatti
       Dim xb As Double        'aikaisempi x koordinaatti
       Dim yb As Double        'aikaisempi y koordinaatti
       Dim pii As Double       'ratkaisu
       Dim n As Double         'kuinka monta viivaa lasketaan  ja ympyrän säde
       Dim viivanpituudet As Double    'ympyrän säteen neljännes

       n = 1000000
       xb = 0                  'x alkaa nollasta
       yb = n                  'y ympyrän huipulta eli sama kuin säde

       For x = 0 To n          '

           y = (n ^ 2 - x ^ 2) ^ (1 / 2)   'y laskettuna pythagoraalla
           viivanpituudet = viivanpituudet + (((x - xb) ^ 2 + (yb - y) ^ 2) ^ (1 / 2))
           'viivan pituus kasvaa joka kerta yhdellä viivalla
           'viiva tulee pythagoraan lauseesta a^2+b^2=viiva^2
           'a ja b ovat x - xb  yb - y eli uusi - vanha ja vanha - uusi

           xb = x  'vanhat arvot pitää olla aina jälkeen y ja tulos muuttujien
           yb = y

       Next x

       pii = viivanpituudet / n * 2    '2 * pii * r = 4* viivanpituus
       'komennolla math.PI saa vertailu pi:n
       TextBox4.Text = pii
       TextBox1.Text = Math.PI
   End Sub

KimmoKM [18.09.2004 12:55:44]

#

Minulla ei ole Visual Basiccia, mutta haluaisin tietää, kuinka monta desimaalia tuo laskee oikein.

TJN [18.09.2004 19:08:11]

#

9 desimaalia Jos laittaa n arvoksi suuremman luvun saa vielä pari lisää. Kestää vain vähän kauemmin laskea.

ohjelman antama tulos: 3,14159265329581
oikea: 3,14159265358979

dungeon86 [23.09.2004 14:27:24]

#

miten homma tehdään c:llä?

ErroR++ [30.03.2011 16:09:16]

#

Joo, kyllä toimi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta