Departamento de Matemáticas
Curso 2004/05

Prácticas de Fundamentos Matemáticos para las Ciencias Ambientales.
    DIAGONALIZACIÓN DE MATRICES CUADRADAS

( 1 ) ¿ Es diagonalizable la matriz A ?

A=(({{-33, 66, -12, -82, -60}, {93, -213, 31, 270, 208}, {51, -106, 20, 132, 100}, {81, -186, 27, 235, 180}, {-3, 10, -1, -12, -9}}))

Solución:

A=(({{-33, 66, -12, -82, -60}, {93, -213, 31, 270, 208}, {51, -106, 20, 132, 100}, {81, -186, 27, 235, 180}, {-3, 10, -1, -12, -9}}));

Calculamos los valores propios de A

Eigenvalues[A]

Otra forma:

Reduce[
      Det[A - λ*IdentityMatrix[5]] == 0, λ]

Aparece el valor propio λ = 3 doble, por lo que no podemos afirmar nada aún sobre si A es diagonalizable. Vamos a calcular la dimensión del subespacio de vectores propios asociados a dicho valor propio.

ecuaciones = (A - 3*IdentityMatrix[5]) . {x, y, z, t, 
            w} == {0, 0, 0, 0, 0}

Reduce[ecuaciones, {x, y, z, t, w}]

Este sistema de ecuaciones lineales homogéneo que determina el subespacio y, que hemos resuelto, es compatible indeterminado y su solución general tiene dos parámetros. Por tanto, la dimensión de este subespacio vectorial es dos igual a la multiplicidad del valor propio. 
	Entonces la matriz A sí es diagonalizable.

( 2 ) De los siguientes vectores de (ℝ^4): v = ( 1,0,-1,0 ), u = ( 3,9,6,4 ), w = (-2,-1,0,1 ), h = (1,1,1,-1 ), j = ( 1,0,-1,1 ), k = ( 1,1,1,1 ).  Determinar los que son vectores propios de la matriz A.

A=(({{-3, 8, -6, -6}, {3, -2, 3, 0}, {10, -14, 13, 6}, {-3, 3, -3, 1}}))

Solución:

Para saber si un vector es vector propio de A, basta con aplicar la definición, es decir, comprobar cuáles de ellos satisfacen que al multiplicarlos por A el resultado es un múltiplo de dicho vector.

ecu = 
      A . {1, 0, -1, 0} == λ*{1, 0, -1, 0}

Reduce[ecu, λ]

v sí es un vector propio de A, que está asociado al valor propio λ = 3.

ecu = A . {3, 9, 6, 4} == λ*{3, 9, 6, 4}

Reduce[ecu, λ]

u  sí es un vector propio de A, 
    que está asociado al valor propio λ = 
      1.

ecu = 
      A . {1, 1, 1, -1} == λ*{1, 1, 1, -1}

Reduce[ecu, λ]

h no es un vector propio de A.

ecu = 
      A . {1, 0, -1, 1} == λ*{1, 0, -1, 1}

Reduce[ecu, λ]

j  no es un vector propio de A.

ecu = A . {1, 1, 1, 1} == λ*{1, 1, 1, 1}

Reduce[ecu, λ]

k no es un vector propio de A.

*** ¿ Cómo calcular vectores propios de esta matriz con el programa?

1ª forma: con una orden específica del Mathematica

Eigenvectors[A]

2ª forma: siguiendo el mismo proceso que realizamos manualmente

Reduce[
      Det[A - λ*IdentityMatrix[3]] == 0, λ]

Para

λ == 0.4;

ecuacion = (A - 0.4*IdentityMatrix[3]) . {x, y, z} == {0, 0, 
          0}

Reduce[ecuacion, {x, y, z}]

tomo   y  =  α,  
    entonces z  =  - α     y    x  =  0.  Un vector propio puede ser u  =  ( 0,  
              1,  -1 ).

Problema 7 )  de la Relación de Matrices.
	Tres embalses que llamaremos A, B y C están conectados mediante canalizaciónes. Mensualmente se realizan transvases entre ellos para ajustar los niveles del agua. El esquema mensual de transvase viene dado por la siguiente tabla que indica qué porcentaje del agua de cada pantano ( origen ) llega finalmente ( destino ) a los otros pantanos:

({{□, A, B, C}, {A, 70  %, 10  %, 10  %}, {B, 20  %, 50  %, 20  %}, {C, 20  %, 10  %, 60  %}})

Inicialmente tenemos en los pantanos las siguientes reservas:

({{Pantano A, Pantano B, Pantano C}, {19 (Hm^3), 1 (Hm^3), 30 (Hm^3)}})

( a ) Plantear un modelo  matricial que permita calcular las reservas de cada pantano para meses sucesivos.

Solución:

\(Notación : \ 
		a\_i\  = \ 
      nivel\ de\ agua\ que\ hay\ en\ el\ pantano\ A\ cuando\ pasan\ \ i - \ 
        meses\)
\(		b\_i\  = \ 
      nivel\ de\ agua\ que\ hay\ en\ el\ pantano\ B\ cuando\ pasan\ \ i - \ 
        meses\)
\(	\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c\_i\  = \ 
      nivel\ de\ agua\ que\ hay\ en\ el\ pantano\ C\ cuando\ pasan\ \ i - \ 
        meses\)

Entonces, cuando pasa 1 mes el nivel de agua que hay en cada embalse se pude expresar mediante el siguiente sistema de ecuaciones lineales:

\(\(\(		\)\(a\_1\  = \ 
      0.7\ a\_0\  + \ 0.2\ b\_0\  + \ 0.2\ c\_0

    		b\_1\  = \ 
      0.1\ a\_0\  + \ 0.5\ b\_0\  + \ 0.1\ c\_0

    		c\_1\  = \ 0.1\ a\_0\  + \ 0.2\ b\_0\  + \ 0.6\ c\_0\)\)\)

LLamamos A a la matriz de coeficientes de este sistema

A=(({{0.7, 0.2, 0.2}, {0.1, 0.5, 0.1}, {0.1, 0.2, 0.6}}));

\(X\_0\ es\ el\ vector\ que\ expresa\ la\ situación\ inicial\ en\ los\ embalses\)

(Subscript[X, 0]) = (({{(Subscript[a, 0])}, {(Subscript[b, 0])}, {(Subscript[c, 0])}}))

\(X\_1\ es\ el\ vector\ que\ expresa\ la\ situación\ \ en\ los\ embalses\ cuando\ pasa\ 1\ mes\)

(Subscript[X, 1]) = (({{(Subscript[a, 1])}, {(Subscript[b, 1])}, {(Subscript[c, 1])}}))

\(El\ sistema\ se\ puede\ escribir\ como\ una\ ecuación\ \(matricial : 
								A\ X\_0\)\  = \ 
      X\_1\)

\(\(\(	\)\(Si\ quisiéramos\ saber\ el\ nivel\ de\ los\ embalses\ cuando\ pasen\ 2\ meses\ desde\ el\ inicio

    										A\ X\_1\  = \ \(X\_2\  = \ 
        A\^2\ X\_0\)\)\)\)

y así sucesivamente,  
    cuando transcurran  k  -  
      meses desde el inicio tenemos el siguiente modelo matricial que nos permite saber la situación de los embalses
										(Subscript[X, k ]) =  A (Subscript[X, k - 1 ]) =  (A^k) (Subscript[X, 0])

( b ) Utilizar el modelo planteado para las reservas disponibles durante el primer y segundo mes.

Solución:

Cuando pase el (1^er) mes

\(\(\(	\)\(A\ X\_0\  = \ X\_1\)\)\)

(Subscript[X, 0]) = {19, 1, 30}

(Subscript[X, 1])  =  A . (Subscript[X, 0])

Respuesta: habrá 19.5 (Hm^3) en el embalse A, \(5.4\ Hm\^3\ en\ el\ embalse\ B\ y\ 20.1\ Hm\^3\ en\ el\ embalse\ \(\(C\)\(.\)\)\)

Cuando pasen 2 meses desde el inicio

A (Subscript[X, 1])  =  (Subscript[X, 2]) =  AA (Subscript[X, 0])

(Subscript[X, 2]) =  A . A .  (Subscript[X, 0])

Respuesta: habrá 18.75 (Hm^3) en el embalse A, \(6.66\ Hm\^3\ en\ el\ embalse\ B\ y\ 15.09\ Hm\^3\ en\ el\ embalse\ \(\(C\)\(.\)\)\)

( c ) Comprobar si la cantidad total de agua en los pantanos crece o decrece durante los primeros dos meses. ¿ Cuál es el porcentaje de crecimiento o decrecimiento en cada uno de esos meses?

Solución:

Total al inicio =  19  +  1  +  30  =  
        50 H (m^3)
\(Total\ cuando\ pasa\ 1\ meses = \ \(19.5\  + \ 5.4\  + \ 20.1\  = \ 
        45\ H\ m\^3\), \ 
Total\ cuando\ pasan\ 2\ meses = \ \(18.75\  + \ 6.66\  + \ 15.09\  = \ 40.5\ H\ m\^3\), \ por\ tanto, \ 
    va\ \ decreciendo\ el\ nivel\ de\ agua\ total\ de\ los\ \(\(embalses\)\(.\)\(\ \)\)\)

((50 - 45)/50) = (x/100)

entonces x  =  10

va decreciendo cada mes un 10% el nivel total del agua.

( d ) ¿ Cuál será el nivel de agua en cada embalse cuando transcurran 2 años?

2 años = 24 meses, entonces hay que calcular

\(\(\(		\)\(X\_24\  = \ \(A\^24\) X\_0\)\)\)

Si A es una matriz diagonalizable,  
      A  =  P D (P^(-1)) .  Entonces 

			(Subscript[X, 24])  = P (D^24) (P^(-1)) (Subscript[X, 0])

Para obtener D hay que calcular los valores propios de A

Eigenvalues[A]

o bien, resolviendo la ecuación característica

Reduce[
      Det[A - λ*IdentityMatrix[3]] == 0, λ]

Ahora calculamos los vectores propios de A para calcular P

Eigenvectors[A]

P = Transpose[Eigenvectors[A]]

MatrixForm[P]

Inverse[P]

d=(({{0.9, 0, 0}, {0, 0.5, 0}, {0, 0, 0.4}}))

Comprobación:

P . d . Inverse[P] == A

(Subscript[X, 24]) =P.(({{0.9^24, 0, 0}, {0, 0.5^24, 0}, {0, 0, 0.4^24}})).Inverse[P].(Subscript[X, 0])

Respuesta: \(Cuando\ pasen\ 2\ años\ habrá\ aproximadamente\ 2\ \(Hm\^3\) en\ el\ embalse\ A\), 0.8  (Hm^3) en el embalse B y, 1.2  (Hm^3) en el embalse C.

Clear["Global`*"]

Problema de contaminación.

Se pretende realizar el estudio de la contaminación de cierta región en la que se están produciendo vertidos industriales. Se han clasificado los terrenos en tres niveles de contaminación: terrenos limpios, terrenos con nivel de contaminación medio y terrenos con nivel de contaminación alto.
	Se comprueba que la evolución de la contaminación de un año para otro se ajusta a los siguientes datos:
		* cada año se contamina un 30% de los terrenos limpios de la siguiente manera: el 20% con un nivel de contaminación medio y el 10% con un nivel de contaminación alto.
		* cada año el 30% de los terrenos con nivel de contaminación media pasan a tener contaminación alta.
	Ante esta situación, las autoridades emprenden un plan de recuperación de las zonas contaminadas. El plan actúa directamente sobre los terrenos más contaminados consiguiendo, por un lado,  limpiar totalmente el 70% de los terrenos con contaminación alta, y por otro, reducir la contaminación de otro 10% de zona de alta contaminación que pasa a contaminación media.
	El territorio estudiado tiene una extensión de 1000 hectáreas que inicialmente estaban todas limpias. 
	Resolver las siguientes cuestiones:
	( a ) Estudiar la distribución de terrenos contaminados pasada una cantidad concreta de años. Por ejemplo, estudiar lo que sucede a los diez años.
	( b ) Estudiar la tendencia pasado un número suficientemente grande de años.

Estudiar la distribución de terrenos contaminados pasada una cantidad concreta de años. Por ejemplo, intentemos estudiar lo que sucede a los diez años.

Solución:

A = {{0.7, 0, 0.7}, {0.2, 0.7, 0.1}, {0.1, 0.3, 0.2}}

MatrixForm[A]

Estado inicial:

X0 = {1000, 0, 0}

Cuando pase 1 año:

X1 = {a1, b1, c1}

X1 = A . X0

X1

Cuando pase 1 año habrá 700 hectáreas de terrenos limpios, 200 hectáreas de terrenos de contaminación media y 100 hectáreas de terrenos  con contaminación alta.

Durante los primeros 10 años:   (Subscript[X, 10]) = (A^10)(Subscript[X, 0])

X10 = MatrixPower[A, 10] . X0

Habrá 446.973 hectáreas limpias, 361.599 hectáreas con contaminación media y 191.429 hectáreas con contaminación alta.

\(A\ continuación\ , 
    vamos\ a\ calcular\ \ \ \ X10\  = \ \(A\^10\) X0, \ 
    pero\ utilizando\ diagonalización\ de\ matrices\ en\ la\ obtención\ de\ \(\(A\^10\)\(.\)\)\)

Si A es una matriz diagonalizable podemos expresarla como A = P d  (P^(-1)) , donde d es una matriz diagonal (formada por los valores propios de A ) y P es una matriz inversible (formada por vectores propios de A linealmente independientes). Posteriormente, obtenemos (A^10) =  P (d^10)  (P^(-1))

Eigenvalues[A]

Eigenvectors[A]

P = Transpose[Eigenvectors[A]]

d = Inverse[P] . A . P

Comprobación:

A == P . d . Inverse[P]

Llamo K  =  (A^10)

K = P . MatrixPower[d, 10] . Inverse[P]

X10 = K . X0

(  ) ¿Qué ocurre si  cambia la distribución inicial X0 ?

Clear[X0]

X0

X0 = {700, 200, 100}

Cuando pasan 10 años

X10 = MatrixPower[A, 10] . X0

Habrá 446.881 hectáreas limpias, 361.656 hectáreas con contaminación media y 191.463 hectáreas con contaminación alta.

(  ) Otro vector inicial

Clear[X0]

X0 = {100, 300, 600}

X10 = MatrixPower[A, 10] . X0

Habrá 446.906 hectáreas limpias, 361.641 hectáreas con contaminación media y 191.453 hectáreas con contaminación alta.
	Expresado en  % tenemos: un 44.69% serán de terrenos limpios, 36.16% de terrenos con contaminación media, y 19,14 % con contaminación alta.

(  ) Otro vector inicial

Clear[X0]

X0 = {1000, 500, 5500}

MatrixPower[A, 10] . X0

Habrá 3129.41 hectáreas limpias, 2530.81 hectáreas con contaminación media y 1339.78 hectáreas con contaminación alta.
	Expresado en % tenemos: 3129.41/(1000+500+5500) = 44.7 % de terrenos limpios; 2530.81/(1000+500+5500)  = 36.15 % de terrenos con contaminación limpia y  1339.78/(1000+500+5500) = 19.139 % de terrenos contaminados.

1339.78/70

( 2 ) Estudiar la tendencia pasado un número suficientemente grande de años.

La matriz que nos indica cómo evolucionan los terrenos contaminados de un año para otro es  A

A=(({{0.7, 0, 0.7}, {0.2, 0.7, 0.1}, {0.1, 0.3, 0.2}}));

El estado inicial de la contaminación en los terrenos se expresa mediante el vector  v

X0 = {1000, 0, 0};

Para averiguar la tendencia pasado un número suficientemente grande de años lo que hay que estudiar es qué valor tiende a tomar el vector  (A^k) X0  cuando k se hace muy grande. Es decir,

(lim_(k  ->  ∞))  (A^k) X0

Para calcular  (A^k) X0 vamos a expresar el vector   X0  como combinación lineal de 3 vectores propios de A que son linealmente independientes ( forman una base de (ℝ^3) ).

Eigenvalues[A]

Eigenvectors[A]

v1 = {0.73741, 0.596951, 0.316033};

v2 = {0.807367, -0.509127, -0.29824};

v3 = {-0.778603, 0.176385, 0.602217};

X0 == a*v1 + b*v2 + c*v3

Dos vectores son iguales si son iguales todas sus componentes. Al imponer esto, se plantea un sistema de 3 ecuaciones lineales con 3 incógnitas, a,b, c. Se resuelve mediante la orden Solve

Solve[X0 == a*v1 + b*v2 + c*v3, {a, b, c}]

a = 605.916;

a*v1

(A^k) X0 ≈ (1^k) a  v1  = (1^k) 
          605.916  (0.73741, 0.596951, 0.316033)     =  
        (1^k) ( 446.809, 361.702, 191.489)

Cuando k -> ∞,  (A^k) X0  -> ( 446.809, 361.702, 191.489)

Respuesta:

Cuando k->+∞  nos queda el vector ( 446.809, 361.702, 191.489 ). Es decir, con el paso del tiempo, habrá 446.809 hectáreas de terrenos limpios, 361. 702 hectáreas de terrenos con contaminación media y 191.489 hectáreas de terrenos con contaminación alta.
	El % de terrenos al que se tiende de cada tipo, viene determinado por los % que hay en el vector correspondiente al valor propio dominante.

0.73741 + 0.596951 + 0.316033

0.73741/0.0165039

0.596951/0.0165039

0.316033/0.0165039

Clear["Global`*"]

( * ) Cambio en la distribución inicial: v = ( 700, 200, 100 ).

v = {700, 200, 100};

MatrixForm[A]

Solve[v == x1*v1 + x2*v2 + x3*v3, {x1, x2, x3}]

x1 = 605.916;

x2 = 319.852;

x3 = 6.48151;

x1*v1

v1

(A^k) X0 ≈ (1^k) x1  v1  = (1^k) 
          605.916  ( 0.73741`, 0.596951`, 0.316033` ) =  
        (1^k) ( 446.809, 361.702, 191.489)

Cuando k -> ∞,  (A^k) X0  -> ( 446.809, 361.702, 191.489)

Respuesta:

Cuando k->+∞  nos queda el vector ( 446.809, 361.702, 191.489 ). Es decir, con el paso del tiempo, habrá 446.809 hectáreas de terrenos limpios, 361. 702 hectáreas de terrenos con contaminación media y 191.489 hectáreas de terrenos con contaminación alta.
	El % de terrenos al que se tiende de cada tipo, viene determinado por los % que hay en el vector correspondiente al valor propio dominante.

( * ) Para una distribución inicial de terrenos v = ( 100,300, 600 ).

Respuesta:

Cuando k -> +∞ ,  (A^k) 
      v   tiende al vector { 446.809,  361.702,  
          191.489}.

(  ) Calcular una distribución inicial estable. Es decir, una disposición de terrenos limpios y contaminados que no cambie de un año al siguiente. Obtener los porcentajes correspondientes a esta distribución y comparar con los ejercicios anteriores.

Llamo Xn  a la situación de los terrenos en el año n . Este vector hay que determinarlo.

Xn = {l, cm, ca};

La situación de los terrenos cuando pase 1 año  es  Xn+1 = A Xn. Pero el problema impone que Xn+1 = Xn. Entonces planteamos  Xn+1 = A Xn.

Xn == A . Xn

Resolvemos el sistema de ecuaciones lineales  con incógnitas l , cm y ca, que se presenta

Reduce[{l == 0.7 ca + 0.7*l,  
        cm == 0.1*ca + 0.7*cm + 0.2*l, ca == 0.2*ca + 0.3*cm + 0.1*l, 
        l + ca + cm == 1000}, {l, cm, ca}]

Respuesta: 
	La distribución de terrenos se mantendrá constante cuando pase 1 año,  si inicialmente deben haber 446.809 hectáreas de terrenos limpios, 361.702 hectáreas de terrenos con contaminación media y 191.489 hectáreas de contaminación alta.

Obtener los porcentajes correspondientes a esta distribución

El 44.6809 % deben estar limpios,  36.1702 % de terrenos deben tener contaminación media y el 19.1489 % deben tener contaminación alta.

OBSERVACIÓN:
  	La distribución de terrenos más estable es justamente aquella a la que se tiende con el paso del tiempo.

Clear["Global`*"]

Problema 6) de la Relación de Matrices.
	Una empresa se dedica a la cría y explotación de gusanos de seda. Los gusanos de seda pueden encontrarse a lo largo de su vida en tres etapas diferentes: etapa de huevo, etapa de larva ( gusano) y etapa de adulto ( mariposa). Inicialmente la factoría dispone ( expresado en millones de unidades ) de las siguientes cantidades

({{Huevos, Larvas, Adultos}, {10, 8, 5}})

Los recuentos mensuales que se hacen de la población revelan que, cada mes:
    	* el 10% de los huevos se convierten en larva y el 80% mueren
	* el 10% de las larvas se convierten en adultos y el 70% mueren
	* el 90% de los adultos mueren 
	* cada adulto pone 100 huevos al mes

( a ) Plantear un modelo matricial que permita calcular el número de huevos, larvas y adultos que tendremos en meses sucesivos.

Solución:

Notación:

\(\(\(		\)\(h\_i\  = \ 
      huevos\ que\ hay\ en\ el\ mes\ i\  - \ ésimo

    		l\_i\  = \ 
      larvas\ que\ hay\ en\ el\ mes\ i\  - \ ésimo

    		a\_i = \ 
      adultos\ que\ hay\ en\ el\ mes\ i\  - \ ésimo

    G\_i\  = \ \((\ h\_i\ , \ l\_i\ , \ 
          a\_i\ )\)\ es\ el\ vector\ que\ indica\ el\ número\ huevos, \ larvas\ y\ adultos\ que\ hay\ en\ el\ mes\ i\  - \ \(\(ésimo\)\(.\)\)\)\)\)

\(\(\(		\)\(h\_1\  = \ 0.1\ h\_0\  + \ 100\ a\_0

    		l\_1\  = \ 0.1\ h\_0\  + \ 0.2\ l\_0

    		a\_\(\(1\)\(\ \)\)\  = \ 0.1\ l\_0\  + \ 0.1\ a\_0\)\)\)

La matriz de coeficientes del sistema es A

A=(({{0.1, 0, 100}, {0.1, 0.2, 0}, {0, 0.1, 0.1}}))

entonces el sistema de ecuaciones lineales se puede escribir matricialmente como

\(\(\(		\)\(G\_1\  = \ A\ G\_0

    		G\_2\  = \ \(A\ G\_1\  = \ A\ A\ G\_0\)

    \(\(\(\(\(\(\(\(...\) \(...\)\) ... \) ... \) ... \) ... \) ... \) ... \) ... 

    		G\_k\  = \ \(A\ G\_\(k\  - \ 1\)\  = \ A\^k\ G\_0\)\)\)\)

( b ) Utilizar el modelo planteado para determinar el número de individuos en cada etapa pasados uno y dos meses.

Solución:

Pasado 1 mes:

(Subscript[G, 0]) =  {10,  8,  5}

(Subscript[G, 1]) = A . (Subscript[G, 0])

Respuesta: ....................

Pasados 2 meses:

(Subscript[G, 2]) = A . A . (Subscript[G, 0])

es lo mismo que

(Subscript[G, 2]) = A . (Subscript[G, 1])