#/*********************************************************** # delta2.rb -- Aitken (エイトケン) の $\Delta^2$ 法 #***********************************************************/ def delta2(n, a) for j in 0...n i = j; while(i >=2) q = a[i] - 2 * a[i - 1] + a[i - 2] if (q == 0) printf("収束しました.\n"); return end p = a[i] - a[i - 1] a[i - 2] = a[i] - p * p / q.to_f i -= 2 end printf("%3d: % .14e\n", j, a[i]) end end N = 50 a = [] # Euler's series $1 - 1!x + 2!x^2 - 3!x^3 + \cdots$ at $x = 0.1$ a[0] = t = 1 for i in 1...N t *= i * (-0.1); a[i] = a[i - 1] + t printf("%2d % .14e\n", i, a[i]) end delta2(N, a) exit 0