Práctica 1 : 
        Matrices y Sistemas de ecuaciones.

1.  - Vectores.

Un vector es una fila de elementos separados por comas y entre llaves:

v = {0, 0, 1}
w = {-1, a, 3 x}
u = {1 + 2, 7*b, x, x^2}

\(Dos\ vectores\ pueden\ ser\ sumados\ con\ el\ comando\ "+"\ o\ restados\ con\ el\ comando\ "-"\ siempre\ que\ tengan\ la\ misma\ cantidad\ de\ \(\(elementos\)\(:\)\)\)

v + w
u - {3, 4 b, x, 1}

\(Cualquier\ vector\ puede\ ser\ multiplicado\ por\ un\ escalar\ usando\ el\ comando\ "*"\ o\ dejando\ un\ espacio\ entre\ el\ escalar\ y\ el\ \(\(vector\)\(:\)\)\)

3*u
3 u
a*w

\(Además, \ \(\(se\ puede\ calcular\ el\ producto\ escalar\ de\ dos\ vectores\ con\ igual\ cantidad\ de\ elementos\ usando\ el\ comando\ "."\)\(:\)\)\)

{1, 3, 3} . {2, 0, 1}
v . w

Si existe una relación entre las coordenadas de un vector y su valor, se puede utilizar la orden \, que genera un vector, \(donde\ evalúa\ la\ "expresión"\ para\ cada\ valor\ de\ "i"\), \(variando\ "i"\ desde\ "i min"\ hasta\ "i max"\ con\ un\ incremento\ "increm i" . \ 
            En\ este\ comando\ se\ puede\ eliminar\ el\ valor\ \ de\ "increm i"\ entendiéndose\ que\ su\ valor\ es\ "1"\), \(e\ incluso\ el\ valor\ de\ "i min"\ entendiéndose\ de\ nuevo\ que\ vale\ \(\("1"\)\(.\)\(\ \)\)\)

u1 = Table[(-1)^i, {i, 3, 7, 2}]
u2 = Table[(-1)^i, {i, 3, 7}]
u3 = Table[(-1)^i, {i, 7}]
u4 = Table[((-1)^i + 1)/2, {i, 2, 6}]

Ejercicios,
\(1.  - \ 
            Calcúlese\ cuando\ sea\ posible\ las\ siguientes\ \(operaciones : 
u + w\ \ \ \ \ \ \ \ \ \ \ \ u - 
                  v\ \ \ \ \ \ \ \ \ \ \ \ x + 
                  z\ \ \ \ \ \ \ \ \ \ \ \ 3\ u - 
                  4\ x\ \ \ \ \ \ \ \ \ \ \ \ \ el\ producto\ escalar\ de\ "u por z"\ y\ el\ de\ \ "v por w"\ \ \ \ \ \ \ \ \ \ \ \ \ \ siendo\)\)        
u = {-5, 3, 
              2}       v = {3, -1, 4, 
                5}      w = {0, -2, -3}      x = {-1, 0, 0}      z =  {1, 
                  2, -3}, 
2.  -  
        Calcúlese el coseno del ángulo que forman los vectores {3, 2, 1} y {-5, 2, 
            0}, 
3.  -  Úsese el comando Table para crear el vector cero de (R^6) y el vector  de (R^10) donde sus coordenadas son los cuadrados de los diez primeros números naturales.

2.  -  Matrices.

2.1 . - 
            Construcción y operaciones elementales.

Una matriz viene dada por un conjunto de varios vectores separados por comas (donde cada vector que se introduce es una fila de la matriz) .  Por ejemplo la matriz
m=(({{1, 3, 5}, {-1, 0, 4}}))     se puede introducir escribiendo

m = {{1, 3, 5}, {-1, 0, 4}}

\(También\ se\ puede\ introducir\ utilizando\ la\ paleta "BasicInput"\ que\ puede\ obtenerse\ pulsando\ con\ el\ ratón\ "File"\  -> \ \("Palettes"\  -> \ "3.BasicInput"\  . \ \ Posteriormente\ se\ pulsa\ con\ el\ ratón\ el\ símbolo\ de\ matriz\ que\ nos\ dará\ una\ matriz\ de\ orden\ \ 2\ por\ 2. \ Para\ conseguir\ una\ de\ otro\ orden\ se\ siguen\ las\ siguientes\ reglas\)\)
\(\((1)\)\ \ Para\ añadir\ una\ columna\ se\ pulsa\ la\ tecla\ "Ctrl"\ y\ sin\ soltarla\ se\ pulsa\ la\ coma\ ","\)
\(\((2)\)\ \ Para\ añadir\ una\ fila\ se\ pulsa\ la\ tecla\ "Ctrl"\ y\ sin\ soltarla\ se\ pulsa\ "enter"\)
(3)  Se elimina una columna  pulsando la tecla "\
supr"
(4)  Se elimina una fila pulsando "mayúsculas" y sin soltarla pulsando "supr".
Para saltar de una posición a otra de la matriz o bien se señala con el ratón y se pulsa con el botón izquierdo,o se pulsa la tecla  "Tab"

De cualquiera de las dos formas en la que introduzcamos la matriz, el resultado que nos devolverá el programa será entre llaves como en el caso anterior .  Si queremos ver la expresión en forma matricial natural debemos utilizar la orden MatrixForm["matriz"] o bien "matriz"//MatrixForm.

MatrixForm[m]
{{-4, 2}, {3, 0}, {2, 1}} // MatrixForm

Otros mecanismos posibles para la construcción de matrices son
(1) "Table[expresión,{i,i min,i max increm i},{j,j min, j max,increm j}]"que es utilizado como en la construcción de vectores pero en este caso dando lugar a una matriz con  i  filas y  j  columnas
(2) DiagonalMatrix[{a1,  a2,  ... }] que da una matriz diagonal cuadrada con los elementos que aparecen entre corchetes como los elementos de la diagonal
(3) IdentityMatrix[n]  da como resultado la matriz identidad de orden n.

m1 = 
      Table[i + j - 1, {i, 3}, {j, 5}] // 
        MatrixForm
m2 = 
      MatrixForm[DiagonalMatrix[{3, -1, 4}]]
m3 = IdentityMatrix[4]

\(Dos\ matrices\ pueden\ ser\ sumadas\ con\ el\ comando\ "+"\ o\ restadas\ con\ el\ comando\ "-"\ siempre\ que\ tengan\ el\ mismo\ orden\ \((al\ igual\ que\ se\ hace\ para\ vectores)\) . \ 
          Y\ se\ puede\ multiplicar\ un\ escalar\ por\ una\ matriz\ utilizando\ el\ comando\ "*"\ o\ dejando\ un\ espacio\ entre\ el\ escalar\ y\ la\ \(\(matriz\)\(:\)\)\)

3 (({{4, -5, 1}, {0, 2, 1}}))-4* (({{2, -2, 1}, {5, 3, 0}}))

\(\(Para\ multiplicar\ dos\ matrices\ o\ una\ matriz\ por\ un\ vector\ \((siempre\ que\ los\ órdenes\ lo\ permitan)\)\ se\ utiliza\ el\ comando\ "."\)\(:\)\)

(({{1, -2, 5}, {-3, 0, 1}})).(({{2, 5}, {3, 0}, {1, 5}}))//MatrixForm
{2, 1, 0}.(({{2, 5}, {3, 0}, {1, 5}}))

\(Hay\ que\ tener\ en\ cuenta\ que\ el\ comando\ "*"\ no\ puede\ ser\ utilizado\ para\ multiplicar\ matrices\ \ \((ni\ vectores)\) 
        ya\ que\ el\ resultado\ que\ nos\ daría\ es\ la\ matriz\ \((o\ vector)\)\ con\ entrada\ \((i, 
          j)\)\ que\ resulta\ al\ multiplicar\ las\ coordenadas\ \((i, 
          j)\)\ de\ las\ dos\ matrices\ \(\((o\ vectores)\)\(.\)\)\)

Otros comandos que se utilizan de forma usual son
(1) "Det[ matriz ]" que da como resultado el determinante de la matriz cuadrada que evaluemos
(2) \ da  la traza de la matriz cuadrada que estamos evaluando 
(3) "Inverse[ matriz ]" que da como resultado la matriz inversa de la matriz cuadrada que evaluemos
(4) "Transpose[ matriz]" que da la matriz traspuesta de la original
(5) "MatrixPower[ matriz , n ]" que da la potencia n-ésima de la matriz cuadrada que evaluamos

m=(({{1, 3}, {2, 5}}))
Det[
      m]
Tr[
      m]
MatrixForm[
      Inverse[m]]
Transpose[m] // 
      MatrixForm
MatrixForm[
      MatrixPower[m, 7]]

Ejercicios,
1.  -  
          Calcúlese cuando sea posible las siguientes operaciones : 
m + n           m - 
                p             3  n - 
                4 m             m  por  p
\(\(introduciendo\ las\ matrices\ usando\ la\ paleta\ "BasicInput", \ donde\)\(\ \ \ \ \ \ \ \)\)
m=(({{3, 1, 2}, {4, 3, 1}})), n=(({{2, -1, 3}, {4, 0, 1}})), p=(({{2, 5}, {3, 1}, {1, 0}}))
2.  -  Calcúlese  el determinante,  
        su inversa cuando sea posible,  su traspuesta,  
        su traza y su quinta 
potencia para las siguientes matrices
m=(({{2, 1}, {1, 8}})), n=(({{2, 1, 1}, {1, 2, 1}, {1, 1, 2}})), p=(({{7, 1, 1}, {0, 2, 1}, {0, 0, 3}})), q=matriz  diagonal con elementos (1, -1, 2,  
              3)

2.2 . - 
            Elementos de una matriz y rango.

\(Dada\ una\ matriz\ "m"\ se\ puede\ extraer\ el\ elemento\ que\ se\ encuentra\ en\ la\ fila\ i\)-ésima y columna j-ésima utilizando el comando \. Para saber la fila i-ésima de dicha matriz se utiliza el comando \. Así, para calcular la columna j-ésima se puede usar \ (que es la fila j - ésima de la matriz traspuesta).

m=(({{1, 4, 7, -2}, {-1, 2, 3, -1}}));
m[[1, 
        3]]
m[[2]]
Transpose[m][[4]]

\(Obsérvese\ que\ se\ ha\ escrito\ el\ símbolo\ ";"\ después\ de\ la\ entrada\ \ de\ m\ para\ que\ su\ resultado\ no\ aparezca\)

Para saber las dimensiones de una matriz (o un vector) usaremos el comando "Dimensions[matriz]". Y para extraer sub-\(matrices\ de\ una\ matriz\ "m"\ dada\ se\ utilizan\ los\ siguientes\ comandos\)
(1) "m[[{ i1 , ... , ir} , { j1 , ... , js}]]" que da la submatriz de orden  r por s de m cuyos elementos proceden de las filas (i1 ,  ...  ,  ir) y de las columnas (j1 ,   ...  ,  js)
(2)"m[[Range[ i0, i1], Range[ j0 , j1 ] ]]" que da la submatriz de  m cuyos elementos proceden de las filas i0 a i1 y de las columnas j0 a j1.

p=(({{2, 1, 4, 0}, {-1, 1/2, (Sqrt[3]), 1}, {4, 1, 0, -1}}))
Dimensions[
      p]
p[[{1, 2}, {2, 4}]] // 
      MatrixForm
n = 
      p[[Range[1, 3], Range[2, 4]]] // 
        MatrixForm
Dimensions[
      p[[2]]]

Para calcular el rango de una matriz tenemos que determinar el orden máximo de las submatrices con determinante no nulo .  Para ello usamos el comando \ que nos da el determinante de todas las submatrices de orden n de la matriz elegida .  En el siguiente ejemplo se observa cómo el rango de la matriz es 2:

p=(({{-2, 1, 1, 2}, {1, -2, 1, -1}, {1, 1, -2, -1}}))
Minors[p, 
      2]
Minors[p, 3]

Ejercicios,
1.  -  
          Extraer el elemento que se encuentra en la posición (2, 3),  la primera fila y la segunda columna de las siguientes matrices:
m=(({{2, 1, 2, 3}, {1, 8, -2, 5}}))    n=(({{2, 1, 1}, {1, 2, 1}, {1, 1, 2}, {-2, -1, 0}}))    p=(({{7, 1, 1}, {0, 2, 1}, {0, 0, 3}}))
2.  - Calcular el rango de la siguiente matriz
m=(({{1, 2, 1, 0}, {3, 1, -2, 5}, {1, 0, -1, 2}}))
3.  -  
          En un espacio vectorial de dimensión tres con base B = {v1, v2, v3}  se consideran los vectores b1 = 2 v1 + v2,  
      b2 = v1 + v2 - v3  y  b3 = -v2 + 
            2 v3 .  
                Calcúlese la dimensión del espacio que generan los vectores {b1, b2, b3}.

3.  -  Sistemas de ecuaciones.

Para resolver un sistema de ecuaciones lineales del tipo siguiente:
a11  x1 + a12  x2 +  ...  + 
            a1n = b1
               ...  ...  ... 
       am1  x1 + am2  x2 +  ...  + amn =  bm,
se puede utilizar el comando "Solve[{ecuación 1, ... , ecuación m} , {incógnita 1, incógnita 2, ... ,incógnita n}]" cuando todos los coeficientes son números conocidos 
Debe saberse que
(1) El símbolo igual debe escribirse dos veces en cada ecuación
\(\((2)\)\ Si\ el\ sistema\ no\ tiene\ ninguna\ solución\ \((sistema\ incompatible)\)\ el\ programa\ nos\ devolverá\ la\ salida\ "{}"\)
(3) 
        Si el sistema tiene infinitas soluciones (sistema compatible indeterminado) 
        nos dará un mensaje de error y nos devolverá las soluciones despejando unas incógnitas en función de las otras

Solve[{x + y + z == 0, x - y + z == 2, x + 2  z == 4}, {x, 
        y, z}]
Solve[{2  x + y == 3, y + 2  z == 1, 
        x + y + z == 0}, {x, y, z}]
Solve[{2  x + y == 3, y + 2  z == 1, 
        x + y + z == 2}, {x, y, z}]
Solve[{x + y + z == 4, 2  x + 2  y - z == 2}, {x, y, 
        z}]

Otra manera de encontrar las soluciones de un sistema de ecuaciones lineales es usar el comando \. Para usar este comando debemos tener en cuenta las siguientes observaciones
(1) Si el sistema de ecuaciones no tiene solución el programa nos devolverá un mensaje de error y  nos dará de nuevo la orden que le hemos introducido
(2) Si el sistema tiene solución sólo nos devolverá como resultado una solución del sistema .  Para calcular el resto de soluciones usaremos el comando "NullSpace[matriz de coeficientes]". Esto nos devolverá una base de un subespacio propio asociado al conjunto de soluciones de la \(matriz : \ 
          las\ soluciones\ son\ la\ suma\ de\ la\ solución\ particular\ anterior\ con\ un\ vector\ cualquiera\ del\ subespacio . \ 
              Si\ la\ solución\ es\ única\ el\ comando\ NullSpace\ nos\ dará\ como\ solución\ \(\("{}"\)\(.\)\)\)

Por ejemplo los  sistemas del ejemplo anterior se calculan como sigue:

LinearSolve[(({{1, 1, 1}, {1, -1, 1}, {1, 0, 2}})),{0, 2, 4}]
NullSpace[(({{1, 1, 1}, {1, -1, 1}, {1, 0, 2}}))]
LinearSolve[(({{2, 1, 0}, {0, 1, 2}, {1, 1, 1}})),{3, 1, 0}]
LinearSolve[(({{2, 1, 0}, {0, 1, 2}, {1, 1, 1}})),{3, 1, 2}]
NullSpace[(({{2, 1, 0}, {0, 1, 2}, {1, 1, 1}}))]
LinearSolve[(({{1, 1, 1}, {2, 2, -1}})),{4, 2}]
NullSpace[(({{1, 1, 1}, {2, 2, -1}}))]

Es muy importante tener en cuenta que si en el sistema de ecuaciones hay un parámetro como coeficiente entonces se debe tener cuidado ya que el programa entiende que puede hacer las operaciones que le haga falta usando ese parámetro y podría cometer errores .  
          Obsérvese como los dos siguientes sistemas están mal resueltos (el primero para a = 0 y el segundo para a = 0 y a = 1).

Solve[{a x == a}, {x}]
LinearSolve[(({{(a^2), a}, {1, 1}})),{0, 1}]
NullSpace[(({{(a^2), a}, {1, 1}}))]

Ejercicios,
1.- Resuélvase los siguientes sistemas de ecuaciones utilizando ambos métodos:
(({{3  x - 2  y + z + w = 0}, {2  x - y + 4  z - w = 1}}))  (({{2  x - 2  y + 4  z = 5}, {x + 2  y + z = -1}, {-x + y - 2  z = 3}}))  (({{3  x - 2  y = 1}, {x + 2  y = 3}})),
2.- Resuélvase correctamente para cualquier valor del parámetro "\!\(\*
StyleBox[\"a\",\n\"ExerciseText\"]\)\!\(\*
StyleBox[\"\\\"\",\n\"ExerciseText\"]\) el siguiente sistema de ecuaciones:
(({{a x + y - z = 1}, {a^2  x - z = 2}, {a y + z = a}}))