Analyysi II, demo X, tehtävä 3 – piin arviointi, Machin kaava

Eli, eli.. Kerrotaan arctan(1) 4:lla, ja saadaan tarkasti pi.

Ohjelmoidaan pi, käytetään siihen atan potenssi sarjan kehittelmä

(Teknisesti acot on järkevämpi, käytetään sen)

paljonko=10000

def arccot(arg, tark): #arkkotangentti sarja
	sum = xpower = tark // arg #summa ja potenssi=kokonaisosa (tarkuus/argumentti)
	n = 3 # 3, 5, 7 ...
	merk = -1 # -3, 5, -7 ...
	while 1: #"ikuinen" toisto, break asti.
		xpower = xpower // (arg*arg) # x^3,x^5...
		termi = xpower // n #x^3/3, -x^5/5..
		if not termi: #lasku paatyy jos tarkuus on savutettu
			break
		sum += merk * termi #osasumma=osasumma+merkki*termi
		merk = -merk #vaihdetaan merkki
		n += 2 #3,5,7
	return sum

def pi(nrot): #ei mitaan erikoista, "wrapper"
	tark = 10**(nrot + 10)
	pi = 4 * (4*arccot(5, tark) - arccot(239, tark))
	return pi // 10**10

f = open("pi.txt","w+")
print pi(paljonko) #ruutuun
print >> f,pi(paljonko) #tiedostoon
f.close()
raw_input("Paina ENTER jatkoksi")

Ja tämä on hiukan muotoiltu lopputulos.

Ohjelman suorittaminen vaatii ActivePythonin, ja tässä on itse ohjelma.