파이를 찾기 위해, 우리는이 잘 알려진 미분 방정식을 통합 할 것입니다 :
초기 상태
이 초기 값 문제는 t가 제한없이 증가함에 따라 π로 수렴한다는 것이 잘 알려져있다. 따라서 0에서 2π 사이의 값을 합리적으로 추측하는 것만으로도 수치 적분을 수행 할 수 있습니다. 3은 π에 가까우므로 y = 3을 선택하여 시작합니다.
class PiEstimator {
static final int numSteps = 100;
static final double dt = 0.1, tMax = numSteps * dt;
static double f(double y, double t){ return Math.sin(y) * Math.exp(t); }
public static void main(String[] args){
double y = 3;
int n = 0;
for(double t = 0; t < tMax; t+=dt){
if(n%5 == 0) System.out.println(n + ": " + y);
n++;
y += f(y,t)*dt;
}
}
}
각기 다른 단계 수에 대한 결과는 다음과 같습니다.
0: 3.0
5: 3.0682513992369205
10: 3.11812938865782
15: 3.1385875952782825
20: 3.141543061526081
25: 3.141592653650948
30: 3.1415926535886047
35: 3.1415926535970526
40: 3.1415926517316737 // getting pretty close!
45: 3.1416034165087647 // uh oh
50: 2.0754887983317625
55: 49.866227663669584
60: 64.66835482328707
65: 57.249212987256286
70: 9.980977494635624
75: 35.43035516640032
80: 51.984982646834
85: 503.8854575676292
90: 1901.3240821223753
95: 334.1514462091029
100: -1872.5333656701248
작동 방식 :
이 미분 방정식은 올바르게 적분하기가 매우 어렵 기 때문에 잘 알려져 있습니다. 작은 t 값의 경우 순진한 통합이 허용 가능한 결과를 생성하지만, t가 매우 커짐에 따라 대부분의 적분 방법은 매우 불안정합니다.