Räkna ut decimaler på pi med hjälp av kalkylprogram eller programmering: Skillnad mellan sidversioner
Hakan (diskussion | bidrag) |
Hakan (diskussion | bidrag) |
||
(18 mellanliggande sidversioner av samma användare visas inte) | |||
Rad 1: | Rad 1: | ||
[[Kategori:Python]] [[Kategori:Ma1c]] [[Kategori:Ma2c]] [[Kategori:Aritmetik]] | |||
{{malruta| '''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 == | == Serier == | ||
Rad 11: | Rad 26: | ||
=== Exempel med kalkylark === | === Exempel med kalkylark === | ||
: [https://docs.google.com/spreadsheets/d/1thDWZ0H29XuNt9p8aSj-ehcRh5M9mRrO_L8YeoMlNtM/edit?usp=sharing Gregory | : [https://docs.google.com/spreadsheets/d/1thDWZ0H29XuNt9p8aSj-ehcRh5M9mRrO_L8YeoMlNtM/edit?usp=sharing Gregory Leibniz] - Håkans exempel. | ||
=== Exempel med Pyhton3 kod === | === Exempel med Pyhton3 kod === | ||
Här finns en lathund till [[Python]]. | |||
<pre> | <pre> | ||
#4*(1 - (1/3) + (1/5) - (1/7)...) ~ Pi | #4*(1 - (1/3) + (1/5) - (1/7)...) ~ Pi | ||
Rad 50: | Rad 68: | ||
</pre> | </pre> | ||
== | == Förbättra programmet == | ||
{{uppgruta| '''John Wallis''' | |||
Modifiera algoritmen i Pythonprogrammet så att det använder John Wallis produkt | |||
:<math>\frac{\pi}{2} = \frac{2}{1} \cdot \frac{2}{3} \cdot \frac{4}{3} \cdot \frac{4}{5} \cdot \frac{6}{5} \cdot \frac{6}{7} \cdot \frac{8}{7} \cdot \frac{8}{9} \cdots.</math> | |||
}} | |||
== Experimentella beräkningar == | |||
=== Experimentell bestämning med sannolikhetslära i botten === | |||
{{#ev:youtube|RZBhSi_PwHU|400|right |Generating π from 1,000 random numbers}} | {{#ev:youtube|RZBhSi_PwHU|400|right |Generating π from 1,000 random numbers}} | ||
Experimentell bestämning av <math>\pi</math> är kanske inte den bästa av idéer. Låt datorn göra jobbet istället. | |||
{{clear}} | |||
=== Monte Carlo-simulering === | |||
[[File:Pi 30K.gif|thumb| | |||
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 π. | |||
: ''{{svwp|Monte_Carlo-metod}}'' | |||
{{clear}} | {{clear}} | ||
Rad 59: | Rad 101: | ||
: https://en.wikipedia.org/wiki/Pi#Computer_era_and_iterative_algorithms | : https://en.wikipedia.org/wiki/Pi#Computer_era_and_iterative_algorithms | ||
: https://en.wikipedia.org/wiki/Approximations_of_%CF%80 | : https://en.wikipedia.org/wiki/Approximations_of_%CF%80 | ||
: https://sv.wikipedia.org/wiki/Pi | |||
: [https://colab.research.google.com/drive/1Nnxd9zNlxPn4I2CbuWkAvq_y3-3D70hm Magnus Karlsson har en liknade lektion] |
Nuvarande version från 14 mars 2019 kl. 09.05
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åkans 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); } }
Förbättra programmet
Uppgift |
---|
John Wallis
Modifiera algoritmen i Pythonprogrammet så att det använder John Wallis produkt
|
Experimentella beräkningar
Experimentell bestämning med sannolikhetslära i botten
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
![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Pi_30K.gif/300px-Pi_30K.gif)
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 π.