Kernel (álxebra linear)

En matemáticas, o kernel ou núcleo dun mapa linear, tamén coñecido como espazo nulo, é a parte do dominio que se asigna ao vector cero do codominio; o kernel é sempre un subespazo linear do dominio. É dicir, dado un mapa linear L: V → W entre dous espazos vectoriais V e W, o kernel de L é o espazo vectorial de todos os elementos v de V tal que L(v)
0, onde 0 denota o vector cero en W, ou máis simbólicamente: ker ⁡ ( L )
{ v ∈ V ∣ L ( v )
0 }
L − 1 ( 0 ). {\displaystyle \ker(L)
\left\{\mathbf {v} \in V\mid L(\mathbf {v} )
\mathbf {0} \right\} L^{-1}(\mathbf {0} ). } Propiedades
O kernel de L é un subespazo linear do dominio V. No mapa linear L: V → W, {\displaystyle L: V\to W, } dous elementos de V teñen a mesma imaxe en W se e só se a súa diferenza reside no kernel de L, é dicir, L ( v 1 )
L ( v 2 ) se e só se L ( v 1 − v 2 )
0. {\displaystyle L\left(\mathbf {v} _{1}\right)
L\left(\mathbf {v} _{2}\right)\quad {\text{ se e só se }}\quad L\left(\mathbf {v} _{1}-\mathbf {v} _{2}\right)
\mathbf {0}. } A partir disto, despréndese que a imaxe de L é isomorfa ao cociente de V polo kernel: im ⁡ ( L ) ≅ V / ker ⁡ ( L ). {\displaystyle \operatorname {im} (L)\cong V/\ker(L). } No caso de que V sexa de dimensión finita, isto implica o teorema do rango: dim ⁡ ( ker ⁡ L ) + dim ⁡ ( im ⁡ L )
dim ⁡ ( V ). {\displaystyle \dim(\ker L)+\dim(\operatorname {im} L)
\dim(V). } onde o termo rango indica a dimensión da imaxe de L, dim ⁡ ( im ⁡ L ), {\displaystyle \dim(\operatorname {im} L), } mentres que nulidade indica a dimensión do kernel de L, dim ⁡ ( ker ⁡ L ). {\displaystyle \dim(\ker L). } Isto é, Rango ⁡ ( L )
dim ⁡ ( im ⁡ L ) e Nulidade ⁡ ( L )
dim ⁡ ( ker ⁡ L ), {\displaystyle \operatorname {Rango} (L)
\dim(\operatorname {im} L)\qquad {\text{ e }}\qquad \operatorname {Nulidade} (L)
\dim(\ker L), } por tanto o teorema do rango pode reexpresarse como Rango ⁡ ( L ) + Nulidade ⁡ ( L )
dim ⁡ ( dominio ⁡ L ). {\displaystyle \operatorname {Rango} (L)+\operatorname {Nulidade} (L)
\dim \left(\operatorname {dominio} L\right). } Cando V é un espazo prehilbertiano (espazo vectorial con produto escalar), o cociente V / ker ⁡ ( L ) {\displaystyle V/\ker(L)} pódese identificar co complemento ortogonal en V de ker ⁡ ( L ) {\displaystyle \ker(L)}. En análise funcional
Se V e W son espazos vectoriais topolóxicos tal que W é de dimensión finita, entón un operador linear L: V → W é continuo se e só se o kernel de L é un subespazo pechado de V. Representación como multiplicación matricial
Considere un mapa linear representado como unha matriz A m × n con coeficientes nun corpo K (normalmente R {\displaystyle \mathbb {R} } ou C {\displaystyle \mathbb {C} } ), que está operando en vectores columna x con n compoñentes sobre K. O núcleo deste mapa linear é o conxunto de solucións da ecuación Ax
0, onde 0 enténdese como o vector cero. A dimensión do núcleo de A chámase nulidade de A. Na notación de xeración de conxuntos, N ⁡ ( A )
Null ⁡ ( A )
ker ⁡ ( A )
{ x ∈ K n ∣ A x
0 }. {\displaystyle \operatorname {N} (A)
\operatorname {Null} (A)
\operatorname {ker} (A)
\left\{\mathbf {x} \in K^{n}\mid A\mathbf {x}
\mathbf {0} \right\}. } A ecuación matricial é equivalente a un sistema homoxéneo de ecuacións lineares: A x
0 ⇔ a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n
0 a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n
0 ⋮ a m 1 x 1 + a m 2 x 2 + ⋯ + a m n x n
0. {\displaystyle A\mathbf {x}
\mathbf {0} \; \; \Leftrightarrow \; \; {\begin{alignedat}{7}a_{11}x_{1}&&\; +\; &&a_{12}x_{2}&&\; +\; \cdots \; +\; &&a_{1n}x_{n}&&\;
\; &&&0\\a_{21}x_{1}&&\; +\; &&a_{22}x_{2}&&\; +\; \cdots \; +\; &&a_{2n}x_{n}&&\;
\; &&&0\\&&&&&&&&&&\vdots \ \; &&&\\a_{m1}x_{1}&&\; +\; &&a_{m2}x_{2}&&\; +\; \cdots \; +\; &&a_{mn}x_{n}&&\; \; &&&0{\text{. }}\\\end{alignedat}}} Así, o núcleo de A é o mesmo que a solución estabelecida para as ecuacións homoxéneas anteriores.
Propiedades do subespazo
O núcleo dunha matriz A m × n sobre un corpo K é un subespazo linear de Kn. É dicir, o núcleo de A, o conxunto Null(A), ten as seguintes tres propiedades: Null(A) sempre contén o vector cero, dado que A00.
Se x ∈ Null(A) e y ∈ Null(A), daquela x + y ∈ Null(A). Isto dedúcese da propiedade distributiva da múltiplicación de matrices sobre a suma.
Se x ∈ Null(A) e c é un scalar, c ∈ K, daquela cx ∈ Null(A), dado que A(cx)
c(Ax)
c00.
O espazo de filas dunha matriz
O produto Ax pódese escribir en termos do produto escalar dos vectores do seguinte xeito: A x
[ a 1 ⋅ x a 2 ⋅ x ⋮ a m ⋅ x ]. {\displaystyle A\mathbf {x}
{\begin{bmatrix}\mathbf {a} _{1}\cdot \mathbf {x} \\\mathbf {a} _{2}\cdot \mathbf {x} \\\vdots \\\mathbf {a} _{m}\cdot \mathbf {x} \end{bmatrix}}. } Aquí, a1, .. ., am denotan as filas da matriz A. Dedúcese que x está no núcleo de A, se e só se x é ortogonal (ou perpendicular) a cada un dos vectores fila de A (xa que a ortogonalidade defínese como un produto escalar de valor 0).
A dimensión do espazo de filas de A chámase rango de A, e a dimensión do núcleo de A denomínase nulidade de A. Estas cantidades están relacionadas polo teorema do rango rango ⁡ ( A ) + nulidade ⁡ ( A )
n. {\displaystyle \operatorname {rango} (A)+\operatorname {nulidade} (A)
n. }
Espazo nulo esquerdo
O espazo nulo esquerdo ou cokernel dunha matriz A consta de todos os vectores columna x tal que xTA 0T, onde T denota a transposición dunha matriz. O espazo nulo esquerdo de A é o mesmo que o núcleo de AT. O espazo nulo esquerdo de A é o complemento ortogonal do espazo columna de A, e é dual ao cokernel da transformación linear asociada. O núcleo, o espazo de filas, o espazo de columnas e o espazo nulo esquerdo de A son os catro subespazos fundamentais asociados a unha matriz A.
Sistemas non homoxéneos de ecuacións lineares
O núcleo tamén xoga un papel na solución dun sistema non homoxéneo de ecuacións lineares: A x
b ou a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n
b 1 a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n
b 2 ⋮ a m 1 x 1 + a m 2 x 2 + ⋯ + a m n x n
b m {\displaystyle A\mathbf {x}
\mathbf {b} \quad {\text{ou}}\quad {\begin{alignedat}{7}a_{11}x_{1}&&\; +\; &&a_{12}x_{2}&&\; +\; \cdots \; +\; &&a_{1n}x_{n}&&\;
\; &&&b_{1}\\a_{21}x_{1}&&\; +\; &&a_{22}x_{2}&&\; +\; \cdots \; +\; &&a_{2n}x_{n}&&\;
\; &&&b_{2}\\&&&&&&&&&&\vdots \ \; &&&\\a_{m1}x_{1}&&\; +\; &&a_{m2}x_{2}&&\; +\; \cdots \; +\; &&a_{mn}x_{n}&&\;
\; &&&b_{m}\\\end{alignedat}}} Se u e v son dúas posíbeis solucións da ecuación anterior, entón A ( u − v )
A u − A v
b − b
0 {\displaystyle A(\mathbf {u} -\mathbf {v} )
A\mathbf {u} -A\mathbf {v}
\mathbf {b} -\mathbf {b}
\mathbf {0} } Así, a diferenza de dúas solucións calquera á ecuación Ax b reside no núcleo de A.
Do anterior dedúcese que calquera solución da ecuación Ax
b pode expresarse como a suma dunha solución fixa v e un elemento arbitrario do núcleo. É dicir, a conxunto de solucións para a ecuación Ax
b é { v + x ∣ A v
b ∧ x ∈ Null ⁡ ( A ) }. {\displaystyle \left\{\mathbf {v} +\mathbf {x} \mid A\mathbf {v}
\mathbf {b} \land \mathbf {x} \in \operatorname {Null} (A)\right\}. } Xeométricamente, isto di que o conxunto de solucións para Ax b é a translación do núcleo de A polo vector v. Exemplo sinxelo detallado
O seguinte é un exempliño sinxelo do cálculo do núcleo dunha matriz. O exemplo tamén toca o espazo de filas e a súa relación co núcleo.
Considere a matriz A
[ 235 − 423 ]. {\displaystyle A
{\begin{bmatrix}2&3&5\\-4&2&3\end{bmatrix}}. } O núcleo desta matriz está formado por todos os vectores (x, y, z) ∈ R3 para os que [ 235 − 423 ] [ x y z ]
[ 00 ], {\displaystyle {\begin{bmatrix}2&3&5\\-4&2&3\end{bmatrix}}{\begin{bmatrix}x\\y\\z\end{bmatrix}}
{\begin{bmatrix}0\\0\end{bmatrix}}, } que se pode expresar como un sistema homoxéneo de ecuacións lineares que inclúen x, y e z: 2 x + 3 y + 5 z
0, − 4 x + 2 y + 3 z
0. {\displaystyle {\begin{aligned}2x+3y+5z&
0, \\-4x+2y+3z&
0. \end{aligned}}} As mesmas ecuacións lineares tamén se poden escribir en forma matricial como: [ 2350 − 4230 ]. {\displaystyle \left[{\begin{array}{ccc|c}2&3&5&0\\-4&2&3&0\end{array}}\right]. } Mediante a eliminación de Gauss-Jordan, a matriz pódese reducir a: [ 101 / 1600113 / 80 ]. {\displaystyle \left[{\begin{array}{ccc|c}1&0&1/16&0\\0&1&13/8&0\end{array}}\right]. } Reescribindo a matriz en forma de ecuación obtemos: x
− 116 z y
− 138 z. {\displaystyle {\begin{aligned}x&
-{\frac {1}{16}}z\\y&
-{\frac {13}{8}}z. \end{aligned}}} Os elementos do núcleo pódense expresar tamén en forma vectorial paramétrica, como segue: [ x y z ]
c [ − 1 / 16 − 13 / 81 ] ( onde c ∈ R ) {\displaystyle {\begin{bmatrix}x\\y\\z\end{bmatrix}}
c{\begin{bmatrix}-1/16\\-13/8\\1\end{bmatrix}}\quad ({\text{onde }}c\in \mathbb {R} )} Dado que c é unha variábel libre que vai sobre todos os números reais, isto pódese expresar igualmente como: [ x y z ]
c [ − 1 − 2616 ]. {\displaystyle {\begin{bmatrix}x\\y\\z\end{bmatrix}}
c{\begin{bmatrix}-1\\-26\\16\end{bmatrix}}. } O núcleo de A é precisamente o conxunto de solucións para estas ecuacións (neste caso, unha liña que pasa pola orixe en R3). Aquí, posto que o vector (−1, −26, 16)T constitúe unha base do núcleo de A, a nulidade de A vale 1.
Os seguintes produtos escalares son cero: [ 235 ] [ − 1 − 2616 ]
0 e [ − 423 ] [ − 1 − 2616 ]
0, {\displaystyle {\begin{bmatrix}2&3&5\end{bmatrix}}{\begin{bmatrix}-1\\-26\\16\end{bmatrix}}
0\quad \mathrm {e} \quad {\begin{bmatrix}-4&2&3\end{bmatrix}}{\begin{bmatrix}-1\\-26\\16\end{bmatrix}}
0, } que ilustra como os vectores do núcleo de A son ortogonais a cada un dos vectores fila de A.
Estes dous vectores fila (linearmente independentes) abranguen o espazo de filas de A, un plano ortogonal ao vector (−1, −26, 16)T.
Co rango 2 de A, a nulidade 1 de A e a dimensión 3 de A, temos unha ilustración do teorema do rango. Outros exemplos
Se L: Rm → Rn, entón o núcleo de L é o conxunto de solucións nun sistema homoxéneo de ecuacións lineares. Como no exempliño anterior, se L é o operador: L ( x 1, x 2, x 3 )
( 2 x 1 + 3 x 2 + 5 x 3, − 4 x 1 + 2 x 2 + 3 x 3 ) {\displaystyle L(x_{1}, x_{2}, x_{3})
(2x_{1}+3x_{2}+5x_{3}, \; -4x_{1}+2x_{2}+3x_{3})} daquela o núcleo de L é o conxunto de solucións das ecuacións 2 x 1 + 3 x 2 + 5 x 3
0 − 4 x 1 + 2 x 2 + 3 x 3
0 {\displaystyle {\begin{alignedat}{7}2x_{1}&\; +\; &3x_{2}&\; +\; &5x_{3}&\;
\; &0\\-4x_{1}&\; +\; &2x_{2}&\; +\; &3x_{3}&\;
\; &0\end{alignedat}}} Denotamos como C[0, 1] o espazo vectorial de todas as funcións continuas de valores reais no intervalo [0, 1], e definimos L: C[0, 1] → R pola regra L ( f )
f ( 0. 3 ). {\displaystyle L(f)
f(0. 3). } Entón o núcleo de L consta de todas as funcións f ∈ C[0, 1] para as que f(0. 3) 0.
Sexa C∞(R) o espazo vectorial de todas as funcións infinitamente derivábeis R → R, e sexa D: C∞(R) → C∞(R) o operador de diferenciación: D ( f )
d f d x. {\displaystyle D(f)
{\frac {df}{dx}}. } Daquela o núcleo de D consta de todas as funcións en C∞(R) cuxas derivadas son cero, é dicir, o conxunto de todas as funcións constantes.
Sexa R∞ o produto directo de infinitas copias de R, e sexa s: R∞ → R∞ o operador de desprazamento s ( x 1, x 2, x 3, x 4, … )
( x 2, x 3, x 4, … ). {\displaystyle s(x_{1}, x_{2}, x_{3}, x_{4}, \ldots )
(x_{2}, x_{3}, x_{4}, \ldots ). } Entón o núcleo de s é o subespazo unidimensional que consta de todos os vectores (x1, 0, 0, 0, .. .).
Se V é un espazo prehilbertiano e W é un subespazo, o núcleo da proxección ortogonal V → W é o complemento ortogonal de W en V. Cálculo por eliminación gaussiana
Unha base do núcleo dunha matriz pódese calcular mediante eliminación de Gauss.
Para este fin, dada unha matriz A m × n, construímos primeiro a matriz aumentada por filas [ A I ], {\displaystyle {\begin{bmatrix}A\\\hline I\end{bmatrix}}, } onde I é a matriz de identidade n × n.
Calculando a súa forma escalonada de columna mediante eliminación gaussiana (ou calquera outro método axeitado), obtemos unha matriz [ B C ]. {\displaystyle {\begin{bmatrix}B\\\hline C\end{bmatrix}}. } Unha base do núcleo de A consiste nas columnas distintas de cero de C de forma que a columna correspondente de B é unha columna cero.
De feito, o cálculo pode deterse en canto a matriz superior estea en forma de escada: o resto do cálculo consiste en mudar a base do espazo vectorial xerado polas columnas cuxa parte superior é cero.
Por exemplo, supoña que A
[ 10 − 302 − 80150 − 1400017 − 9000000 ]. {\displaystyle A
{\begin{bmatrix}1&0&-3&0&2&-8\\0&1&5&0&-1&4\\0&0&0&1&7&-9\\0&0&0&0&0&0\end{bmatrix}}. } Entón [ A I ]
[ 10 − 302 − 80150 − 1400017 − 9000000100000010000001000000100000010000001 ]. {\displaystyle {\begin{bmatrix}A\\\hline I\end{bmatrix}}
{\begin{bmatrix}1&0&-3&0&2&-8\\0&1&5&0&-1&4\\0&0&0&1&7&-9\\0&0&0&0&0&0\\\hline 1&0&0&0&0&0\\0&1&0&0&0&0\\0&0&1&0&0&0\\0&0&0&1&0&0\\0&0&0&0&1&0\\0&0&0&0&0&1\end{bmatrix}}. } Poñendo a parte superior en escada de columnas mediante operacións de columna sobre toda a matriz dá [ B C ]
[ 1000000100000010000000001003 − 28010 − 51 − 40001000010 − 79000010000001 ]. {\displaystyle {\begin{bmatrix}B\\\hline C\end{bmatrix}}
{\begin{bmatrix}1&0&0&0&0&0\\0&1&0&0&0&0\\0&0&1&0&0&0\\0&0&0&0&0&0\\\hline 1&0&0&3&-2&8\\0&1&0&-5&1&-4\\0&0&0&1&0&0\\0&0&1&0&-7&9\\0&0&0&0&1&0\\0&0&0&0&0&1\end{bmatrix}}. } As tres últimas columnas de B son columnas cerp. Polo tanto, os tres últimos vectores de C, [ 3 − 51000 ], [ − 210 − 710 ], [ 8 − 40901 ] {\displaystyle \left[\! \! {\begin{array}{r}3\\-5\\1\\0\\0\\0\end{array}}\right], \; \left[\! \! {\begin{array}{r}-2\\1\\0\\-7\\1\\0\end{array}}\right], \; \left[\! \! {\begin{array}{r}8\\-4\\0\\9\\0\\1\end{array}}\right]} son unha base do núcleo de A. Cálculo numérico
O problema de calcular o kernel nun ordenador depende da natureza dos coeficientes.
Coeficientes exactos
Se os coeficientes da matriz son exactamente números dados, a forma escalonada de columnas da matriz pódese calcular co algoritmo de Bareiss de forma máis eficiente que coa eliminación gaussiana. É aínda máis eficiente empregar a aritmética modular e o teorema do resto chinés, o que reduce o problema a varios problemas similares sobre corpos finitos (isto evita a sobrecarga inducida pola non linearidade da complexidade computacional da multiplicación de enteiros).
Para os coeficientes nun corpo finito, a eliminación de Gauss funciona ben, mais para as grandes matrices que ocorren na criptografía e no cálculo base de Gröbner, coñécense mellores algoritmos, que teñen aproximadamente a mesma complexidade computacional, mais son máis rápidos e compórtanse mellor co hardware moderno.
Cálculo en coma flotante
Para matrices cuxas entradas son números en coma flotante, o problema de calcular o kernel só ten sentido para matrices de tal forma que o número de filas é igual ao seu rango: debido aos erros de redondeo, unha matriz en coma flotante ten case sempre un rango completo, mesmo cando se trata dunha aproximación dunha matriz de rango moito menor. Mesmo para unha matriz de rango completo, é posíbel calcular o seu núcleo só se está ben condicionado, é dicir, ten un número de condición baixo.
Un software de última xeración para este fin é a biblioteca Lapack.