pi_per_skript_berechnen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| pi_per_skript_berechnen [2020-11-02 10:56:04] – manfred | pi_per_skript_berechnen [2022-03-11 21:15:15] (aktuell) – manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Pi per Skript berechnen ====== | ||
| + | |||
| + | Es ist möglich eine Annäherung von Pi mit dem ArkusTangens zu berechnen. Vier mal der ArkusTangens von 1 entspricht in etwa Pi. | ||
| + | > echo " | ||
| + | 3.1415926532 | ||
| + | |||
| + | |||
| + | ==== Rechengrundlage aus Wikipedia ==== | ||
| + | |||
| + | <file bash ~/ | ||
| + | #!/bin/bash | ||
| + | |||
| + | # | ||
| + | # | ||
| + | # Pi | ||
| + | # | ||
| + | # Wikipedia | ||
| + | # | ||
| + | # | ||
| + | |||
| + | if [ " | ||
| + | B=" | ||
| + | elif [ " | ||
| + | B=" | ||
| + | else | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | echo "3; 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2, 1, 84, 2, 1, 1, 15, 3, 13, 1, 4, 2, 6, 6, 99, 1, 2, 2, 6, 3, 5, 1, 1, 6, 8, 1, 7, 1, 2, 3, 7, 1, 2, 1, 1, 12, 1, 1, 1, 3, 1, 1, 8, 1, 1, 2, 1, 6, 1, 1, 5, 2, 2, 3, 1, 2, 4, 4, 16, | ||
| + | 1, 161, 45, 1, 22, 1, 2, 2, 1, 4, 1, 2, 24, 1, 2, 1, 3, 1, 2, 1, 1, 10, 2, 5, 4, 1, 2, 2, 8, 1, 5, 2, 2, 26, 1, 4, 1, 1, 8, 2, 42, 2, 1, 7, 3, 3, 1, 1, 7, 2, 4, 9, 7, 2, 3, 1, 57, 1, 18, 1, 9, 19, 1, 2, 18, 1, 3, 7, 30, 1, 1, 1, 3, 3, 3, 1, 2, 8, 1, | ||
| + | 1, 2, 1, 15, 1, 2, 13, 1, 2, 1, 4, 1, 12, 1, 1, 3, 3, 28, 1, 10, 3, 2, 20, 1, 1, 1, 1, 4, 1, 1, 1, 5, 3, 2, 1, 6, 1, 4" \ | ||
| + | | tr -s ' | ||
| + | | ${B} \ | ||
| + | | while read ZAHL | ||
| + | do | ||
| + | if [ -z " | ||
| + | FORMEL=" | ||
| + | else | ||
| + | FORMEL=" | ||
| + | fi | ||
| + | echo " | ||
| + | done | tail -n1 | sed -e ' | ||
| + | </ | ||
| + | |||
| + | > ~/ | ||
| + | 3.141592653589793238462643383279502884197169399375105820974944592307\ | ||
| + | 81640628620899862803482534211706798214808651328230664709384460955058\ | ||
| + | 2231725359408128481117450284102701938521105559644622948954930381958 | ||
| + | |||
| + | |||
| + | ===== Pi berechnen ===== | ||
| + | |||
| + | <file bash ~/ | ||
| + | #!/bin/bash | ||
| + | |||
| + | |||
| + | # | ||
| + | # | ||
| + | # Pi berechnen | ||
| + | # | ||
| + | # https:// | ||
| + | # | ||
| + | # Es erfolgt nur eine einzige Berechnung, | ||
| + | # dabei ist die max. Länge der Aufgabe zu beachten, | ||
| + | # die bei Verwendeung von " | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # | ||
| + | VERSION=" | ||
| + | |||
| + | # | ||
| + | # Pi²/6 = 1/1² + 1/2² + 1/3² + 1/4² + 1/5² + 1/6² + 1/7² + 1/8² + 1/9² + 1/10² + ... | ||
| + | |||
| + | # 997 ist bei Verwendung von " | ||
| + | ANZAHL=' | ||
| + | for NR in $(seq 1 ${ANZAHL}) | ||
| + | do | ||
| + | if [ " | ||
| + | AUFGABE=" | ||
| + | else | ||
| + | AUFGABE=" | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | echo " | ||
| + | # Pi berechnen | ||
| + | Kettenbruch mit ${ANZAHL} Elementen:" | ||
| + | echo " | ||
| + | PI26=" | ||
| + | PI=" | ||
| + | echo "Pi = ${PI}" | ||
| + | unset ANZAHL | ||
| + | unset AUFGABE | ||
| + | |||
| + | # | ||
| + | </ | ||
| + | |||
| + | > ~/ | ||
| + | | ||
| + | # Pi berechnen | ||
| + | Kettenbruch mit 997 Elementen: | ||
| + | Pi²/6 = 1/1^2 + 1/2^2 + 1/3^2 + 1/4^2 + 1/5^2 + 1/6^2 + 1/7^2 + 1/8^2 + 1/9^2 + | ||
| + | Pi = 3.14063518479926959476 | ||
| + | |||
| + | |||
| + | <file bash ~/ | ||
| + | #!/bin/bash | ||
| + | |||
| + | # | ||
| + | # | ||
| + | # Pi berechnen | ||
| + | # | ||
| + | # https:// | ||
| + | # | ||
| + | # Um in der max. Aufgabenlänge nicht weiter beschränkt zu sein, werden die | ||
| + | # Teilaufgaben bereits berechnet. | ||
| + | # Das hat zur Folge, dass die gesamte Berechnung deutlich länger dauert | ||
| + | # und dass das Limit jetzt die Größe des Ergebnisses ist. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | VERSION=" | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | echo "${0} [Anzahl der Kettenbrüche in der Aufgabe]" | ||
| + | echo "${0} 21" | ||
| + | exit 123 | ||
| + | else | ||
| + | ANZAHL=" | ||
| + | fi | ||
| + | |||
| + | # | ||
| + | # Pi²/6 = 1/1² + 1/2² + 1/3² + 1/4² + 1/5² + 1/6² + 1/7² + 1/8² + 1/9² + 1/10² + ... | ||
| + | |||
| + | for NR in $(seq 1 ${ANZAHL}) | ||
| + | do | ||
| + | if [ " | ||
| + | AUSGABE=" | ||
| + | else | ||
| + | AUSGABE=" | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | echo "sqrt (${AUSGABE} * 6)" | bc -l | ||
| + | |||
| + | # | ||
| + | </ | ||
| + | |||
| + | Laufzeit ca. 8 Minuten (also "mehr Geduld" | ||
| + | > ~/ | ||
| + | 3.14158310432644048375 | ||
| + | |||
| + | **Es geht auch noch etwas genauer...** | ||
| + | |||
| + | <file bash ~/ | ||
| + | #!/bin/bash | ||
| + | |||
| + | |||
| + | # | ||
| + | # | ||
| + | # Pi generieren | ||
| + | # | ||
| + | # https:// | ||
| + | # | ||
| + | # Um in der max. Aufgabenlänge nicht weiter beschränkt zu sein, werden die | ||
| + | # Teilaufgaben bereits berechnet. | ||
| + | # Das hat zur Folge, dass die gesamte Berechnung deutlich länger dauert | ||
| + | # und dass das Limit jetzt die Größe des Ergebnisses ist. | ||
| + | # | ||
| + | # Zusätzlich kann die Rechengenauigkeit von " | ||
| + | # | ||
| + | # | ||
| + | |||
| + | VERSION=" | ||
| + | |||
| + | GENAUIGKEIT=" | ||
| + | # | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | echo "${0} [Anzahl der Kettenbrüche in der Aufgabe]" | ||
| + | echo "${0} 21" | ||
| + | exit 123 | ||
| + | else | ||
| + | ANZAHL=" | ||
| + | fi | ||
| + | |||
| + | # | ||
| + | # Pi²/6 = 1/1² + 1/2² + 1/3² + 1/4² + 1/5² + 1/6² + 1/7² + 1/8² + 1/9² + 1/10² + ... | ||
| + | |||
| + | for NR in $(seq 1 ${ANZAHL}) | ||
| + | do | ||
| + | if [ " | ||
| + | AUSGABE=" | ||
| + | else | ||
| + | AUSGABE=" | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | echo "sqrt (${AUSGABE} * 6)" | sed -e " | ||
| + | |||
| + | # | ||
| + | </ | ||
| + | |||
| + | Laufzeit ca. 8 Minuten (also " | ||
| + | > ~/ | ||
| + | 3.1415831043264409590369262630429532262094360645083129709541933516 | ||
| + | |||
