日落20200115001 - Lua之自定義迭代生成器

環境

系統:Windows 10
引擎:Lua5.3.5

目的

通過自定義迭代生成器列出序列的計算結果,從而推斷其斂散性。

實例

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 / (n3+1) 嚴格單調下降,極限爲o(1);

以上簡單回顧。

參考資料:

《Lua程序設計(第二版)》第7章

發佈了59 篇原創文章 · 獲贊 2 · 訪問量 8599
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章