{ "cells": [ { "cell_type": "markdown", "id": "34fb6a3c", "metadata": {}, "source": [ "# Matrices y aplicaciones lineales\n", "\n", "#### https://meet.noysi.com/metodosnumericos1" ] }, { "cell_type": "markdown", "id": "340e1c04", "metadata": {}, "source": [ "Para definir un vector o una matriz con Sage, debemos usar las funciones `vector` y `matrix`, respectivamente. La primera entrada (opcional) es un valor con el tipo de dato que queremos usar, como `ZZ` para enteros, `RDF` para reales en doble precisión y `CDF` para complejos en doble precisión. La segunda entrada (o primera si no hemos elegido tipo de datos) es una lista en el caso del vector y una lista con una lista por cada fila de la matrix. Veamos algunos ejemplos." ] }, { "cell_type": "code", "execution_count": 1, "id": "c269cee4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v = vector(ZZ,[1,2,3])\n", "type(v) " ] }, { "cell_type": "code", "execution_count": 3, "id": "46aff7fb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((1, 2, 3), (1.0, 2.0, 3.0))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w = vector(RDF,[1,2,3])\n", "v,w" ] }, { "cell_type": "code", "execution_count": 4, "id": "821a514a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.0, 4.0, 6.0)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Podemos sumarlos. Para ello convertirá los enteros en números reales.\n", "v + w" ] }, { "cell_type": "code", "execution_count": 5, "id": "b26c6141", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(v+w)" ] }, { "cell_type": "code", "execution_count": 10, "id": "81f84f71", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Si no ponemos tipo, elige el menos general posible\n", "u = vector([1,2,3])\n", "type(u)" ] }, { "cell_type": "code", "execution_count": 12, "id": "f8d45cfe", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(vector([x,x^2,x^3]))" ] }, { "cell_type": "markdown", "id": "a73ae277", "metadata": {}, "source": [ "Veamos algunos ejemplos con matrices." ] }, { "cell_type": "code", "execution_count": 13, "id": "72af041a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrr}\n", "1.0 & 2.0 & -3.0 \\\\\n", "3.0 & 1.0 & 1.0 \\\\\n", "1.0 & 1.0 & 2.0\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 1.0 2.0 -3.0]\n", "[ 3.0 1.0 1.0]\n", "[ 1.0 1.0 2.0]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Una matriz de números reales (con saltos de línea visualizarlo mejor)\n", "A = matrix(RDF, [[1,2,-3],\n", " [3,1,1],\n", " [1,1,2]])\n", "show(A)" ] }, { "cell_type": "code", "execution_count": 14, "id": "bcf14972", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrr}\n", "1 & 0 & -1 \\\\\n", "0 & 1 & 2 \\\\\n", "1 & 1 & 1\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 1 0 -1]\n", "[ 0 1 2]\n", "[ 1 1 1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Otra de enteros (en este caso no hemos incluído saltos de línea)\n", "B = matrix([[1,0,-1],[0,1,2],[1,1,1]])\n", "show(B)" ] }, { "cell_type": "code", "execution_count": 15, "id": "812afe71", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrr}\n", "2.0 & 2.0 & -4.0 \\\\\n", "3.0 & 2.0 & 3.0 \\\\\n", "2.0 & 2.0 & 3.0\n", "\\end{array}\\right) \\left(\\begin{array}{rrr}\n", "-2.0 & -1.0 & 0.0 \\\\\n", "4.0 & 2.0 & 0.0 \\\\\n", "3.0 & 3.0 & 3.0\n", "\\end{array}\\right) \\left(-4.0,\\,8.0,\\,9.0\\right) \\left(7,\\,14,\\,21\\right) \\left(\\begin{array}{rrr}\n", "-2.0 & -4.0 & 6.0 \\\\\n", "-6.0 & -2.0 & -2.0 \\\\\n", "-2.0 & -2.0 & -4.0\n", "\\end{array}\\right) \\left(\\begin{array}{rrr}\n", "-510 & -511 & -512 \\\\\n", "1022 & 1023 & 1024 \\\\\n", "512 & 512 & 512\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 2.0 2.0 -4.0]\n", "[ 3.0 2.0 3.0]\n", "[ 2.0 2.0 3.0] [-2.0 -1.0 0.0]\n", "[ 4.0 2.0 0.0]\n", "[ 3.0 3.0 3.0] (-4.0, 8.0, 9.0) (7, 14, 21) [-2.0 -4.0 6.0]\n", "[-6.0 -2.0 -2.0]\n", "[-2.0 -2.0 -4.0] [-510 -511 -512]\n", "[1022 1023 1024]\n", "[ 512 512 512]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Podemos operar con matrices y vectores\n", "show(A+B,A*B,A*u,7*v,-2*A,B^10)" ] }, { "cell_type": "markdown", "id": "5bd5c668", "metadata": {}, "source": [ "También están definidas las funciones usuales sobre matrices. Se puede consultar https://doc.sagemath.org/html/es/tutorial/tour_linalg.html para una introducción. Veamos cómo calcular el determinante y los autovalores y autovectores.\n" ] }, { "cell_type": "code", "execution_count": 16, "id": "469c1bf4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-15.0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Determinante\n", "A.det()" ] }, { "cell_type": "code", "execution_count": 17, "id": "6b06bab4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(-1.5556218095982448,\n", " [(-0.6412412320435307, 0.7665298768041033, -0.03523677473862972)],\n", " 1),\n", " (2.7778109047991224 + 1.3878807693997999*I,\n", " [(-0.21853271682511885 - 0.4144302768311717*I, -0.6460200641125966, -0.4929033642230452 + 0.34669200686521673*I)],\n", " 1),\n", " (2.7778109047991224 - 1.3878807693997999*I,\n", " [(-0.21853271682511885 + 0.4144302768311717*I, -0.6460200641125966, -0.4929033642230452 - 0.34669200686521673*I)],\n", " 1)]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Autovalores y autovectores\n", "A.eigenvectors_right()" ] }, { "cell_type": "markdown", "id": "21da7204", "metadata": {}, "source": [ "La orden anterior muestra una lista que contiene un elemento por cada autovalor. El elemento (tupla) contiene el autovalor en la primera posición, una base en la segunda posición (lista de vectores) y la multiplicidad de ese autovalor. Vamos a quedarnos con esos valores:" ] }, { "cell_type": "code", "execution_count": 18, "id": "356ca15e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[-1.5556218095982448,\n", " 2.7778109047991224 + 1.3878807693997999*I,\n", " 2.7778109047991224 - 1.3878807693997999*I]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "autovalores = [l for l,v,m in A.eigenvectors_right()]\n", "autovalores" ] }, { "cell_type": "code", "execution_count": 19, "id": "e65e8fbb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(-0.6412412320435307, 0.7665298768041033, -0.03523677473862972),\n", " (-0.21853271682511885 - 0.4144302768311717*I, -0.6460200641125966, -0.4929033642230452 + 0.34669200686521673*I),\n", " (-0.21853271682511885 + 0.4144302768311717*I, -0.6460200641125966, -0.4929033642230452 - 0.34669200686521673*I)]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Esto es válido si no hay autovalores duplicados\n", "autovectores = [v[0] for l,v,m in A.eigenvectors_right()]\n", "autovectores" ] }, { "cell_type": "markdown", "id": "c7a142e6", "metadata": {}, "source": [ "Vamos a representar los autovalores como vectores en el plano complejo." ] }, { "cell_type": "code", "execution_count": 21, "id": "ebc92bee", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sum( [ arrow( (0,0) , (k.real(),k.imag()) ) for k in autovalores ] ) .show(figsize=3)" ] }, { "cell_type": "markdown", "id": "f303c70e", "metadata": {}, "source": [ "
\n", "Ejercicio 1. Consideremos la matriz\n", " $$A=\\left(\\begin{array}{rrr}\n", "3 & 1 \\\\\n", "2 & -2 \n", "\\end{array}\\right)$$\n", "\n", "a) Calcula el determinante, los autovalores y los autovectores de la matriz.\n", "\n", "b) Representa los autovectores. Comprueba que son autovectores.\n", "\n", "c) Para cada vector de la base usual, dibuja una flecha cuyo origen sea dicho vector y el destino sea su imagen por $A$.\n", "
" ] }, { "cell_type": "code", "execution_count": 23, "id": "dd91a8e0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rr}\n", "3.0 & 1.0 \\\\\n", "2.0 & -2.0\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 3.0 1.0]\n", "[ 2.0 -2.0]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = matrix(RDF, [ [ 3, 1],\n", " [ 2,-2] ])\n", "show(A)" ] }, { "cell_type": "code", "execution_count": 24, "id": "a4762333", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-8.0" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.det()" ] }, { "cell_type": "code", "execution_count": 32, "id": "652a75a9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3.3722813232690143, -2.3722813232690143)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1,l2 = A.eigenvalues()\n", "l1,l2" ] }, { "cell_type": "code", "execution_count": 31, "id": "f7b2ad75", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((0.9371641612794526, 0.3488887140814106),\n", " (-0.18299737893132018, 0.983113401039914))" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v1,v2 = [ b[0] for l,b,m in A.eigenvectors_right() ]\n", "v1,v2" ] }, { "cell_type": "code", "execution_count": 33, "id": "e3a61eb5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.9371641612794526, 0.3488887140814106)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.eigenvectors_right()[0][1][0]" ] }, { "cell_type": "code", "execution_count": 36, "id": "8e26d070", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "( arrow( (0,0) , v1 ) + arrow( (0,0) , v2 ) ).show(figsize=3)" ] }, { "cell_type": "code", "execution_count": 37, "id": "62f76ddb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((3.1603811979197682, 1.176550894396084),\n", " (3.1603811979197682, 1.176550894396084))" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A*v1, l1*v1" ] }, { "cell_type": "code", "execution_count": 39, "id": "eae8ad1a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((0.43412126424595343, -2.332221559942468),\n", " (0.4341212642459535, -2.332221559942468))" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A*v2, l2*v2" ] }, { "cell_type": "code", "execution_count": null, "id": "b80b9a5d", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "77a763cd", "metadata": {}, "source": [ "# Normas matriciales " ] }, { "cell_type": "markdown", "id": "3cbf4401", "metadata": {}, "source": [ "Podemos calcular la norma matricial usando la función norm de Sage. Si no se especifica nada, será la norma euclídea." ] }, { "cell_type": "code", "execution_count": 42, "id": "a69d4638", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrr}\n", "1 & 2 & 3 \\\\\n", "4 & 5 & -6 \\\\\n", "0 & 0 & 1\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 1 2 3]\n", "[ 4 5 -6]\n", "[ 0 0 1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = matrix([[1,2,3],[4,5,-6],[0,0,1]])\n", "show(A)" ] }, { "cell_type": "code", "execution_count": 43, "id": "a7c19c82", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(8.817643599088878, 8.817643599088878, 10.0, 15.0)" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.norm(),A.norm(2),A.norm(1),A.norm(oo)" ] }, { "cell_type": "markdown", "id": "cffff7b3", "metadata": {}, "source": [ "Podemos calcular el número de condición de una matriz usando el método condition. Con la norma 2:" ] }, { "cell_type": "code", "execution_count": 126, "id": "06ae8368", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrr}\n", "0.11595837862625835 & -0.4847110185484711 & -0.9425876101881612 \\\\\n", "0.20295024174068343 & 0.6532761435324557 & -0.7031183989308065 \\\\\n", "-0.5450266629131402 & -0.5787785160669707 & 0.7915271943407642\n", "\\end{array}\\right)$$" ], "text/plain": [ "[0.11595837862625835 -0.4847110185484711 -0.9425876101881612]\n", "[0.20295024174068343 0.6532761435324557 -0.7031183989308065]\n", "[-0.5450266629131402 -0.5787785160669707 0.7915271943407642]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = random_matrix(RDF, 3)\n", "show(A)" ] }, { "cell_type": "code", "execution_count": 127, "id": "03f70460", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(7.060321965760132, -0.32000631429541865)" ] }, "execution_count": 127, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.condition(2),A.det()" ] }, { "cell_type": "markdown", "id": "f78391ed", "metadata": {}, "source": [ "Las matrices de Hilbert están especialmente mal condicionadas" ] }, { "cell_type": "code", "execution_count": 129, "id": "5d2de886", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "1.0 & 0.5 & 0.3333333333333333 & 0.25 \\\\\n", "0.5 & 0.3333333333333333 & 0.25 & 0.2 \\\\\n", "0.3333333333333333 & 0.25 & 0.2 & 0.16666666666666666 \\\\\n", "0.25 & 0.2 & 0.16666666666666666 & 0.14285714285714285\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 1.0 0.5 0.3333333333333333 0.25]\n", "[ 0.5 0.3333333333333333 0.25 0.2]\n", "[ 0.3333333333333333 0.25 0.2 0.16666666666666666]\n", "[ 0.25 0.2 0.16666666666666666 0.14285714285714285]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n=4\n", "A = matrix(RDF, [ [1/(i+j+1) for i in range(n)] for j in range(n)])\n", "show(A)" ] }, { "cell_type": "code", "execution_count": 130, "id": "eb865600", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15513.738738929662" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.condition(2)" ] }, { "cell_type": "markdown", "id": "5b4b9083", "metadata": {}, "source": [ "Podemos comparar el número de condición obtenido con el obtenido a partir de la definición." ] }, { "cell_type": "code", "execution_count": 131, "id": "261c03fc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15513.738738931197" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.norm(2)*(A.inverse()).norm(2)" ] }, { "cell_type": "markdown", "id": "33d20e18", "metadata": {}, "source": [ "Si la matriz no es de doble precisión, no calcula el número de condición." ] }, { "cell_type": "code", "execution_count": 138, "id": "3512e8ec", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrr}\n", "1 & 1 & 0 \\\\\n", "-1 & -1 & 2 \\\\\n", "0 & -1 & 2\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 1 1 0]\n", "[-1 -1 2]\n", "[ 0 -1 2]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = random_matrix(QQ, 3)\n", "show(A)" ] }, { "cell_type": "code", "execution_count": 139, "id": "351f1ef0", "metadata": { "collapsed": true }, "outputs": [ { "ename": "AttributeError", "evalue": "'sage.matrix.matrix_rational_dense.Matrix_rational_dense' object has no attribute 'condition'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn [139], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mA\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcondition\u001b[49m(Integer(\u001b[38;5;241m2\u001b[39m))\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/structure/element.pyx:494\u001b[0m, in \u001b[0;36msage.structure.element.Element.__getattr__ (build/cythonized/sage/structure/element.c:4905)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 492\u001b[0m AttributeError: 'LeftZeroSemigroup_with_category.element_class' object has no attribute 'blah_blah'\n\u001b[1;32m 493\u001b[0m \"\"\"\n\u001b[0;32m--> 494\u001b[0m return self.getattr_from_category(name)\n\u001b[1;32m 495\u001b[0m \n\u001b[1;32m 496\u001b[0m cdef getattr_from_category(self, name):\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/structure/element.pyx:507\u001b[0m, in \u001b[0;36msage.structure.element.Element.getattr_from_category (build/cythonized/sage/structure/element.c:5017)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 505\u001b[0m else:\n\u001b[1;32m 506\u001b[0m cls = P._abstract_element_class\n\u001b[0;32m--> 507\u001b[0m return getattr_from_other_class(self, cls, name)\n\u001b[1;32m 508\u001b[0m \n\u001b[1;32m 509\u001b[0m def __dir__(self):\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/cpython/getattr.pyx:361\u001b[0m, in \u001b[0;36msage.cpython.getattr.getattr_from_other_class (build/cythonized/sage/cpython/getattr.c:2768)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 359\u001b[0m dummy_error_message.cls = type(self)\n\u001b[1;32m 360\u001b[0m dummy_error_message.name = name\n\u001b[0;32m--> 361\u001b[0m raise AttributeError(dummy_error_message)\n\u001b[1;32m 362\u001b[0m attribute = attr\n\u001b[1;32m 363\u001b[0m # Check for a descriptor (__get__ in Python)\n", "\u001b[0;31mAttributeError\u001b[0m: 'sage.matrix.matrix_rational_dense.Matrix_rational_dense' object has no attribute 'condition'" ] } ], "source": [ "A.condition(2)" ] }, { "cell_type": "code", "execution_count": 140, "id": "1974ac68", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7.30914365928944" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Aunque sí podemos calcularlo con la definición\n", "A.norm(2)*A.inverse().norm(2)" ] }, { "cell_type": "markdown", "id": "dcb590bf", "metadata": {}, "source": [ "
\n", " Ejercicio 1. \n", " \n", "a) Calcula las normas 1,2 e infinito de la matriz\n", "$$A=\\left(\\begin{array}{rrrr} \n", "4 & -1 & 0 & 1 \\\\\n", "-1 & 4 & 0 & 0 \\\\\n", "1 & 0 & 5 & -1 \\\\\n", "-1 & 1 & 1 & 4 \\\\\n", "\\end{array}\n", "\\right)\n", ".$$\n", "\n", "b) Calcula un vector unitario con la norma 1, $u$, tal que $\\|Au\\|_1=\\|A\\|_1\\|u\\|_1$.\n", "\n", "c) Idem para las normas $2$ e $\\infty$.\n", "\n", "d) Calcular los autovectores unitarios (usar la orden de sage eigenvectors_right) con la norma euclídea de $A^tA$. Calcular su imagen por $A$. Comprobar que tanto los autovectores como sus imágenes son ortogonales, es decir, forman una base. Calcular $\\min_{\\|u\\|_2=1} \\|Au\\|_2$. Repetir el proceso cambiando $A$ por $A^{-1}$. ¿Qué relación hay entre la $1/\\|A^{-1}\\|_2$ y $\\min_{\\|u\\|_2=1} \\|Au\\|_2$?\n", "\n", "e) Calcular $\\min_{\\|u\\|_1=1} \\|A u\\|_1$. \n", "\n", "f) Idem para la norma infinito.\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "id": "146fb4b9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "4.0 & -1.0 & 0.0 & 1.0 \\\\\n", "-1.0 & 4.0 & 0.0 & 0.0 \\\\\n", "1.0 & 0.0 & 5.0 & -1.0 \\\\\n", "-1.0 & 1.0 & 1.0 & 4.0\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 4.0 -1.0 0.0 1.0]\n", "[-1.0 4.0 0.0 0.0]\n", "[ 1.0 0.0 5.0 -1.0]\n", "[-1.0 1.0 1.0 4.0]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = matrix(RDF, [ [ 4,-1, 0, 1],\n", " [-1, 4, 0, 0],\n", " [ 1, 0, 5,-1],\n", " [-1, 1, 1, 4]])\n", "show(A)" ] }, { "cell_type": "code", "execution_count": 2, "id": "a5318af8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(334.0, 7.0, 5.469890020958683, 7.0)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.det(), A.norm(1), A.norm(2), A.norm(oo)" ] }, { "cell_type": "code", "execution_count": 3, "id": "2c56ccc3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(7.0, 7.0)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u1 = vector([1,0,0,0])\n", "(A*u1).norm(1),A.norm(1)*u1.norm(1)" ] }, { "cell_type": "code", "execution_count": 4, "id": "3693b263", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-4.0, 5.0, 3.0, 7.0)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "uinf = vector([-1,1,1,1])\n", "A*uinf" ] }, { "cell_type": "code", "execution_count": 5, "id": "e9b8590a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(7.0, 7.0)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(A*uinf).norm(oo),A.norm(oo)*uinf.norm(oo)" ] }, { "cell_type": "code", "execution_count": 6, "id": "3d44e264", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[19.0 -9.0 4.0 -1.0]\n", "[-9.0 18.0 1.0 3.0]\n", "[ 4.0 1.0 26.0 -1.0]\n", "[-1.0 3.0 -1.0 18.0]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M = A.transpose()*A\n", "M" ] }, { "cell_type": "code", "execution_count": 22, "id": "5e29d6c8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((0.6612029800113333, 0.7017437247424803, -0.20104732783459558, -0.17305009673285665),\n", " (0.3094971752943999, -0.06532743076137325, -0.026380776971856545, 0.948286813090463),\n", " (0.6260829360117603, -0.4804134988044668, 0.5728543283509782, -0.2214970561675574),\n", " (-0.2739384510137521, 0.5220066491349694, 0.7941800457493746, 0.1474613110228861))" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Calculamos los autovectores de A^t A\n", "v1,v2,v3,v4 = [b[0] for l,b,m in M.eigenvectors_right()]\n", "v1,v2,v3,v4" ] }, { "cell_type": "code", "execution_count": 23, "id": "6bfd8a20", "metadata": {}, "outputs": [], "source": [ "# Normalizamos\n", "u1 = v1/v1.norm(2)\n", "u2 = v2/v2.norm(2)\n", "u3 = v3/v3.norm(2)\n", "u4 = v4/v4.norm(2)" ] }, { "cell_type": "code", "execution_count": 24, "id": "418f3ab3", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "(5.469890020958685, 5.469890020958683)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# La norma se alcanza en u3\n", "(A*u3).norm(2),A.norm(2)*u3.norm(2)" ] }, { "cell_type": "code", "execution_count": 25, "id": "7667099a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "1.0000000000000002 & -9.809278079813242 \\times 10^{-17} & -2.132668195306052 \\times 10^{-16} & -4.626641480388388 \\times 10^{-17} \\\\\n", "-9.809278079813242 \\times 10^{-17} & 1.0000000000000002 & 7.615441190301836 \\times 10^{-17} & 3.677285267820096 \\times 10^{-16} \\\\\n", "-2.132668195306052 \\times 10^{-16} & 7.615441190301836 \\times 10^{-17} & 1.0000000000000002 & -8.000036451839108 \\times 10^{-16} \\\\\n", "-4.626641480388388 \\times 10^{-17} & 3.677285267820096 \\times 10^{-16} & -8.000036451839108 \\times 10^{-16} & 1.0\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 1.0000000000000002 -9.809278079813242e-17 -2.132668195306052e-16 -4.626641480388388e-17]\n", "[-9.809278079813242e-17 1.0000000000000002 7.615441190301836e-17 3.677285267820096e-16]\n", "[-2.132668195306052e-16 7.615441190301836e-17 1.0000000000000002 -8.000036451839108e-16]\n", "[-4.626641480388388e-17 3.677285267820096e-16 -8.000036451839108e-16 1.0]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(matrix([ [ui*uj for ui in [u1,u2,u3,u4]] for uj in [u1,u2,u3,u4]]))" ] }, { "cell_type": "code", "execution_count": 31, "id": "a148df38", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.9143859992841485" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# El mínimo se alcanza en u1\n", "(A*u1).norm(2)" ] }, { "cell_type": "code", "execution_count": 33, "id": "21ccdba3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.9143859992841477" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/A.inverse().norm(2)" ] }, { "cell_type": "code", "execution_count": null, "id": "10182a01", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "f96f742a", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "902a850a", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "a907e045", "metadata": {}, "source": [ "
\n", " Ejercicio 2. \n", " \n", "a) Busca cómo definir en Sage las matrices de Hilbert. Calcula los números de condición de la matriz de Hilbert de dimensión 5 con la norma 1 y con la norma infinito. Calcula también su número de condición con ambas normas. ¿Qué piensas que ocurrirá al resolver un sistema definido por dicha matriz? \n", " \n", "b) Crea varias matrices aleatorias de dimensión 4. Calcula su determinante y su número de condición (con tu norma preferida). ¿Qué relación piensas que puede haber?\n", " \n", "c) Crea muchas matrices aleatorias de dimensión 4 y representa en una gráfica el determinante y el número de condición.\n", "
" ] }, { "cell_type": "code", "execution_count": null, "id": "531fa9a0", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "7f6e6de5", "metadata": {}, "source": [ "
\n", " Ejercicio 3. Consideramos el sistema\n", "\n", "$$\\left(\\begin{array}{rr} 1 & 1/30 \\\\ 1 & 1/31 \\end{array}\\right)x=b,$$\n", "\n", "con $b$ un vector unitario con la norma 2. Suponemos que tenemos un pequeño error en el término independiente, es decir, en lugar de $b$, tenemos $b+\\tilde b$ y sabemos que $\\|\\tilde b\\|_2/\\|b\\|_2 = 1\\%$. \n", "\n", " a) Calcular el número de condición de la matriz del sistema con la norma euclídea.\n", " \n", " b) Acotar el error relativo de las soluciones.\n", " \n", " c) Encontrar $b$ y $\\tilde b$ en las condiciones anteriores para que el error sea máximo. \n", " \n", " d) Idem para mínimo.\n", " \n", " e) Repite el ejercicio cambiando la norma 2 por la norma 1.\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": null, "id": "95ddd929", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "04a73249", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "8abc4fd2", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "91d25857", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "2929f64c", "metadata": {}, "source": [ "
\n", " Ejercicio 4. Consideramos la matriz\n", "\n", "$$A=\\left(\\begin{array}{rr} 2 & 3 \\\\ 4 & 5 \\end{array}\\right)$$\n", "\n", " a) Representa la imagen por $A$ de la bola unidad de la norma 2.\n", " \n", " b) Calcula los ejes de la elipse que has obtenido en el punto anterior y añádelos al gráfico anterior.\n", " \n", " c) Calcula la norma 2 de $A$. Añade al gráfico la circunferencia de centro el origen y radio $\\|A\\|_2$.\n", " \n", " d) Idem para la norma 2 de $A^{-1}$.\n", " \n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 34, "id": "a9721e62", "metadata": {}, "outputs": [], "source": [ "A = matrix([[2,3],[4,5]])" ] }, { "cell_type": "code", "execution_count": 37, "id": "699fe252", "metadata": { "collapsed": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "circle([0,0],1)" ] }, { "cell_type": "code", "execution_count": 38, "id": "bb8f7a4c", "metadata": { "collapsed": true }, "outputs": [ { "data": { "image/png": "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C40ZM0ZZWVkXXDc3N1c5OTnFbggOI0aY67JzcqRp0+yuBrh0b78tbdwoXX45565xYX4L7MzMTEVGRpZ4PjIyUpmZmRd8Xf/+/fXmm2/q008/1V/+8hdt3LhRvXv3Vu4FugMnJiYWniMPDw9XbGxspW0DnK1KFWnmTHN/7lwzoArgNidPSr//vbk/ZYpUyscmIOkSAnvatGklOoX9+LZp0yZJUkhISInXW5ZV6vM+w4YN080336x27dpp0KBB+uijj7R7926tWLGi1PUnT56s7OzswtvBgwcruklwsV69pKFDzSHF8ePNaGiAm/zpT6YvxpVXFg0MBJSmwuewx48fr+HDh190naZNm2rLli06evRoiZ998803ioqKKvfvi4mJUZMmTbRnz55Sfx4WFqawsLBy/3vwnmeflVaskD77THrjDXNeG3CDbduKxgx//nmJjzJcTIUDOyIiQhHl6N0THx+v7Oxs/ec//9H1118vSfr888+VnZ2tbt26lfv3HT9+XAcPHlRMTExFS0WQaNzYXA4zebJpofTvTwc0OF9BgfT//p+Uny/dcos0YIDdFcHp/HYOu3Xr1urXr5/GjBmjDRs2aMOGDRozZowGDhxYrId4q1attGzZMknSqVOnNGnSJKWkpOjAgQNKSkrSoEGDFBERodtuu81fpcIDfvc7qV076dixolm9ACd78UVp/XrT0Wz2bLurgRv49TrsN998U1dffbUSEhKUkJCga665Rn/729+KrbNr1y5lZ2dLkkJDQ7V161bdeuutatGihUaNGqUWLVooJSVFtWvX9mepcLlq1cyoZ1WqSG++KS1fbndFwIXt3y898oi5/9RTZnx8oCxMrwlPeegh6ZlnpKgoc36wfn27KwKKKygwnSXXrZN69JDWrjVfNBFcmF4TQe/xx6U2baSjR6X77qPXOJzn+edNWF92mbRwIWGN8uNPBZ5So4b02mtmeMe//918IAJO8d//Fh0K/8tfpGbN7K0H7kJgw3M6dTLDlkrm2uwdO+ytB5DMACnDh0t5edLgwaaHOFARBDY86fe/l266yczk9atfSd9/b3dFCGaWJf3mN9KePaaD2YIF0kXGjwJK5ZnAnjNnjtq0aaPOnTvbXQocoEoV6W9/M53PvvxSGjuW89mwz9y5ZlCf0FDprbekevXsrghuRC9xeFpSkvSLX0jnzplpOO+/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z7rmmmuslJQUKyUlxbr66qutgQMHFlvHifvlnXfesapVq2YtWLDA2r59uzVhwgTrsssusw4cOGBZlmU98sgj1siRIwvX379/v1WrVi3rwQcftLZv324tWLDAqlatmvWPf/wjYDVfTEW357nnnrOWLVtm7d692/ryyy+tRx55xJJkLVmyxK5NKHTy5MnC94Qka+bMmVZqaqr11VdfWZblrn1T0W1x6n657777rPDwcCspKalYnnz//feF6/hrv3g+sBcuXGhJKvV2PknWwoULCx8XFBRYU6dOtaKjo62wsDCrR48e1tatWwNcfelGjRpV6vasXbu2cJ3zt+f777+3EhISrAYNGljVqlWzGjdubI0aNcrKyMiwZwPOU9FtsSzn7pvjx49bd9xxh1W7dm2rdu3a1h133FHikhSn7pc5c+ZYTZo0sapXr25dd911xS5RGTVqlHXjjTcWWz8pKcnq0KGDVb16datp06bW3LlzA1zxxVVke2bMmGE1b97cqlGjhvWzn/3MuuGGG6wVK1bYUHVJvkubfnwbNWqUZVnu2jcV3Ran7pcL5cn5n1H+2i9MrwkAgAu4tpc4AADBhMAGAMAFCGwAAFyAwAYAwAUIbAAAXIDABgDABQhsAABcgMAGAMAFCGwAAFyAwAYAwAUIbAAAXIDABgDABf4/wiFSg30E2rcAAAAASUVORK5CYII=\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var('x,y')\n", "implicit_plot(x^2+y^2-1,(x,-2,2),(y,-2,2))" ] }, { "cell_type": "code", "execution_count": 39, "id": "f91cc19d", "metadata": {}, "outputs": [], "source": [ "c(t) = [cos(t),sin(t)]" ] }, { "cell_type": "code", "execution_count": 40, "id": "55873893", "metadata": { "collapsed": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "parametric_plot(c(t),(t,0,2*pi))" ] }, { "cell_type": "code", "execution_count": 42, "id": "e961e5b2", "metadata": { "collapsed": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "parametric_plot(A*vector([cos(t),sin(t)]),(t,0,2*pi))" ] }, { "cell_type": "code", "execution_count": null, "id": "083f0b2f", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.5", "language": "sage", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.2" } }, "nbformat": 4, "nbformat_minor": 5 }