109 lines
1.9 KiB
Plaintext
109 lines
1.9 KiB
Plaintext
EnableExplicit
|
|
DataSection
|
|
Matrix_A_B_Dimension_Bsp1:
|
|
Data.i 2,2,?MatrixA_Werte_Bsp1,2,2,?MatrixB_Werte_Bsp1
|
|
|
|
Matrix_A_B_Dimension_Bsp2:
|
|
Data.i 3,3,?MatrixA_Werte_Bsp2,3,4,?MatrixB_Werte_Bsp2
|
|
|
|
MatrixA_Werte_Bsp1:
|
|
Data.i 1,2,3,4
|
|
|
|
MatrixA_Werte_Bsp2:
|
|
Data.i 0,1,0,1,1,1,0,1,0
|
|
|
|
MatrixB_Werte_Bsp1:
|
|
Data.i 0,5,6,7
|
|
|
|
MatrixB_Werte_Bsp2:
|
|
Data.i 1,1,1,1,1,0,0,1,1,1,1,1
|
|
EndDataSection
|
|
|
|
Define.i ma, na, mb, nb, adr1, adr2, i, j, k, l
|
|
Define mk$
|
|
|
|
Gosub Bsp1_Matrix_A_B : Gosub LoadMatrix : Gosub Bsp2_Matrix_A_B : Gosub LoadMatrix : End
|
|
|
|
LoadMatrix:
|
|
Read.i ma
|
|
Read.i na
|
|
Read.i adr1
|
|
Read.i mb
|
|
Read.i nb
|
|
Read.i adr2
|
|
|
|
Dim mxa.i(ma,na)
|
|
Dim mxb.i(mb,nb)
|
|
NewMap mxc.i()
|
|
|
|
For i=1 To ma
|
|
For j=1 To na
|
|
mxa(i,j)=PeekI(adr1)
|
|
adr1+SizeOf(Integer)
|
|
Next
|
|
Next
|
|
|
|
For i=1 To mb
|
|
For j=1 To nb
|
|
mxb(i,j)=PeekI(adr2)
|
|
adr2+SizeOf(Integer)
|
|
Next
|
|
Next
|
|
|
|
OpenConsole("Kronecker product")
|
|
PrintN("Matrix A:")
|
|
For i=1 To ma ; Zeile
|
|
Print("|")
|
|
For j=1 To na ; Spalte
|
|
Print(RSet(Str(mxa(i,j)),2," ")+" ")
|
|
Next
|
|
PrintN("|")
|
|
Next
|
|
PrintN("")
|
|
|
|
PrintN("Matrix B:")
|
|
For i=1 To mb ; Zeile
|
|
Print("|")
|
|
For j=1 To nb ; Spalte
|
|
Print(RSet(Str(mxb(i,j)),2," ")+" ")
|
|
Next
|
|
PrintN("|")
|
|
Next
|
|
PrintN("")
|
|
|
|
PrintN("Matrix C=AxB")
|
|
For i=1 To ma ; Zeile MA
|
|
For j=1 To na ; Spalte MA
|
|
For k=1 To mb ; Zeile MB
|
|
For l=1 To nb ; Spalte MB
|
|
mxc(Str(i)+","+Str(j)+","+Str(k)+","+Str(l))=mxa(i,j)*mxb(k,l)
|
|
Next
|
|
Next
|
|
Next
|
|
Next
|
|
|
|
For i=1 To ma ; Zeile MA
|
|
For k=1 To mb; Zeile MB
|
|
Print("|")
|
|
For j=1 To na ; Spalte MA
|
|
For l=1 To nb ; Spalte MB
|
|
mk$=Str(i)+","+Str(j)+","+Str(k)+","+Str(l)
|
|
If FindMapElement(mxc(),mk$)
|
|
Print(RSet(Str(mxc()),2," ")+" ")
|
|
EndIf
|
|
Next
|
|
Next
|
|
PrintN("|")
|
|
Next
|
|
Next
|
|
PrintN("Press return") : Input()
|
|
Return
|
|
|
|
Bsp1_Matrix_A_B:
|
|
Restore Matrix_A_B_Dimension_Bsp1
|
|
Return
|
|
|
|
Bsp2_Matrix_A_B:
|
|
Restore Matrix_A_B_Dimension_Bsp2
|
|
Return
|