{ "metadata": { "kernelspec": { "codemirror_mode": { "name": "python", "version": 3 }, "display_name": "Python 3", "language": "python", "name": "python3" }, "name": "", "signature": "sha256:f1a2456af9ba2fd238ae38f708aab6a1daf6d0f271319c92900472831c54d589" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Expoentes de Matrizes\n", "Como uma prepara\u00e7\u00e3o para a apresentar a solu\u00e7\u00e3o de um sistema aut\u00f4nomo linear vamos rever a *exponencia\u00e7\u00e3o de Matrizes quadradas*\n", "## Norma no espa\u00e7o das matrizes quadradas\n", "Indentificamos de forma natural o espa\u00e7o vetorial $\\mathbb{R}^n$ com o conjunto das matrizes com $n$ linhas e $1$ coluna. A\u00ed, al\u00e9m da estrutura alg\u00e9brica can\u00f4nica de espa\u00e7o vetorial, consideremos tamb\u00e9m a *norma euclidiana* derivada do produto interno natural:\n", "$$ \\langle \\mathbf{x}, \\mathbf{y}\\rangle = \\sum x_iy_i \\text{ e } \\| \\mathbf{x} \\| = \\sqrt[2]{\\langle \\mathbf{x}, \\mathbf{x}\\rangle}$$\n", "Vamos definir a norma de uma matriz quadrada $A \\in \\mathbf{M}_{n\\times n}$ como:\n", "$$ \\| A \\| = \\sup_{\\mathbf{x} \\neq 0} \\frac{\\|Ax\\|}{\\|x\\|} $$\n", "Esta n\u00e3o \u00e9 a \u00fanica forma de definir norma no espa\u00e7o das matrizes. Um levantamento dos tipos de normas em matrizes pode ser visto [neste site da Wikip\u00e9dia](http://en.wikipedia.org/wiki/Matrix_norm).\n", "\n", "#### Exerc\u00edcio:\n", "Mostre as seguintes propriedades da norma definida acima:\n", "\n", "* $\\| A \\| \\geq 0$ e $\\|A\\|=0 \\iff A=0 $\n", "* $\\| \\lambda A \\| = |\\lambda|\\|A\\|$\n", "* $\\| A+B\\| \\leq \\|A\\| + \\|B\\|$\n", "* $\\|AB\\| \\leq \\| A \\|\\|B\\|$\n", "\n", "Pode-se mostrar que no nosso caso a norma $\\|A\\|$ \u00e9 o maior *valor singular* de $A$, isto \u00e9:\n", "$$ \\|A\\| = \\sigma_{max}(A) = \\sqrt{\\lambda_{max}(A^*A)}$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Norma de matrizes em numpy\n", "import numpy as np\n", "from numpy.linalg import norm\n", "# defino a matriz\n", "A = np.array([[1,2,3],[0,1,0],[3.5,7.2,0]])\n", "sigma = norm(A,2) # a norma que a gente definiu\n", "print(sigma)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "8.40415678638\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exponencial de uma matriz\n", "Com a norma acima temos a id\u00e9ia de converg\u00eancia introduzida no espa\u00e7o $\\mathbf{M}_{n\\times n}$. E vamos definir a exponecial da matriz exatamente atrav\u00e9s de uma s\u00e9rie absolutamente convergente:\n", "$$ \\exp{A} = \\sum_{k=0}^\\infty \\frac{A^k}{k!} = I +\\sum_{k=1}^\\infty \\frac{A^k}{k!} $$\n", "\n", "#### Propriedades\n", "\n", "1. $\\exp 0 =I$\n", "2. $\\exp([\\alpha+\\beta]A) = \\exp(\\alpha A)\\exp(\\beta A)$\n", "3. $\\exp(-A)\\exp(A) = I$\n", "4. $\\exp(A+B) = \\exp(A)\\exp(B)$ se $AB=BA$\n", "5. $\\exp(PAP^{-1})=P\\exp(A)P^{-1}$\n", "6. $ \\dfrac{d}{dt}\\exp(tA) =A\\exp(tA) = \\exp(tA)A$\n", "\n", "#### Exerc\u00edcios \n", "Calcular $\\exp(tA)$ quando \n", "* $ A = \\begin{pmatrix}2 & 0 \\\\ 0 & -1 \\end{pmatrix}$\n", "\n", "* $ A = \\begin{pmatrix}0 & 2 \\\\ 0 & 0 \\end{pmatrix}$\n", "\n", "* $ A = \\begin{pmatrix} 1 & -1 \\\\ 0 & 1 \\end{pmatrix}$\n", "\n", "* $ A = \\begin{pmatrix}0 & 1 \\\\ -1 & 0 \\end{pmatrix}$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exponencial de matriz usando Scipy\n", "from scipy.linalg import expm, expm3\n", "B = expm(A) # A foi definida antes\n", "C = expm3(A)\n", "print(A,\"\\n\\n\",B,\"\\n\\n\",C)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 1. 2. 3. ]\n", " [ 0. 1. 0. ]\n", " [ 3.5 7.2 0. ]] \n", "\n", " [[ 2.52429687e+01 6.39546323e+01 1.99915757e+01]\n", " [ 5.78291983e-16 2.71828183e+00 7.82145295e-16]\n", " [ 2.33235049e+01 6.29962395e+01 1.85791101e+01]] \n", "\n", " [[ 25.24296858 63.95463202 19.99157557]\n", " [ 0. 2.71828183 0. ]\n", " [ 23.32350483 62.9962392 18.57911005]]\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 } ], "metadata": {} } ] }