\( \DeclareMathOperator{\abs}{abs} \newcommand{\ensuremath}[1]{\mbox{$#1$}} \)
(%i5) |
m
:
matrix([
3
*
a
+
2
*
b,
-
2
*
a
-
b
+
c],[
b
+
2
*
c,
a
-
c])
$
s1 : ev( m, a = 1, b = 0, c = 0) $ s2 : ev( m, a = 0, b = 1, c = 0) $ s3 : ev( m, a = 0, b = 0, c = 1) $ print( "S", "=", "Gen", "{", s1, ",", s2, ",", s3, "}") $ |
Verifiquemos que constituyen una base:
(%i7) |
Isom(
m)
:
=
create_list(
m[
i,
j],
i,
1,
2,
j,
1,
2)
$
rank( matrix( Isom( s1), Isom( s2), Isom( s3))) ; |
Hasta ahora hemos ortogonalizado la base; sin embargo, resulta más sencillo obtener el subespacio ortogonal primero, y de él sacar la proyección. Recordemos \[\textbf{proy}_S(\vec{v})+\textbf{proy}_{S^\bot}(\vec{v})=\vec{v},\]
luego \[\textbf{proy}_S(\vec{v})=\vec{v}-\textbf{proy}_{S^\bot}(\vec{v})\]
(%i10) |
eq
:
determinant(
matrix([
a,
b,
c,
d],
Isom(
s1),
Isom(
s2),
Isom(
s3)))
$
X : matrix([ a, b],[ c, d]) $ print( "S=", "{", X, ";", eq = 0, "}") $ |
Por tanto,
(%i13) |
So_u1
:
makelist(
coeff(
eq,
Isom(
X)[
i]),
i,
1,
4)
$
So_u1 : matrix( makelist( So_u1[ i], i, 1, 2), makelist( So_u1[ i], i, 3, 4)) $ print( "S^⟂", "=Gen", "{", So_u1, "}") $ |
Así pues, la proyeccion sobre el ortogonal es:
(%i15) |
v
:
matrix([
-
1,
0],[
2,
1])
$
p_So :( mat_trace( transpose( v). So_u1) / mat_trace( transpose( So_u1). So_u1)) * So_u1 ; |
Ahora solo tenemos que restar:
(%i16) | p_S : v - p_So ; |
Por último, calculamos la norma del producto:
(%i18) |
p
:
p_S.
p_So
;
sqrt( mat_trace( transpose( p). p)) ; |
Created with wxMaxima.
Primero necesitamos una base del subespacio vectorial. Procedemos a obtener los vectores de la base haciendo las sustituciones habituales: