{"id":318,"date":"2017-06-07T09:45:07","date_gmt":"2017-06-07T14:45:07","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=318"},"modified":"2026-02-15T06:02:37","modified_gmt":"2026-02-15T11:02:37","slug":"normas-de-vector-o-matriz","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u03\/normas-de-vector-o-matriz\/","title":{"rendered":"3.5.1 Normas y Numero de condici\u00f3n con\u00a0Python"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#normas\">Normas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ncondicion\">N\u00famero condici\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"normas\">1. Normas de vector o Matriz<\/h2>\n\n\n\n<p><strong>Referencia<\/strong>: Chapra 10.3.1 p298 pdf322, Burden 7.1 p320, Rodr\u00edguez 4.4.1 p132<\/p>\n\n\n\n<p>Es una manera de expresar la magnitud de sus componentes:<\/p>\n\n\n\n<p>Sea X un vector de n componentes:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ||X|| = \\sum_{i=1}^{n}|X_i| <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ||X|| = max|X_i| , i=1,2, ...,n<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ||X|| = \\left( \\sum_{i=1}^{n}X_i^2 \\right) ^{1\/2}<\/span>\n\n\n\n<p>Sea una matriz A de nxn componentes:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ||A|| = max(\\sum_{j=1}^{n}|a_{i,j}|, i = 1,2,...,n) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ||A|| = max(\\sum_{i=1}^{n}|a_{i,j}|, j = 1,2,...,n)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ||A|| = \\left( \\sum_{i=1}^{n}\\sum_{j=1}^{n} a_{i,j}^2 \\right) ^{1\/2}<\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#normas\">Normas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ncondicion\">N\u00famero condici\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ejercicio\">2. Ejercicios<\/h2>\n\n\n\n<p><strong>Ejercicio 1<\/strong>. Usando los conceptos de normas mostradas, para el siguiente vector:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> x= &#091;5, -3, 2] <\/code><\/pre>\n\n\n\n<p>a) calcule las normas mostradas (en papel),<br>b) Realice los respectivos algoritmos en Python,<br>c) Determine los tiempos de ejecuci\u00f3n de cada algoritmo. \u00bfC\u00fa\u00e1l es el m\u00e1s r\u00e1pido?<\/p>\n\n\n\n<p><strong>Ejercicio 2<\/strong>. Usando los conceptos de normas mostradas, para la siguiente matriz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091;5, -3, 2],\n     &#091;4,  8,-4],\n     &#091;2,  6, 1]] <\/code><\/pre>\n\n\n\n<p>Repita los literales del ejercicio anterior.<\/p>\n\n\n\n<p><em><strong>Nota<\/strong>: para convertir una lista X en arreglo use: np.array(X)<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#normas\">Normas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ncondicion\">N\u00famero condici\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"funcion\">3. Normas con Python y Numpy<\/h2>\n\n\n\n<p>Algunas normas vectoriales y matriciales con Python. C\u00e1lculo del n\u00famero de condici\u00f3n.<\/p>\n\n\n\n<p>Se presenta un ejemplo usando la matriz A y el vector B en un programa de prueba.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091;3,-0.1,-0.2],\n     &#091;0.1,7,-0.3],\n     &#091;0.3,-0.2,10]]\nB = &#091;7.85,-19.3,71.4]<\/code><\/pre>\n\n\n\n<p>Instrucciones en Python:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Normas vectoriales y matriciales\n# Referencia: Chapra 10.3, p299, pdf323\nimport numpy as np\n\ndef norma_p(X,p):\n    Xp = (np.abs(X))**p\n    suma = np.sum(Xp)\n    norma = suma**(1\/p)\n    return(norma)\n\ndef norma_euclidiana(X):\n    norma = norma_p(X,2)\n    return(norma)\n\ndef norma_filasum(X):\n    sfila = np.sum(np.abs(X),axis=1)\n    norma = np.max(sfila)\n    return(norma)\n\ndef norma_frobenius(X):\n    tamano = np.shape(X)\n    n = tamano&#x5B;0]\n    m = tamano&#x5B;1]\n    norma = 0\n    for i in range(0,n,1):\n        for j in range(0,m,1):\n            norma =  norma + np.abs(X&#x5B;i,j])**2\n    norma = np.sqrt(norma)\n    return(norma)\n\ndef num_condicion(X):\n    M = np.copy(X)\n    Mi = np.linalg.inv(M)\n    nM = norma_filasum(M)\n    nMi= norma_filasum(Mi)\n    ncondicion = nM*nMi\n    return(ncondicion)\n\n# Programa de prueba #######\n# INGRESO\nA = &#x5B;&#x5B;3,-0.1,-0.2],\n     &#x5B;0.1,7,-0.3],\n     &#x5B;0.3,-0.2,10]]\nB = &#x5B;7.85,-19.3,71.4]\np = 2\n\n# PROCEDIMIENTO\n# Matrices como arreglo, numeros reales\nA = np.array(A,dtype=float)\nB = np.array(B,dtype=float)\n\nnormap    = norma_p(B, p)\nnormaeucl = norma_euclidiana(B)\nnormafilasuma   = norma_filasum(A)\nnumerocondicion = num_condicion(A)\n\n# SALIDA\nprint('vector:',B)\nprint('norma p: ',2)\nprint(normap)\n\nprint('norma euclididana: ')\nprint(normaeucl)\n\nprint('******')\nprint('matriz: ')\nprint(A)\nprint('norma suma fila: ',normafilasuma)\n\nprint('n mero de condici n:')\nprint(numerocondicion)\n<\/pre><\/div>\n\n\n<p>cuyos resultados del ejercicio ser\u00e1n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector: &#091;  7.85 -19.3   71.4 ]\nnorma p:  2\n74.3779033046778\nnorma euclididana: \n74.3779033046778\n******\nmatriz: \n&#091;&#091; 3.  -0.1 -0.2]\n &#091; 0.1  7.  -0.3]\n &#091; 0.3 -0.2 10. ]]\nnorma suma fila:  10.5\nn\u00famero de condici\u00f3n:\n3.6144243248254124\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<p>compare sus resultados con las funciones numpy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>np.linalg.norm(A)\nnp.linalg.cond(A)<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><em><strong>Referencias<\/strong><\/em>: [1]&nbsp;<a href=\"http:\/\/www.numpy.org\/devdocs\/reference\/generated\/numpy.linalg.norm.html\">http:\/\/www.numpy.org\/devdocs\/reference\/generated\/numpy.linalg.norm.html<\/a><\/p>\n\n\n\n<p>[2] <a href=\"http:\/\/www.numpy.org\/devdocs\/reference\/generated\/numpy.linalg.cond.html\">http:\/\/www.numpy.org\/devdocs\/reference\/generated\/numpy.linalg.cond.html<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#normas\">Normas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ncondicion\">N\u00famero condici\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ncondicion\">4.Numero de Condici\u00f3n<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Chapra 10.3.2 p300, Burden 9Ed 7.5 p470, Rodr\u00edguez 4.4.3 p133<\/p>\n\n\n\n<p>El n\u00famero de condici\u00f3n de una matriz <strong>A<\/strong>, es una forma de medir la sensibilidad del resultado del sistema de ecuaciones ante peque\u00f1os cambios en los valores de la entrada <strong>X<\/strong>.&nbsp; El n\u00famero de condici\u00f3n de una matriz se usa para cuantificar su nivel de <em>mal condicionamiento<\/em>.<\/p>\n\n\n\n<p>Sea <strong>A<\/strong>.X=B un sistema de ecuaciones lineales, entonces:<\/p>\n\n\n\n<p class=\"has-text-align-center\">cond(A) = ||A|| ||A<sup>-1<\/sup>||<\/p>\n\n\n\n<p>es el n\u00famero de condici\u00f3n de la matriz A.<\/p>\n\n\n\n<p>Los peque\u00f1os errores, por ejemplo por truncamiento, pueden amplificarse y afectar la precisi\u00f3n de la soluci\u00f3n. Si el n\u00famero de condici\u00f3n es cercano a 1 o 'bajo', implica que la matriz est\u00e1 bien condicionada, errores peque\u00f1os en los valores tienen poco impacto en la soluci\u00f3n.<\/p>\n\n\n\n<p>Instrucci\u00f3n en Python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>np.linalg.cond(A)<\/code><\/pre>\n\n\n\n<p>Ejemplo: Si la matriz A es la identidad, el n\u00famero de condici\u00f3n es 1.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091;1,0,0],\n     &#091;0,1,0],\n     &#091;0,0,1]]\n&gt;&gt;&gt; np.linalg.cond(A)\n1.0<\/code><\/pre>\n\n\n\n<p>Otro ejemplo:&nbsp;<a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-eval\/mn-1e2010\/1eva2010ti_t3_mn-precio-articulos\/\" data-type=\"post\" data-id=\"757\">1Eva2010TI_T3_MN Precio art\u00edculos<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091;2,2,4,1],\n     &#091;2,2,5,2],\n     &#091;4,1,1,2],\n     &#091;2,5,2,1]]\nnp.linalg.cond(A)\n18.46408777611575<\/code><\/pre>\n\n\n\n<p>realizando el pivoteo parcial por filas a la matriz A, no afecta el n\u00famero de condici\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091;4,1,1,2],\n     &#091;2,5,2,1],\n     &#091;2,2,5,2],\n     &#091;2,2,4,1]]\nnp.linalg.cond(A)\n18.464087776115733<\/code><\/pre>\n\n\n\n<p>Se observar\u00e1 que si el n\u00famero de condici\u00f3n est\u00e1 alejado de 1, es 'alto', al aplicar los m\u00e9todos iterativos de Jacobi o Gauss-Seidel, resultan NO convergentes. Lo que puede ser un factor para seleccionar el m\u00e9todo a usar para encontrar la soluci\u00f3n al sistema de ecuaciones.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><strong><em>Tarea<\/em><\/strong><\/p>\n\n\n\n<p>Usando como base los procedimientos desarrollados en Python, elabore un algoritmo para encontrar el n\u00famero de condici\u00f3n de una matriz.<\/p>\n\n\n\n<p>\"el error relativo de la norma de la soluci\u00f3n calculada puede ser tan grande como el error relativo de la norma de los coeficientes de [A], multiplicada por el n\u00famero de condici\u00f3n.\"<\/p>\n\n\n\n<p>Por ejemplo,<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>si los coeficientes de [A] se encuentran a <strong>t<\/strong> d\u00edgitos de precisi\u00f3n,esto es, los errores de redondeo son del orden de 10<sup>\u2013t<\/sup> y<\/li>\n\n\n\n<li>Cond [A] = 10<sup>c<\/sup>,<\/li>\n\n\n\n<li>la soluci\u00f3n [X] puede ser v\u00e1lida s\u00f3lo para t \u2013 c d\u00edgitos <br>(errores de redondeo ~ 10<sup>c\u2013t<\/sup>).<\/li>\n<\/ul>\n\n\n\n<p>verifique el resultado obtenido con el algoritmo, comparando con usar la instrucci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>np.linalg.cond(A)<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#normas\">Normas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ncondicion\">N\u00famero condici\u00f3n<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Normas Ejercicio funci\u00f3n N\u00famero condici\u00f3n 1. Normas de vector o Matriz Referencia: Chapra 10.3.1 p298 pdf322, Burden 7.1 p320, Rodr\u00edguez 4.4.1 p132 Es una manera de expresar la magnitud de sus componentes: Sea X un vector de n componentes: Sea una matriz A de nxn componentes: Normas Ejercicio funci\u00f3n N\u00famero condici\u00f3n 2. Ejercicios Ejercicio 1. [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-mn-unidades","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"class_list":["post-318","post","type-post","status-publish","format-standard","hentry","category-mn-u03"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=318"}],"version-history":[{"count":11,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/318\/revisions"}],"predecessor-version":[{"id":21558,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/318\/revisions\/21558"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}