wikipediaによく記述されていますが、至る所でこの関数が現れてきます。
正規分布を用いる統計学や、グリーン関数論、量子力学、統計力学等など、
初等的な関数扱いされています。
ガウス関数の説明をするためには、ネイピア数と指数関数などの高校数学だけで充分です。
wikipediaの説明に任せますw
なので、pythonで、ガウス関数をば。
f(x)=exp(-x*x)
----python---script---
import math
def gaussfunc(x):
return math.exp(-x*x)
----python script----
となります。これを次はガウス積分に使えますw
積分方法は台形公式を使ってしまいましょう。
----python---script---
import math
def gaussfunc(x):
return math.exp(-x*x)
def integrate(a,b,n):
integ=0.0
for i in range(0,n):
w=float(b-a)/n
x0=a+float(i)*w
x1=a+float(i+1)*w
y=w*(gaussfunc(x0)+gaussfunc(x1))*0.5
integ+=y
return integ
print integrate(0,100,1000)
----python script----
ガウス関数を0から無限大まで積分すると積分公式から円周率の二乗根を2で割った数になります。
ここで、integrate(0,100,1000)で、意味しているのは
0から100まで積分し、積分区間を1000で割った数(0.1刻み)という条件で、
台形公式を微小領域に適応するという事です。
そうすると、答えは
0.88622692545275794
となります。
円周率の二乗根を2で割った数は
0.88622692545275794
なので、17桁会うくらいの精度で計算出来ています。
よって円周率を求めるプログラムは
----python---script---
import math
def gaussfunc(x):
return math.exp(-x*x)
def integrate(a,b,n):
integ=0.0
for i in range(0,n):
w=float(b-a)/n
x0=a+float(i)*w
x1=a+float(i+1)*w
y=w*(gaussfunc(x0)+gaussfunc(x1))*0.5
integ+=y
return integ
a=integrate(0,100,1000)
print a*a*4
----python script----
となって、
3.14159265359
と求まります。
このプログラムだと、16桁以降が怪しいですけどね。
高校生にもおすすめプログラム言語ですね、pythonは。
windowsだとエディタが無いと辛いけどね