{"id":5617,"date":"2020-02-28T05:30:42","date_gmt":"2020-02-28T03:30:42","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=5617"},"modified":"2020-03-07T12:44:31","modified_gmt":"2020-03-07T10:44:31","slug":"producto-de-kronecker","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/producto-de-kronecker\/","title":{"rendered":"Producto de Kronecker"},"content":{"rendered":"<p>Si <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=A&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"A\" class=\"latex\" \/> es una matriz <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=m+%5Ctimes+n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"m &#92;times n\" class=\"latex\" \/> y <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=B&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"B\" class=\"latex\" \/> es una matriz <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p+%5Ctimes+q&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"p &#92;times q\" class=\"latex\" \/>, entonces el <a href=\"http:\/\/bit.ly\/3c5AYJU\">producto de Kronecker<\/a> <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=A+%5Cotimes+B&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"A &#92;otimes B\" class=\"latex\" \/> es la matriz bloque <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=mp+%5Ctimes+nq&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"mp &#92;times nq\" class=\"latex\" \/><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_1.png?resize=347%2C121\" alt=\"\" width=\"347\" height=\"121\" class=\"aligncenter size-full wp-image-5621\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_1.png?w=347&amp;ssl=1 347w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_1.png?resize=300%2C105&amp;ssl=1 300w\" sizes=\"(max-width: 347px) 100vw, 347px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p>M\u00e1s expl\u00edcitamente, tenemos<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_2.png?resize=876%2C422\" alt=\"\" width=\"876\" height=\"422\" class=\"aligncenter size-full wp-image-5622\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_2.png?w=876&amp;ssl=1 876w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_2.png?resize=300%2C145&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_2.png?resize=768%2C370&amp;ssl=1 768w\" sizes=\"(max-width: 876px) 100vw, 876px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p>Por ejemplo,<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_4.png?resize=832%2C278\" alt=\"\" width=\"832\" height=\"278\" class=\"aligncenter size-full wp-image-5625\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_4.png?w=832&amp;ssl=1 832w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_4.png?resize=300%2C100&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_4.png?resize=768%2C257&amp;ssl=1 768w\" sizes=\"(max-width: 832px) 100vw, 832px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_3.png?resize=1072%2C312\" alt=\"\" width=\"1072\" height=\"312\" class=\"aligncenter size-full wp-image-5623\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_3.png?w=1072&amp;ssl=1 1072w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_3.png?resize=300%2C87&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_3.png?resize=768%2C224&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2020\/02\/Producto_de_Kronecker_3.png?resize=1024%2C298&amp;ssl=1 1024w\" sizes=\"(max-width: 1072px) 100vw, 1072px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   kronecker :: Num t => Matrix t -> Matrix t -> Matrix t\n<\/pre>\n<p>tal que (kronecker a b) es el producto de Kronecker de las matrices a y b. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> kronecker (fromLists [[1,2],[3,1]]) (fromLists [[0,3],[2,1]])\n   \u250c         \u2510\n   \u2502 0 3 0 6 \u2502\n   \u2502 2 1 4 2 \u2502\n   \u2502 0 9 0 3 \u2502\n   \u2502 6 3 2 1 \u2502\n   \u2514         \u2518\n   \u03bb> kronecker (fromLists [[1,2],[3,4]]) (fromLists [[2,1],[-1,0],[3,2]])\n   \u250c             \u2510\n   \u2502  2  1  4  2 \u2502\n   \u2502 -1  0 -2  0 \u2502\n   \u2502  3  2  6  4 \u2502\n   \u2502  6  3  8  4 \u2502\n   \u2502 -3  0 -4  0 \u2502\n   \u2502  9  6 12  8 \u2502\n   \u2514             \u2518\n   \u03bb> kronecker (fromLists [[2,1],[-1,0],[3,2]]) (fromLists [[1,2],[3,4]])\n   \u250c             \u2510\n   \u2502  2  4  1  2 \u2502\n   \u2502  6  8  3  4 \u2502\n   \u2502 -1 -2  0  0 \u2502\n   \u2502 -3 -4  0  0 \u2502\n   \u2502  3  6  2  4 \u2502\n   \u2502  9 12  6  8 \u2502\n   \u2514             \u2518\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Matrix\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nkronecker :: Num t => Matrix t -> Matrix t -> Matrix t\nkronecker a b =\n  matrix (m*p) (n*q) f\n  where m = nrows a\n        n = ncols a\n        p = nrows b\n        q = ncols b\n        f (i,j) = a !(k+1,r+1) * b!(l+1,s+1)\n          where (k,l) = quotRem (i-1) p\n                (r,s) = quotRem (j-1) q\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\nkronecker2 a b = bloqueFila a b (ncols a)\n  where\n    bloque (i,j) a b = scaleMatrix (a!(i,j)) b\n    bloqueFila a b 1 = bloqueColumna 1 a b\n    bloqueFila a b n = bloqueFila a b (n-1) <|> bloqueColumna n a b\n    bloqueColumna j a b = aux a b (nrows a)\n      where aux a b 1 = bloque (1,j) a b\n            aux a b n = aux a b (n-1) <-> bloque (n,j) a b\n\n-- 3\u00aa soluci\u00f3n\n-- ===========\n\nkronecker3 :: Num t => Matrix t -> Matrix t -> Matrix t\nkronecker3 a b =\n  foldl1 (<->) [foldl1 (<|>) [scaleMatrix (a!(i,j)) b\n                             | j <- [1..ncols b]]\n                             | i <- [1..nrows a]]\n<\/pre>\n<h4>Otras soluciones<\/h4>\n<ul>\n<li>Se pueden escribir otras soluciones en los comentarios.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=\"haskell\"&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\n\"La resoluci\u00f3n de problemas es una habilidad pr\u00e1ctica como, digamos, la nataci\u00f3n. Adquirimos cualquier habilidad pr\u00e1ctica por imitaci\u00f3n y pr\u00e1ctica. Tratando de nadar, imitas lo que otras personas hacen con sus manos y pies para mantener sus cabezas sobre el agua, y, finalmente, aprendes a nadar practicando la nataci\u00f3n. Al intentar resolver problemas, hay que observar e imitar lo que hacen otras personas al resolver problemas y, finalmente, se aprende a resolver problemas haci\u00e9ndolos.\" <\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/George_P%C3%B3lya\">George P\u00f3lya<\/a>.\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Si es una matriz y es una matriz , entonces el producto de Kronecker es la matriz bloque M\u00e1s expl\u00edcitamente, tenemos Por ejemplo, Definir la funci\u00f3n kronecker :: Num t => Matrix t -> Matrix t -> Matrix t tal que (kronecker a b) es el producto de Kronecker de las matrices a y b&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[7],"tags":[8,359,42,99,98,11,448],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5617"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=5617"}],"version-history":[{"count":8,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5617\/revisions"}],"predecessor-version":[{"id":5662,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5617\/revisions\/5662"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=5617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=5617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=5617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}