Kronecker product: Difference between revisions
→{{header|Frink}}
(Frink) |
|||
Line 1,544:
=={{header|Frink}}==
The Frink library [https://frinklang.org/fsp/colorize.fsp?f=Matrix.frink Matrix.frink] contains an implementation of Kronecker product.
<lang frink>
println[formatProd[a,b]]
c =
d =
println[formatProd[c,d]]
formatProd[a,b] := formatTable[[[
KroneckerProduct[a, b] :=
{
[m,n] = a.dimensions[]
[p,q] = b.dimensions[]
rows = m p
cols = n q
n = new array[[rows, cols], 0]
for i=0 to rows-1
for j=0 to cols-1
n@i@j = a@(i div p)@(j div q) * b@(i mod p)@(j mod q)
return n
}</lang>
{{out}}
<pre>
┌ ┐
│3 4│ │6 7│ │ 0 15
└ ┘ └ ┘ │
│18 21
└
│ │
│1 1 1│ ⊗ │1 0 0 1│ = │1 0 0 1 1 0 0 1 1 0 0 1│▼
│0 0 0 0 1
┌ ┐ ┌ ┐
│0 1 0│ │1 1 1 1│ │1 1 1
│ │ │ │ │ │
▲│1 1 1│ ⊗ │1 0 0 1│ = │1 0 0 1 1 0 0 1 1 0 0 1│
│ │ │ │ │ │
│0 1 0│ │1 1 1 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>
|