三階矩陣整數冪(I)
程式是由網友SuperMANganese提供。
程式一可以計算一個3×3矩陣的正整數冪(n>0)。
程式二同樣可以計算一個3×3矩陣的正整數冪,冪數包括零(n≧0),程式二亦較程式一簡短一些,但運算時間會稍長一點。
程式三可以計算一個3×3矩陣的整數冪,即冪數包括零及負整數,速度與程式二相若,另外程式三亦計算三階行列式、逆矩陣及伴隨矩陣。
程式更新日期: 2011年11月8日
程式一(447 bytes,正整數冪數 n>0)
程式需要在 CMPLX 模式下執行,因此在選擇新程式位置後,按 2 選用CMPLX模式。
?→A: ?→D: ?→M: ?→X: E5A+X+Ai→A: ?→B: E-5D+E5B+Bi→B: ?→Y:
M+E-5Y→C: D+Mi→D: Y+Xi→X: ?→M: A+E-5M→A: ?→Y: B+Y→B:
M+Yi→Y: ?→M: C+E5M+Mi→C: ?→M: Fix 0: 3M-3: If Ans: Then
Lbl 1: For 0→M To 0 Step Ans: . 5(B+Conjg(B:Rnd(E-5Ans)(D+Conjg(D)) -
i(Rnd(Ans-E5Rnd(E-5Ans) )(D-Conjg(D)) + E5(Ans-Rnd(Ans))(A-Conjg(AM+:
. 5(C+Conjg(C:E5i(Ans-Rnd(Ans))(D+Conjg(D)) + Rnd(E-5Ans)(D-Conjg(D)) +
Rnd(Ans-E5Rnd(E-5Ans))(A-Conjg(AM+: . 5(A+Conjg(A: 2Ans +
iRnd(Ans-E5Rnd(E-5Ans))(D+Conjg(D)) + E5(Ans-Rnd(Ans))(D-Conjg(D)) +
Rnd(E-5Ans)(A-Conjg(A→A: X→D: Y→X: . 5M→Y: . 5A→M: B→A: C→B:
M→C:
0→M: Next: M-1 => Goto 1: IfEnd: Norm 1: - .
5i→M: Ans(A-Conjg(A◢
. 5(D+Conjg(D◢ i(Ans-D◢ M(X-Conjg(X◢ M(B-Conjg(B◢
.5(X+Conjg(X◢ . 5(Y+Conjg(Y◢ i(Ans-Y◢ M(C-Conjg(C
程式二(426 bytes,整數冪數 n≧0)
程式需要在 CMPLX 模式下執行,因此在選擇新程式位置後,按 2 選用CMPLX模式。
ClrMemory:?→A: ?→B: ?→C: E5A+B+E-5C+i→A: ?→B: ?→C: ?→M:
E-5B+E5C+M+i→B: ?→C: ?→M: C: ?→C: E-5M+Ans+E5C+i→C: ?→M: Fix 0: 3M:
If Ans: Then Lbl 1: For 0→M To 0 Step Ans: . 5(B+Conjg(B:Rnd(E-5Ans)
(D+Conjg(D)) - i(Rnd(Ans-E5Rnd(E-5Ans))(D-Conjg(D)) + E5(Ans-Rnd(Ans))
(A-Conjg(AM+: . 5(C+Conjg(C:E5i(Ans-Rnd(Ans))(D+Conjg(D)) + Rnd(E-5Ans)
(D-Conjg(D)) + Rnd(Ans-E5Rnd(E-5Ans))(A-Conjg(AM+: . 5(A+Conjg(A:
2Ans + iRnd(Ans-E5Rnd(E-5Ans))(D+Conjg(D)) + E5(Ans-Rnd(Ans))(D-Conjg(D)) +
Rnd(E-5Ans)(A-Conjg(A→A: X→D: Y→X: . 5M→Y: . 5A→M: B→A: C→B: M→C:
0→M: Next: M-1 => Goto 1: IfEnd: Norm 1: - . 5i(A-Conjg(A◢ - . 5i(X-Conjg(X◢
. 5(Y+Conjg(Y◢ . 5(D+Conjg(D◢ - . 5i(B-Conjg(B◢ - . 5i(Y-Conjg(Y◢
- . 5i(D-Conjg(D◢ . 5(X+Conjg(X◢ - . 5i(C-Conjg(C
程式三(668 bytes,任何整數冪n)
程式需要在 CMPLX 模式下執行,因此在選擇新程式位置後,按 2 選用CMPLX模式。
ClrMemory:?→A: ?→B: ?→C: E5A+B+E-5C+i→A: ?→B: ?→C: ?→M:
E-5B+E5C+M+i→B: ?→C: ?→M: C: ?→C: E-5M+Ans+E5C+i→C: ?→M: Fix 0:
Abs( 3M: If Ans: Then Lbl 1: For 0→M To 0 Step Ans: . 5(B+Conjg(B:Rnd(E-5Ans)
(D+Conjg(D)) - i(Rnd(Ans-E5Rnd(E-5Ans))(D-Conjg(D)) + E5(Ans-Rnd(Ans))
(A-Conjg(AM+: . 5(C+Conjg(C:E5i(Ans-Rnd(Ans))(D+Conjg(D)) + Rnd(E-5Ans)
(D-Conjg(D)) + Rnd(Ans-E5Rnd(E-5Ans))(A-Conjg(AM+: . 5(A+Conjg(A:
2Ans + iRnd(Ans-E5Rnd(E-5Ans))(D+Conjg(D)) + E5(Ans-Rnd(Ans))(D-Conjg(D)) +
Rnd(E-5Ans)(A-Conjg(A→A: X→D: Y→X: . 5M→Y: . 5A→M: B→A: C→B: M→C:
0→M: Next: M-1 => Goto 1: IfEnd: Norm 1: MM-: - . 5i(A-Conjg(A→A◢
- . 5i(X-Conjg(X◢ . 5(Y-Conjg(YM+: Y-Ans→Y◢ . 5(D+Conjg(D[M+]◢
i(Ans-D→D: - . 5i(B-Conjg(B→B◢ - . 5i(M-Conjg(M◢ D◢ . 5(X+Conjg(X◢
- . 5i(C-Conjg(C→C◢ M+Conjg(M: ABC-YBD + 4-1(YAns(X+Conjg(X)) -
D(X-Conjg(X))(M-Conjg(M)) + Ai(M-Conjg(M))(X+Conjg(X)) + CAnsi(X-Conjg(X◢
BC + 4-1i(M-Conjg(M))(X+Conjg(X◢ . 5(M+Conjg(M: - CAns-Di(M-Ans◢
-BD + 4-1(M+Conjg(M))(X+Conjg(X◢ . 5(X+Conjg(X:YAns+Ci(X-Ans◢ AC-YD◢
. 5(X+Conjg(X: -AAns - Di(X-Ans◢ -BY - 4-1(X-Conjg(X))(M-Conjg(M◢
. 5(M+Conjg(M:Y Ans + Ai(M-Ans◢ AB + 4-1(M+Conjg(M))i(X-Conjg(X
註1: 程式三會先找出正整數冪的矩陣,然後再找出其逆矩陣。
註2: 原矩陣中的數字須為整數,輸入範圍: -50000<x<50000。
例題1: 計算
按 Prog 1 再按 1 EXE 2 EXE 3 EXE 4 EXE 5 EXE 6 EXE 7 EXE 8 EXE 9 EXE 2 EXE
(顯示30) EXE (顯示36) EXE (顯示42) EXE (顯示66) EXE (顯示 81)
EXE (顯示 96) EXE (顯示 102) EXE (顯示 126) EXE (顯示 150)
所以答案為
例題2: 計算
按 Prog 1 再按 3 EXE 5 EXE 4 EXE 8 EXE 0 EXE 7 EXE 1 EXE 6 EXE 2 EXE 9 EXE
(顯示1580876851) EXE (顯示1545817735) EXE (顯示1731636235) EXE (顯示1820264835) EXE (顯示
1743178616)
EXE (顯示 1985285770) EXE (顯示 1249213485) EXE (顯示 1235213845) EXE (顯示 1371541616)
所以答案為
例題3(只限程式三): 計算
按 Prog 1 再按 1 EXE 2 EXE 3 EXE 4 EXE 5 EXE 4 EXE 3 EXE 2 EXE 1 EXE -2 EXE
EXE EXE EXE EXE EXE EXE EXE EXE EXE (忽略正數冪的答案矩陣) (顯示64,矩陣行列式) EXE
(顯示90) EXE (顯示-144) EXE (顯示74) EXE (顯示-72) EXE (顯示 128)
EXE (顯示 -72) EXE (顯示 74) EXE (顯示 -144) EXE (顯示 90)
所以答案為