Kronecker product: Difference between revisions

m (less than minor edit)
Line 719:
[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|zkl}}==
<lang zkl>var [const] GSL=Import.lib("zklGSL"); // libGSL (GNU Scientific Library)
fcn kronecker(A,B){
m,n, p,q := A.rows,A.cols, B.rows,B.cols;
r:=GSL.Matrix(m*p, n*q);
foreach i,j,k,l in (m,n,p,q){ r[p*i + k, q*j + l]=A[i,j]*B[k,l] }
r
}</lang>
<lang zkl>A:=GSL.Matrix(2,2).set(1,2, 3,4);
B:=GSL.Matrix(2,2).set(0,5, 6,7);
kronecker(A,B).format(3,0).println(); // format(width,precision)
 
A:=GSL.Matrix(3,3).set(0,1,0,
1,1,1,
0,1,0);
B:=GSL.Matrix(3,4).set(1,1,1,1,
1,0,0,1,
1,1,1,1);
kronecker(A,B).format(2,0).println();</lang>
{{out}}
<pre>
0, 5, 0, 10
6, 7, 12, 14
0, 15, 0, 20
18, 21, 24, 28
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
</pre>
Anonymous user