Kronecker product: Difference between revisions

no edit summary
(→‎{{header|Fortran}}: Improved flexibility in syntax can have side effects.)
No edit summary
Line 1,189:
(0 0 0 0 1 0 0 1 0 0 0 0)
(0 0 0 0 1 1 1 1 0 0 0 0)</pre>
 
=={{header|PureBasic}}==
<lang PureBasic>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</lang>
{{out}}
<pre>Matrix A:
| 1 2 |
| 3 4 |
 
Matrix B:
| 0 5 |
| 6 7 |
 
Matrix C=AxB
| 0 5 0 10 |
| 6 7 12 14 |
| 0 15 0 20 |
|18 21 24 28 |
Press return
 
Matrix A:
| 0 1 0 |
| 1 1 1 |
| 0 1 0 |
 
Matrix B:
| 1 1 1 1 |
| 1 0 0 1 |
| 1 1 1 1 |
 
Matrix C=AxB
| 0 0 0 0 1 1 1 1 0 0 0 0 |
| 0 0 0 0 1 0 0 1 0 0 0 0 |
| 0 0 0 0 1 1 1 1 0 0 0 0 |
| 1 1 1 1 1 1 1 1 1 1 1 1 |
| 1 0 0 1 1 0 0 1 1 0 0 1 |
| 1 1 1 1 1 1 1 1 1 1 1 1 |
| 0 0 0 0 1 1 1 1 0 0 0 0 |
| 0 0 0 0 1 0 0 1 0 0 0 0 |
| 0 0 0 0 1 1 1 1 0 0 0 0 |
Press return</pre>
 
=={{header|Python}}==
164

edits