Kronecker product: Difference between revisions
Content added Content deleted
(→{{header|Fortran}}: Improved flexibility in syntax can have side effects.) |
No edit summary |
||
Line 1,189: | Line 1,189: | ||
(0 0 0 0 1 0 0 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)</pre> |
(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}}== |
=={{header|Python}}== |