PDA

View Full Version : รบกวนช่วยอธิบายโปรแกรม


sineza10
16 ธันวาคม 2011, 22:03
มีเรื่องรบกวนอีกนิดนึงค่ะ ช่วยอธิบายการทำงานของโปรแกรมนี้ให้หน่อยได้ไหมค่ะ (ใช้โปรแกรม Maple)

Appendix A. The Stirling matrices of the second kind for n = 1,2,...; 9
restart:
# Procedure to find the (n+1) by (n+1) Stirling matrix
Stirling matrix.
# Written by Dr.Moawwad E.A. EL-MIKKAWY.
stirm2 := proc(n)
local S2, i, j; S2 := array(1 . . n+1,1 . . n+1);
for i from 1 to n+1 do
for j from i+1 to n+1 do
S2[i,j] := 0;
od:
od:
S2[1,1] := 1:
for i from 2 to n+1 do
S2[i,1] := 0; S2[1,i] := 0; S2[i,i] := 1; S2[i,2] := 1;
od:
for i from 4 to n+1 do
for j from 3 to i-1 do
S2[i,j] := (1/(j-1)!)*sum((-1)^(k+j-1)*binomial(j-
1,k)*k^(i-1),k = 0 . . j-1);
od:
od:
eval(S2);
end:
# CALL for the procedure to generate S2 for orders
2,3,. . .,10.
for m from 1 to 9 do
print (stirm2(m));
od:

kongp
31 ธันวาคม 2011, 19:39
เริ่มจากชื่อฟังก์ชั่น stirm2 คงเป็นค่าที่คืนมาของลูปการคำนวนการกระจายไบโนเมียล stirling เเคคำนวนเป็นเมตริกซ์จำใช้ลูป For 2 ลูปซ้อน

เริ่ม

1. กำหนดตัวแปรที่จะใช้
ocal S2, i, j; S2 := array(1 . . n+1,1 . . n+1);

2. กำหนดค่าเริ่มต้น

for i from 1 to n+1 do
for j from i+1 to n+1 do
S2[i,j] := 0;
od:
od:
S2[1,1] := 1

3. คำนวนเมตริกซ์

for i from 2 to n+1 do
S2[i,1] := 0; S2[1,i] := 0; S2[i,i] := 1; S2[i,2] := 1;
od:
for i from 4 to n+1 do
for j from 3 to i-1 do
S2[i,j] := (1/(j-1)!)*sum((-1)^(k+j-1)*binomial(j-
1,k)*k^(i-1),k = 0 . . j-1);

4. ฟังก์ชั่น eval ผมเดาว่าเป็นการคำนวนค่าจากการป้อนโพลลิโนเมียล S2

5. ที่เหลือก็เรียกพิมพ์ค่าผลลัพท์ออกทางจอภาพ ก็จบ.

ส่วนของที่มาของสูตร ก็ต้องเอาผลลัพท์ไปเทียบกับการทดลองจริงในห้องแล็ปครับ