http://ocw.usal.es/ensenanzas-tecnicas/algebra-lineal-y-geometria-ii/descargar-curso-completo/

Vectores. Matrices

Un vector es una lista  cuyos elementos no son listas.

{1,2,3}
VectorQ[{1,2,3}]

{x,2x^2,3x-7};VectorQ[{x,2x^2,3x-7}]

VectorQ[{{2,1},{3,4},{2,6}}]

Una matriz es una lista de vectores de la misma longitud, que representan las filas de la matriz. La longitud de cada vector es igual al número de columnas de la matriz. Las dimensiones de la matriz son el nº  de filas y el nº de columnas:
Dimensions[matriz]={nº  de filas, nº de columnas}

m={{2,1},{3,4},{2,6}}

MatrixQ[m]

m;
m//MatrixForm

Dimensions[m]

MatrixForm[{3,2,2}] Column[{3,2,2}]

Se pueden generar vectores y matrices simbólicos con la instrucción Array

Array[x,3]

Array[a,{2,2}]//MatrixForm

La función Range[ i_min, i_max]  genera un vector de números empezando por i_min, hasta llegar al valor i_max con el incremento o salto de 1 unidad. Si  i_min=1, se puede prescindir de este argumento en la función.
La función Range[ i_min, i_max, d]  genera un vector de números empezando por i_min, hasta llegar al valor i_max con el incremento o salto de  d unidades.

Range[-1,6]

Range[6]

Range[-2,5,3]

Se pueden construir vectores {x[i]}y matrices {a[i,j]} conociendo la expresión de sus términos generales con la instrucción Table,  que para una lista genérica es:
Table[término i,j,...-ésimo, {i,imin,imax,di}, {j, jmin, jmax,dj},...]

(*Construir un vector con los 6 primeros cuadrados perfectos*)
Table[i^2,{i,1,6}]

Los límites inferiores y los incrementos son opcionales, su valor por defecto es 1:

(*Construir un vector con los 10 primeros números primos*)
Table[Prime[n],{n,10}]

Si se elimina el índice, el término general se repite tantas veces como se indique:

(*Construir un vector de (R^5) cuyos elementos sean todos iguales*)
Table[λ,{5}]

(*Construir una matriz de orden 3 cuyos coeficientes sean todos iguales*)
Table[λ,{3},{3}]//MatrixForm

Existen comandos específicos para escribir la matriz identidad y una matriz diagonal, y también para calcular la transpuesta de una matriz.

IdentityMatrix[3]//MatrixForm

Id[n_]:=IdentityMatrix[n]

Id[4]//MatrixForm

DiagonalMatrix[{2,3,4}]//MatrixForm

m={{2,1},{3,4},{2,6}};
m//MatrixForm
Transpose[m]//MatrixForm

(***** OJOOOOOO Condicional IF*******)

(*Construir una matriz triangular inferior genérica de orden 4*)
Table[If[i>=j,a[i,j],0],{i,4},{j,4}]//MatrixForm

(*La última fila de una matriz genérica de dimensiones {3,4}*)
Last[Array[a,{3,4}]]

(*El número de columnas de una matriz dada m*)
Last[Dimensions[m]]

(*El coeficiente (3,2) de una matriz dada m*)
m={{2,1},{3,4},{2,6}};
m//MatrixForm
m[[3,2]]

(*Selecciona las dos primeras filas de la matriz dada m*)
Take[m,2]//MatrixForm

(*Suprime las dos últimas filas de la matriz dada m*)
Drop[m,-2]//MatrixForm

m={{2,1},{3,4},{2,6}};
m//MatrixForm
Append[m,{3,-6}]//MatrixForm

Ejercicio 1: Definamos una función tal que,  dada una matriz A de dimensiones m×n y un vector b con m componentes, nos permita calcular la matriz ampliada M[A,b].

M[A_,b_]:=Transpose[Append[Transpose[A],b]];

M[m,{1,3,5}]//MatrixForm

Clear[m]

Operaciones con matrices y vectores

Suma

A={{0,1,2},{-3,1,3}};B={{1,1,-3},{0,-1,2}};A+B

MatrixForm[A]+MatrixForm[B]==MatrixForm[A+B]

u={5,3,-2};v={2,0,1};u+v

Producto por escalares

λ A//MatrixForm

λ u

Clear[A,B]

Producto de matrices

A={{2,0},{1,1},{5,-2}};Dimensions[A]

B={{4,-1,2},{0,1,3}};Dimensions[B]

A.B

MatrixForm[A].MatrixForm[B]==MatrixForm[A.B]

Producto de una matriz por un vector

m={{a,b},{c,d}};v={x,y};
m.v

v.m

v.Transpose[m]

Producto escalar y producto vectorial

u={x,y,z};v={a,b,c};

(*Producto escalar estándar*)
 u.v

Dot[u,v]==u.v

(*Producto vectorial*)
Cross[u,v]

Cross[u,v]==u\[Cross]v

Clear[A,B,u,v]

Instrucciones específicas para las matrices

m[[i,j]] "Coeficiente (i,j)  de la matriz m"
m[[i]] "Fila i de la matriz m"
Extract[m, {elementos de m}] "Extrae coeficientes, filas de m"
m[[All, j]] "Columna j de la matriz m"
Take[m, {i0,i1}, {j0,j1}] "La submatriz de m formada con las filas i0 hasta i1 y las columnas j0 hasta j1"
Extract[m, {elementos de m}] "Extrae coeficientes, filas de m"
Det[m] "Determinante de la matriz m"
Inverse[m] "Inversa de la matriz m"
Minors[m, k] "Genera una lista con todos los menores de orden k de la matriz m"
NullSpace[m] "Genera una lista cuyos elementos forman una base del núcleo de m"
RowReduce[m] "Matriz obtenida por eliminación Gaussiana"
CharacteristicPolynomial[m, x] "Polinomio característico de la matriz m"
Eigenvalues[m] "Lista de autovalores de la matriz m"
Eigenvectors[m] "Lista de autovectores de m"
JordanDecomposition[m] "Matriz de Jordan de la matriz m"
MatrixPower[m, n] "Potencia n-ésima de la matriz m"
MatrixExp[m] "Matriz Exponencial de m"

m={{-2,0,1},{-1,3,0},{1,1,0}};
m//MatrixForm

{m[[1,1]],m[[1,2]],m[[2,2]],m[[3,1]]}

Extract[m,{{1,1},{1,2},{2,2},{3,1}}]

{m[[2]],Extract[m,{2}]}

Extract[m,{{3,3},{2}}]

m[[All,3]]

Det[m]

Inverse[m]//MatrixForm

m//MatrixForm

Minors[m,2]

Ejercicio 2: Definir una función que calcule la Traza de una matriz cuadrada.

Ejercicio 3: Efectúa las siguientes operaciones con matrices A.(B^(-1))+3A-I, siendo A={{1,2,3},{8,-1,2},{2,0,0}} y B= {{1,1,1},{2,1,0},{3,1,-2}}.

A={{1,2,3},{8,-1,2},{2,0,0}}; B={{1,1,1},{2,1,0},{3,1,-2}};
A.Inverse[B]+3A-IdentityMatrix[3]//MatrixForm

Ejercicio 4: Resuelve la ecuación matricial A.X-2A=I, siendo A={{1,2,3},{8,-1,2},{2,0,0}}.

Det[A]

SolucionX=Inverse[A].(IdentityMatrix[3]+2A);
SolucionX//MatrixForm

Clear[A,B]

Ejercicio 5: Calcula los valores propios y los vectores propios del endomorfismo de (R^(3 )) de matriz A={{1,0,2},{-1,1,3},{0,1,1}}.

A={{1,0,2},{-1,1,3},{0,1,1}};
Eigenvalues[A]

Eigenvectors[A]

Eigensystem[A]

Base y dimensión del núcleo de una aplicación lineal T de matriz asociada A
Ker[T]=NullSpace[A] , dimKer[T]=Length[NullSpace[A] ]

A={{-1,-2,-3,-4},{0,1,2,3},{1,3,5,7}};

NullSpace[A]

Rango de una matriz. Vectores linealmente independientes
El rango de una matriz es la diferencia entre el número de columnas de la matriz y la dimensión del núcleo de la aplicación lineal asociada.

rg[A_]:= Dimensions[A][[2]]-Length[NullSpace[A]]

Vindep[A_]:=If[rg[A]==Min[Dimensions[A]],Print["Los vectores son linealmente independientes"],Print["Los vectores son linealmente dependientes"]]

m={{-2,0,1},{-1,3,0},{1,1,0}};
m//MatrixForm

rg[m]

Vindep[m]

Vindep[{{1,1,0},{2,2,0}}]

rg[A]

Ejercicio 6: Averigua si los vectores {2,2,3,4},{1,1,2,2},{3,-1,2,0}son linealmente independientes.

RowReduce: Base de un subespacio

Si la matriz es no singular RowReduce[m] es la matriz identidad

m={{-2,0,1},{-1,3,0},{1,1,0}};
m//MatrixForm

RowReduce[m]//MatrixForm

Si la matriz es rectangular

A={{-1,-2,-3,-4},{0,1,2,3},{1,3,5,7}};MatrixForm[A]

RowReduce[A]//MatrixForm

rg[A]

La instrucción RowReduce permite seleccionar una base del subespacio generado por una colección V de vectores,  con la combinación de instrucciones RowReduce[Transpose[V]]

Subespacio de (R^3)generado por los vectores
 (Subscript[e, 1])={1,2,3} , (Subscript[e, 2])={-1,1,1} , (Subscript[e, 3])={0,3,4} , (Subscript[e, 4])={1,3,4}

V={{1,2,3},{-1,1,1},{0,3,4},{1,3,4}};

RowReduce[Transpose[V]]//MatrixForm

Una base es {(Subscript[e, 1]),  (Subscript[e, 2]),  (Subscript[e, 4])}

rg[V]

Subespacio de (R^4)generado por los vectores
 (Subscript[e, 1])={1,2,3,4} , (Subscript[e, 2])={-1,-2,-3,-4} , (Subscript[e, 3])={0,1,2,3} , (Subscript[e, 4])={1,3,5,7}

W={{1,2,3,4},{-1,-2,-3,-4},{0,1,2,3},{1,3,5,7}};

RowReduce[Transpose[W]]//MatrixForm

Una base es {(Subscript[e, 1]),  (Subscript[e, 3])}

Clear[m,A,S,W]

Matriz inversa. Cambios de base.

Ejercicio 7: Cambio de base en vectores "coordenadas nuevas=inversa de la matrioz del cambio de base por coordenadas antiguas"  n=(B^(-1)).a

Ejercicio 8: Cambio de base para endomorfismos "matriz nueva=(B^(-1)).matriz antigua.B"

EJERCICIOS

1. Comprueba que los vectores (Subscript[e, 1])={1,2,3,-1} , (Subscript[e, 2])={-1,1,1,0} , (Subscript[e, 3])={0,3,4,1} , (Subscript[e, 4])={1,3,4,2} forman una nueva base de (R^4) y calcula las coordenadas del vector e={2,0,-3,1} en esa nueva base.

2. Comprueba que la matriz B=(({{1, -1, 0, 2}, {3, 2, 1, 0}, {0, 1, 1, 2}, {1, 1, -2, 3}})) es la matriz de un cambio de base en (R^4) y calcula la matriz del endomorfismo T(x, y, z, t)=(2x-y-3t, x+z, y-z+t, x+3y-2t) en la base nueva que este cambio define. Calcula también las coordenadas del vector {1,1,1,1} en esa nueva base.

3. Sea T el endomorfismo de (R^3) de matriz asociada A=(({{1, 3, 4}, {3, 7, 2}, {2, 4, -2}})) . Calcular  bases y dimensiones  de los subespacios KerT e  ImT y averiguar si KerT e ImT son subespacios suplementarios.
ImT es el subespacio generado por las columnas de A.
ImT y KerT son suplementarios si con las bases de ambos se obtiene una base de (R^3).

4. Calcular los valores  y vectores propios de la matriz A=(({{2, -2, 6}, {0, 1, 3}, {0, 1, -1}}))  y averiguar si es diagonalizable.
Es diagonalizable si existe una base de vectores propios.

5. Calcular una base del subespacio generado por las matrices  A={{1,2},{3,4}}, B={{0,-1},{5,4}} ,  C={{1,3},{-2,0}} y D={{2,2},{3,3}}.

6. Calcular la forma de Jordan  J y la base de Jordan B de la matriz A= (({{2, 4, -6, 0}, {4, 6, -3, -4}, {0, 0, 4, 0}, {0, 4, -6, 2}})). Comprobar que se verifica J=(B^(-1)).A.B

7. Escribe un programa que pida una matriz y diga si es o no es invertible y en caso afirmativo calcule la inversa.
	Sugerencias: Instrucciones  Input, If, Print""

Clear[m]

m=Input["matriz"];
If[First[Dimensions[m]]=!=Last[Dimensions[m]],Print["la matriz no es cuadrada"],If[Det[m]==0,Print["La matriz no es invertible"],Print["La matriz tiene inversa y ésta es:"];MatrixForm[Inverse[m]]]]

8. Escribe una función que escriba y calcule la descomposición de una matriz cuadrada como suma de una matriz simétrica y otra hemisimétrica.

Clear[A]

descomp[A_]:=Print["La descomposición de A en suma de una matriz hemisimétrica y otra simétrica es: ",MatrixForm[A]==MatrixForm[1/2(A-Transpose[A])]+MatrixForm[1/2(A+Transpose[A])]];

Ejemplo

A=(({{2, -2, 6}, {0, 1, 3}, {0, 1, -1}}));

descomp[A]

9. Define una función que calcule las coordenadas de un vector dado respecto de una base nueva dada, es decir, una función que haga el cambio de base para vectores. Añadir dos ejemplos.""

10. Define una función que haga el cambio de base para endomorfismos. Añadir dos ejemplos.""

11. Define una función que dadas las ecuaciones de un endomorfismo calcule su matriz asociada.""