サンセット2020015001-Luaのカスタム反復ジェネレータ

1971 ワード

環境
システム:Windows 10エンジン:Lua 5.3.5
目的
カスタム反復ジェネレータによってシーケンスの計算結果がリストされ、その収束性が推定されます.
≪インスタンス|Instance|emdw≫
function my_generator(list)
	local i = 0
	local function func(t, i)
		i = i + 1
		local n = t[i]
		--          
		if not n then
			return
		end
		--   1
		local a1 = n
		local b1 = math.pow(-1, n)
		local result1 = math.pow(a1, b1)
		local str1 = string.format('%d^%d=%.4f', a1, b1, result1)
		--   2
		local a2 = n
		local b2 = n + 1
		local result2 = a2 / b2
		local str2 = string.format('%d/%d=%.4f', a2, b2, result2)
		--   3
		local a3 = n
		local b3 = math.pow(n, 3) + 1
		local result3 = a3 / b3
		local str3 = string.format('%d/%d=%.4f', a3, b3, result3)
		--
		return i, str1, str2, str3
	end
	return func, list, 0
end

local x = {}
for i = 1, 20 do
	x[#x+1] = i
end

for i, v1, v2, v3 in my_generator(x) do
	print(i, v1, v2, v3)
end

結果
1	1^-1=1.0000	1/2=0.5000	1/2=0.5000
2	2^1=2.0000	2/3=0.6667	2/9=0.2222
3	3^-1=0.3333	3/4=0.7500	3/28=0.1071
4	4^1=4.0000	4/5=0.8000	4/65=0.0615
5	5^-1=0.2000	5/6=0.8333	5/126=0.0397
6	6^1=6.0000	6/7=0.8571	6/217=0.0276
7	7^-1=0.1429	7/8=0.8750	7/344=0.0203
8	8^1=8.0000	8/9=0.8889	8/513=0.0156
9	9^-1=0.1111	9/10=0.9000	9/730=0.0123
10	10^1=10.0000	10/11=0.9091	10/1001=0.0100
11	11^-1=0.0909	11/12=0.9167	11/1332=0.0083
12	12^1=12.0000	12/13=0.9231	12/1729=0.0069
13	13^-1=0.0769	13/14=0.9286	13/2198=0.0059
14	14^1=14.0000	14/15=0.9333	14/2745=0.0051
15	15^-1=0.0667	15/16=0.9375	15/3376=0.0044
16	16^1=16.0000	16/17=0.9412	16/4097=0.0039
17	17^-1=0.0588	17/18=0.9444	17/4914=0.0035
18	18^1=18.0000	18/19=0.9474	18/5833=0.0031
19	19^-1=0.0526	19/20=0.9500	19/6860=0.0028
20	20^1=20.0000	20/21=0.9524	20/8001=0.0025
[Finished in 0.1s]

結果によって、次のことがわかります.
シーケンスn^(-1)nの上限界は正無限大量であり、下限界は無限小量である.シーケンスn/(n+1)は厳格に単調に上昇し、限界は1に向かう.シーケンスn/(n 3+1)は厳密に単調に低下し,限界はo(1)であった.
以上簡単に振り返ります.
参考資料:
『Luaプログラミング(第2版)』第7章