Hallo liebe Python-Gemeinde,
ich habe vor einiger Zeit mit Python angefangen und bin nun dabei
Pi mit den Gauß-Algorithmus zu berechnen. Das ganze scheitert leider
daran, dass ich nicht weiß wie ich in Python Summenzeichen benutze.
Ich hoffe, dass ich nichts offensichtliches übersehe und euch mit so etwas
nerve.
Vielen Dank im vorraus,
mifo
Summenzeichen
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Gar nicht. Du musst das Summenzeichen "ausrollen":
Σ_{i=0}^{20} wird zu
Σ_{i=0}^{20} wird zu
Code: Alles auswählen
sum(range(21))
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Vielen Dank. Könntest du mir den Aufbau bitte noch etwas genauer
erklären?
Wie kommst du in dem Fall auf die 21?
erklären?
Code: Alles auswählen
sum(range(21))
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
In der Summenzeichennotation sind sowohl das untere, als auch das obere Ende inklusive, bei `range` nur das untere (in dem Fall die implizite 0) das obere Ende ist exklusiv, d.h. du musst 1 hinzuzaehlen.
Direkt ein Tipp: Wenn dir etwas unklar ist, probier es doch selbst im Interpreter!
Direkt ein Tipp: Wenn dir etwas unklar ist, probier es doch selbst im Interpreter!
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Hey,
tut mir Leid, dass ich mich so blöd anstelle aber ich steige da immer
noch nicht durch. Ich zeige dir mal meinen bisherigen Code, vielleicht
kannst du mir das anhand dieses Beispiels besser erläutern.
Vielen Dank,
mifo
tut mir Leid, dass ich mich so blöd anstelle aber ich steige da immer
noch nicht durch. Ich zeige dir mal meinen bisherigen Code, vielleicht
kannst du mir das anhand dieses Beispiels besser erläutern.
Code: Alles auswählen
# Programm zur Berechnung von Pi durch
# den Gauß'schen Algorithmus
import math
n = input()
nintegerwurzel = int(math.sqrt(n))
halbnint = int(math.sqrt(n/2))
Algorithmus = 1 + 4 * nintegerwurzel + 4 * halbnint ** 2 + 8 * Summe von halbnint + 1 bis nintegerwurzel über Integer-Wurzel aus N - halbnint + 1 ** 2
Vielen Dank,
mifo
Du musst die einzelnen Summanden einzeln ausrechnen und addieren, beispielsweise mit einer for-Schleife.mifo hat geschrieben:ich habe vor einiger Zeit mit Python angefangen und bin nun dabei
Pi mit den Gauß-Algorithmus zu berechnen. Das ganze scheitert leider
daran, dass ich nicht weiß wie ich in Python Summenzeichen benutze.
z.B. \sum_{i=1}^{20} \frac{1}{n^2} wird zu
Code: Alles auswählen
from __future__ import division # nötig, da sonst Integer-Division bei ganzen Zahlen, schreibs einfach unreflektiert in jede Datei rein wenn du was ausrechnen willst und Python 2.x verwendest
summe = 0
for i in range(1, 20 + 1): # iteriert über die ganzen Zahlen von 1 bis 20
summe += 1/i**2
print summe
Ich kenne diese "Formel von Gauß" auch nicht, aber habe erhebliche Zweifel daran, dass das in der gezeigten Form richtig ist. Am einfachsten wird es sein, wenn du mal die Quelle nennst oder die Originalformel postest.
Im übrigen findest du hier im Forum mehrere Threads, die sich mit der Berechnung von pi beschäftigen. Das Problem scheint jedoch zu sein, dass man diese Beiträge über die Suchfunktion schwer finden kann, weil Wörter, die aus weniger als 3 Buchstaben bestehen, bei der Suche ignoriert werden ...
Im übrigen findest du hier im Forum mehrere Threads, die sich mit der Berechnung von pi beschäftigen. Das Problem scheint jedoch zu sein, dass man diese Beiträge über die Suchfunktion schwer finden kann, weil Wörter, die aus weniger als 3 Buchstaben bestehen, bei der Suche ignoriert werden ...
Guten Morgen,
Ich habe die Formel von einem Mathe-Arbeitsblatt. Ich hab das ganze mal
fotografiert und die entsprechenden Formeln makiert.
http://www.abload.de/image.php?img=dsc064001ve7.jpg
Viele Grüße
mifo
Ich habe die Formel von einem Mathe-Arbeitsblatt. Ich hab das ganze mal
fotografiert und die entsprechenden Formeln makiert.
http://www.abload.de/image.php?img=dsc064001ve7.jpg
Viele Grüße
mifo
Code: Alles auswählen
def gauss_pi(n):
b, a = int(n**.5), int((.5*n)**.5)
return (1+4*b+4*a*a+8*sum(int((n-i*i)**.5) for i in xrange(a+1,b+1)))/float(n)
print gauss_pi(10**12)
Code: Alles auswählen
3.14159264963
Hey,
vielen Dank an euch alle Den Code von dir, numerix, finde ich
super, da er wie ich finde sehr elegant ist. Ich werde mich demnächst
nochmal an eine Version mit einer Schleife setzen und diese bei den Code-Schnipseln
hochladen.
Schönen Tag euch alle,
mifo
vielen Dank an euch alle Den Code von dir, numerix, finde ich
super, da er wie ich finde sehr elegant ist. Ich werde mich demnächst
nochmal an eine Version mit einer Schleife setzen und diese bei den Code-Schnipseln
hochladen.
Schönen Tag euch alle,
mifo