from sympy import Symbol, Matrix, eyeAplicaciones lineales
En este documento ilustraremos cómo usar Python para resolver los problemas tipo propuestos por L. Merino y E. Santos en página de resolución de ejercicios tipo correspondientes al bloque “Aplicaciones Lineales”.
Ejercicio
Se considera la aplicación lineal \(D: \mathcal{P}_3(\mathbb{R}) \longrightarrow \mathcal{P}_2(\mathbb{R})\) que a cada polinomio de \(\mathcal{P}_3(\mathbb{R})\) le asigna su derivada: \(D(p(x))=p'(x)\). Determinar la matriz asociada a \(D\) respecto de la base estándar \(B=\{ 1, x, x^2, x^3\}\).
Nuestra matriz tiene por columnas las coordenadas de las imágenes de los vectores de la base: \[ \begin{array}{lcccl} D(1)&= & 0 &= & (0,0,0,0)_B, \\ D(x) &= & 1 &= & (1,0,0,0)_B, \\ D(x^2)&= & 2x &= & (0,2,0,0)_B, \\ D(x^3)&= & 3x^2& =&(0,0,3,0)_B. \end{array} \]
A=Matrix([(0,0,0,0),(1,0,0,0),(0,2,0,0),(0,0,3,0)]).T
A\(\displaystyle \left[\begin{matrix}0 & 1 & 0 & 0\\0 & 0 & 2 & 0\\0 & 0 & 0 & 3\\0 & 0 & 0 & 0\end{matrix}\right]\)
Ejercicio
De una aplicación lineal \(f:\mathbb{R}^3 \longrightarrow \mathbb{R}^2\) se sabe que \[ \begin{array}{l} f(1,0,0)=(1,0),\\ f(0,1,0)= (1,1), \\ f(0,0,1)=(0,-1). \end{array} \]
Determinar la matriz asociada a \(f\) respecto de las respectivas bases canónicas de \(\mathbb{R}^3\) y \(\mathbb{R}^2\) y calcular \(f(1,2,1)\).
La matriz asociada a \(f\) respecto de las bases canónicas es
A=Matrix([[1,0],[1,1],[0,-1]]).T
A\(\displaystyle \left[\begin{matrix}1 & 1 & 0\\0 & 1 & -1\end{matrix}\right]\)
La imagen de \((1,2,1)\) se obtiene multiplicando A por \((1,2,1)^t\).
A*Matrix([1,2,1])\(\displaystyle \left[\begin{matrix}3\\1\end{matrix}\right]\)
Ejercicio
Se considera la aplicación lineal \(f:\mathbb{R}^3 \longrightarrow \mathbb{R}^3\) definida por \(f(x,y,z)=(x+y,x+z, y-z)\). Obtener unas ecuaciones cartesianas de \(\operatorname{Im}(f)\).
[0,1]*5[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
f=lambda x,y,z: Matrix([x+y,x+z,y-z])
A=Matrix(3,3,[0]*9)
A[:,0]=f(1,0,0)
A[:,1]=f(0,1,0)
A[:,2]=f(0,0,1)
A\(\displaystyle \left[\begin{matrix}1 & 1 & 0\\1 & 0 & 1\\0 & 1 & -1\end{matrix}\right]\)
Podemos usar la forma normal por columnas de esa matriz para calcular una base de \(\operatorname{Im}(f)\).
A.T.rref(pivots=False)\(\displaystyle \left[\begin{matrix}1 & 0 & 1\\0 & 1 & -1\\0 & 0 & 0\end{matrix}\right]\)
A partir de aquí podríamos calcular las ecuaciones cartesianas. Nosotros vamos a utilizar nuestra función gensec definida en el bloc ALME-espacios-vectoriales.ipynb.
def gensec(A):
"""
A es una matriz cuyas filas son los generadores o los coeficientes del subespacio
La salida son las ecuaciones implícitas o los generadores (por filas)
"""
c=A.cols # número de columnas de A
f=A.rows # número de filas
r=A.rank() # rango
rtAI=A.T.row_join(eye(c)).rref(pivots=False) # añadimos la identidad calculamor forma reducida por columnas
ecs=rtAI[r:,f:]# nos quedamos con la parte que corresponde a ceros (ecuaciones o generadores según la entrada)
return ecsgensec(A.T)\(\displaystyle \left[\begin{matrix}1 & -1 & -1\end{matrix}\right]\)
Ejercicio
Se considera la aplicación lineal \(f:\mathbb{R}^3 \longrightarrow \mathbb{R}^3\) definida por \(f(x,y,z)=(x+y,x+z, y-z)\), obtener una base de \(\operatorname{N}(f)\).
Podemos usar de nuevo gensec, pues unas ecuaciones del núcleo son \[
\left\{ \begin{array}{ccc}
x+y & = & 0, \\
x+z& = & 0, \\
y-z& = & 0.
\end{array}\right.
\]
gensec(A)\(\displaystyle \left[\begin{matrix}1 & -1 & -1\end{matrix}\right]\)
Podemos también usar el método nullspace, que calcula el núcleo de una de una aplicación lineal.
A.nullspace()[Matrix([
[-1],
[ 1],
[ 1]])]
Por tanto, una base para el núcleo de \(F\) es \(\{(-1,1,1)\}\).
Ejercicio
Se considera la aplicación lineal \(D: \mathcal{P}_3(\mathbb{R}) \longrightarrow \mathcal{P}_3(\mathbb{R})\) que a cada polinomio de \(\mathcal{P}_3(\mathbb{R})\) le asigna su derivada: \(D(p(x))=p'(x)\). Determinar la matriz asociada a \(D\) respecto de la base \(\bar{B}=\{ 1+x^2, x+x^3, 1+x^3, x^3\}\).
Recordemos que la matriz asociada a la base estándar es
A=Matrix([(0,0,0,0),(1,0,0,0),(0,2,0,0),(0,0,3,0)]).T
A\(\displaystyle \left[\begin{matrix}0 & 1 & 0 & 0\\0 & 0 & 2 & 0\\0 & 0 & 0 & 3\\0 & 0 & 0 & 0\end{matrix}\right]\)
La matriz de cambio de \(\overline{B}\) a \(B\) se obtiene poniendo las coordenadas de los vectores de \(\overline{B}\) respecto de \(B\) en una matriz por columnas.
P=Matrix([(1,0,1,0),(0,1,0,1),(1,0,0,1),(0,0,0,1)]).T
P\(\displaystyle \left[\begin{matrix}1 & 0 & 1 & 0\\0 & 1 & 0 & 0\\1 & 0 & 0 & 0\\0 & 1 & 1 & 1\end{matrix}\right]\)
La matriz de cambio de base de \(B\) a \(\overline{B}\) es \(P^{-1}\).
P.inv()\(\displaystyle \left[\begin{matrix}0 & 0 & 1 & 0\\0 & 1 & 0 & 0\\1 & 0 & -1 & 0\\-1 & -1 & 1 & 1\end{matrix}\right]\)
Así si partimos de coordenadas en \(\overline{B}\) y queremos aplicar \(f\) para terminar obteniendo coordenadas respectdo de \(\overline{B}\), lo primero que tenemos que hacer es traducir esas coordenadas a \(B\), aplicar \(f\), que devuelve su salida en coordenadas respecto a \(B\), y finalmente convertir esas coordenadas a \(\overline{B}\). Por tanto, la matriz buscada es \(P^{-1}AP\).
P.inv()*A*P\(\displaystyle \left[\begin{matrix}0 & 3 & 3 & 3\\2 & 0 & 0 & 0\\0 & -2 & -3 & -3\\-2 & 2 & 3 & 3\end{matrix}\right]\)
Ejercicio
De una aplicación lineal \(f:\mathbb{R}^3 \longrightarrow \mathbb{R}^4\) se sabe que \[ \begin{array}{l} f(1,2,1)=(1,0,1,0),\\ f(2,1,2)= (0,1,0,1), \\ f(1,0,0)=(0,0,0,0). \end{array} \] Determinar la matriz asociada a \(f\) respecto de las respectivas bases canónicas de \(\mathbb{R}^3\) y \(\mathbb{R}^4\) y determinar \(f(3,1,1)\).
Comprobemos que \(\overline{B}=\{(1,2,1),(2,1,2),(1,0,0)\}\) es una base.
P=Matrix([(1,2,1),(2,1,2),(1,0,0)]).T
P.rank()3
Tenemos así que \(\overline{B}\) es una base, y \(P\) pasa de \(\overline{B}\) a la base canónica. Además, la matriz de \(f\) respecto de \(\overline{B}\) y la base canónica de \(\mathbb{R}^4\) es
A=Matrix([(1,0,1,0),(0,1,0,1),(0,0,0,0)]).T
A\(\displaystyle \left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\1 & 0 & 0\\0 & 1 & 0\end{matrix}\right]\)
Para calcular la matriz con respecto a las bases canónicas, primero traducimos coordenadas de la base canónica a \(\overline{B}\) y luego aplicamos \(f\) (cuya salida ya es en coordenadas respecto de la base canónica). Por tanto, la matriz asociada es \(A*P^{-1}\).
A*P.inv()\(\displaystyle \left[\begin{matrix}0 & \frac{2}{3} & - \frac{1}{3}\\0 & - \frac{1}{3} & \frac{2}{3}\\0 & \frac{2}{3} & - \frac{1}{3}\\0 & - \frac{1}{3} & \frac{2}{3}\end{matrix}\right]\)
La imagen de \((3,1,1)\) es
A*P.inv()*Matrix([3,1,1])\(\displaystyle \left[\begin{matrix}\frac{1}{3}\\\frac{1}{3}\\\frac{1}{3}\\\frac{1}{3}\end{matrix}\right]\)