Räkna ut decimaler på pi med hjälp av kalkylprogram eller programmering

Från Wikiskola
Version från den 15 mars 2018 kl. 07.14 av Hakan (diskussion | bidrag)
Hoppa till navigering Hoppa till sök
Mål för undervisningen Kom igång med programmering i matematiken.

Målet är att du ska köra ditt första program för att utföra matematiska beräkningar. Du bör testa att modifiera algoritmen så att dina beräkningar blir mer effektiva.

Målet är inte att du ska lära dig programmering på matematiklektionen men det är oundvikligt att du ändå lär dig lite Python-kod.


Här finns färdiga kodexempel som du kan använda för att testa kombinationen programmering och matematik.

Koden beräknar ett närmevärde på pi genom att omväxlande addera respektive subtrahera allt mindre tal Det är en av de första algoritmerna för att beräkna pi och den är inte särskilt effektiv. Hur bra får du undersöka själv. Genom att följa länkarna nedan kommer du att hitta mycket bättre algoritmer.

Skälet att vi valde denna algoritm är att den är lätt att programmera och därför överskådlig så det är enkelt att förstå programmet.

Serier

Vi tar ett enkelt exempel från första länken nedan och gör det i kalkylprogram och i Python

the Leibniz formula for [math]\displaystyle{ \pi }[/math], named after Gottfried Leibniz , states that

[math]\displaystyle{ 1 \,-\, \frac{1}{3} \,+\, \frac{1}{5} \,-\, \frac{1}{7} \,+\, \frac{1}{9} \,-\, \cdots \,=\, \frac{\pi}{4}. }[/math]

eller

[math]\displaystyle{ \pi = 4 (1 \,-\, \frac{1}{3} \,+\, \frac{1}{5} \,-\, \frac{1}{7} \,+\, \frac{1}{9} \,-\, \cdots ) }[/math]

Exempel med kalkylark

Gregory Leibniz - Håkan exempel.

Exempel med Pyhton3 kod

Här finns en lathund till Python.

#4*(1 - (1/3) + (1/5) - (1/7)...) ~ Pi
iterationer = int(input("Hur många iterationer?"))
pi = 0
n = 1
t = 1
for i in range(iterationer):
	pi += (1/n)*t
	n += 2
	t = t*(-1)
	print(i+1, pi*4)

Exempel i JavaScript

let pi = 1, b = 1;

for(let i = 3 ;; i += 2) {
	pi += (b *= -1) * 1/i;

	console.log(pi * 4);
}

Exempel i Java

public static void main(String[] args) {
	double pi = 1, b = 1;
	
	for(int i = 3 ;; i += 2) {
		pi += (double) (b *= -1) * 1/i;
		
		System.out.println(pi * 4);
	}
}

Experimentella beräkningar

Experimentell bestämning med sannolikhetslära i botten

Generating π from 1,000 random numbers

Experimentell bestämning av [math]\displaystyle{ \pi }[/math] är kanske inte den bästa av idéer. Låt datorn göra jobbet istället.

Monte Carlo-simulering

En Monte Carlo-metod för att uppskatta den matematiska konstanten π: Genom att dra slumptal likformigt från hela kvadraten och räkna hur stor andel av dem som hamnar inom kvartscirkeln och multiplicera med 4 fås ett närmevärde för π.

Värt att pröva.

En Monte Carlo-metod kan användas för att bilda ett närmevärde för π: enligt formeln för cirkelns area är arean av en kvartscirkel med radien 1 exakt ¼π. Placeras en kvartscirkel i en kvadrat med sidan och arean 1, som i figuren, kommer andelen av kvadraten som ligger i kvartscirkeln att vara samma som dess area. Genom att slumpmässigt generera likformigt fördelade punkter i kvadraten och räkna hur många av dem som hamnar innuti kvartscirkeln kan andelen uppskattas, och därmed arean på kvartscirkeln. Ju fler punkter som genereras desto bättre blir uppskattningen, enligt de stora talens lag. Om uppskattningen multipliceras med 4 får man en uppskattning av π.

Wikipedia skriver om Monte_Carlo-metod

Länkar

https://en.wikipedia.org/wiki/Pi#Computer_era_and_iterative_algorithms
https://en.wikipedia.org/wiki/Approximations_of_%CF%80
https://sv.wikipedia.org/wiki/Pi