Cálculo Matricial y Sistemas de Ecuaciones con Maxima: Guía Práctica

Enviado por Chuletator online y clasificado en Matemáticas

Escrito el en español con un tamaño de 15,38 KB

Cálculo Matricial y Sistemas de Ecuaciones con Maxima

kill(all);


Introducir las matrices

C:matrix([2,2],[1,-1],[1,-3])

Calcular B+C, 16D, AB, AC, CA, A(B+C), DB, At, BtAt,(AB)t, D4, D-1.

B+C; 16*D; A.B; A.C; C.A; A.(B+C); D.B; transpose(A); transpose(B).transpose(A);

transpose(A.B);D^^4;invert(D);

Extraer la segunda columna de la matriz D

col(D,2);

Añadir las dos filas de la matriz A a la matriz D para obtener una nueva matriz 5x3.

addrow(D,A);

Calcular el determinante de la matriz D.

determinant(D);

Escalonar la matriz E

echelon(E);triangularize(E);rank(E);

Estudiar el rango de la matriz F dependiendo del valor del parámetro a:


F:matrix([a,1,1],[1,a,1],[1,1,2]); TF:triangularize(F); solve(TF[3,3]); rank(F),a:0;

Extraer la matriz de coeficientes.

eq:[x+y+z=3,4*x+y+6*z=8,3*x+5*z=5];var:[x,y,z];A:coefmatrix(eq,var);

Construir la matriz ampliada del sistema.

B:augcoefmatrix(eq,var);b:-col(B,4);Ab:addcol(A,b);

Resolver el sistema usando ecuaciones.

linsolve(eq,var);

Construir las ecuaciones del sistema.

A:matrix([0,1,5,-3],[1,-2,0,2],[2,3,-1,1],[-3,1,8,-2]); b:[-4,5,0,-6];var:[x,y,z,t];Eq:A.var-transpose(b);eq:list_matrix_entries(Eq);

Resolver el sistema.

linsolve(eq,var);

Discutir el siguiente sistema en función del parámetro m: mx+y=1 x+my=1 x+y=m Resolverlo en los casos en los que sea compatible.


eq:[m*x+y=1, x+m*y=1, x+y=m]; var:[x,y]; A:coefmatrix(eq,var);Ab:augcoefmatrix(eq,var);

Ab2:triangularize(Ab); solve(Ab2[3,3]); rank(A),m:-2;rank(Ab),m:-2; rank(A),m:1;rank(Ab),m:1;





-Introducimos vectores y términos independientes.

-Calculamos la sol. Del sistema: linsolve_by_lu(A,b); sol:invert(A).b;

-Calcular las matrices B y c del método de Jacobi: D:diag_matrix; U:matrix; L: matrix; M:D; N:L+U; B:invert(M).N; c:invert(M).b;

-Calcular una solución aproximada partiendo del vector x0:[1,1,1,1] de forma que el error de paso con la norma infinito sea menor que tol=0.1. ¿Cuántas iteraciones han sido necesarias realizar?:

tol:0.1; x0:[1,1,1,1];

x1:B.x0+c; epaso1:mat_norm(x1-x0,inf); is(epaso1

x2:B.x1+c; epaso2:mat_norm(x2-x1,inf); is(epaso2

x3:B.x2+c; epaso3:mat_norm(x3-x2,inf); is(epaso3

x4:B.x3+c; epaso4:mat_norm(x4-x3,inf); is(epaso4

-Calcular el error absoluto con la norma infinito: float(mat_norm(sol-x4,inf));

-Resolver el sistema por el método de Gauss-Seidel con un error menor que 0.1, partiendo del vector de temperaturas [20,10,15,10,15,25]:

D:4*ident(6);

U:matrix([0,1,0,0,0,0],[0,0,1,1,0,0],[0,0,0,0,1,0],[0,0,0,0,1,0],[0,0,0,0,0,1],[0,0,0,0,0,0]);

L:matrix([0,0,0,0,0,0],[1,0,0,0,0,0],[0,1,0,0,0,0],[0,1,0,0,0,0],[0,0,1,1,0,0],[0,0,0,0,1,0]);

M:D-L; N:U; B:invert(M).N; c:invert(M).b;

tol:0.1; x0:[20,10,15,10,15,25];

x1:B.x0+c; epaso1:float(mat_norm(x1-x0,inf)); is(epaso1

x2:B.x1+c; epaso1:float(mat_norm(x2-x1,inf)); is(epaso1

x3:B.x2+c; epaso1:float(mat_norm(x3-x2,inf)); is(epaso1

x4:B.x3+c; epaso1:float(mat_norm(x4-x3,inf)); is(epaso1

x5:B.x4+c; epaso1:float(mat_norm(x5-x4,inf)); is(epaso1

-Calcular la solución exacta y el error absoluto de la solución aproximada calculada anteriormente: sol:invert(A).b; float(mat_norm(sol-x6,inf));






Encuentra una base del subespacio S generado por ellos. ¿Cuál es la dimensión de S?

transpose(matrix(u1,u2,u3,u4));S:columnspace(A);baseS:args(S); dimS:length(baseS);

Encuentra unas ecuaciones implícitas de S.


B:addcol(A,ident(5)); C:triangularize(B); var:[a,b,c,d,x1,x2,x3,x4,x5];

ec1:C[la que se quede con ceros].transpose(var);

Encuentra una base del subespacio cuyas ecuaciones implícitas son: 2x+y+u+2v=0, 4x+2y-z+u+5v-3w=0, 2x+y+z+2u+v-w=0, z+u-v+7w=0. ¿Cuál es su dimensión?


eq:[2*x+y+u+2*v=0,....] B:coefmatrix(eq, [x,y,u,v]); T:nullspace(B); baseT:args(T); DimT:length(baseT);

Calcula las coordenadas del vector r=(-3,5,7,-9) en la base de R4 formada por los vectores..


r1:[2,-1,3,1];....B:[r1,r2,r3,r4]; r:[-3,5,7,-9];comb_lin:a*r1+b*r2+c*r3+d*r4-r; var:[a,b,c,d];

sol:linsolve(comb_lin,var);

Dados los vectores: w1=(1, 2, -4, -4, 5) w2=(2, 4, 0, 0, 2) w3=(2, 3, 2, 1, 5) w4=(1,1,-10,-11,16); Encontrar una base del subespacio H=<w1,w2,w3,w4>.


A:transpose(matrix(w1,w2,w3,w4));H:columnspace(A);baseH:args(H); dimH:length(baseH);

Completar la base de H encontrada hasta una base de R5.

A:matrix(w1,w2,w3);triangularize(A); w4:[0,0,0,1,0]; w5:[0,0,0,0,1]; rank(matrix(w1,w2,w3,w4,w5));

Comprobar si los vectores u=(-5,-11,6,5,-6),v=(2,-5,7,3,6)pertenecen a H.

rank(matrix(w1,w2,w3,u));

Estudiar para qué valores del parámetro a el vector w=(-5,-2a2,-8,-3a,-7)pertenece a H.

B:triangularize(matrix(w1,w2,w3,w)); solve(B[4,4]); solve(B[4,5]);

Dadas las bases de R6: B1={a1,a2,a3,a4,a5,a6}, B2={b1,b2,b3,b4,b5,b6}. Encontrar las coordenadas del vector c1=(3,-7,5,1,0,9) en la base B1.


c1:[3,-7,5,1,0,9]; comb_lin:a*a1+b*a2+c*a3+d*a4+e*a5+f*a6-c1; var:[a,b,c,d,e,f];

sol:linsolve(comb_lin,var);

Calcula las coordenadas en la base canónica del vector c2 cuyas coordenadas en la base B1 son (1,-1,2,-3,0,3).


c2_B1:[1,-1,2,-3,0,3];PB1C:transpose(matrix(a1,a2,a3,a4,a5,a6));PB1C.c2_B1;

Calcula las coordenadas en la base canónica del vector c3 cuyas coordenadas en la base B2 son (0,-2,3,4,-1,-1).


c3_B2:[0,-2,3,4,-1,-1]; PB2C:transpose(matrix(b1,b2,b3,b4,b5,b6)); PB2C.c3_B2;

Calcula la matriz de cambio de coordenadas de B1 a B2.

PB1B2:invert(PB2C).PB1C;

Calcula las coordenadas de c1 y c2 en la base B2 usando la matriz de cambio de coordenadas.

c1_B2:invert(PB2C).c1; c2_B2:PB1B2.c2_B1;

Se considera el espacio vectorial R5 y los subespacios S=<v1,v2,v3,v4> v1:[1 ,1, 3, 1, 6];... el subespacio T cuyas ecuaciones implícitas son: 2x-23y+16z-27u=0,...


eqT:[2*x-23*y+16*z-27*u=0,31*y-16*z+29*u-2*v=0];

Calcular una base y la dimensión de S y de T


A:transpose(matrix(v1,v2,v3,v4)); S:columnspace(A); baseS:args(S); dimS:length(baseS);

B:coefmatrix(eqT,[x,y,z,u,v]); T:nullspace(B); baseT:args(T); dimT:length(baseT);

Calcular una base y la dimensión de S+T


C:submatrix(A,4); D:addcol(C,baseT[1],baseT[2],baseT[3]); sumaST:columnspace(D); basesumaST:args(sumaST); dimsumaST:length(basesumaST);

Calcular una base y la dimensión de S intersección T


diminterST:dimS+dimT-dimsumaST;

vS:a*v1+b*v2+c*v3; vT:list_matrix_entries(d*baseT[1]+e*baseT[2]+f*baseT[3]); ec:vS-vT;

linsolve_params:false$ sol:linsolve(ec,[a,b,c,d,e,f]); interST:columnspace(transpose(matrix(v1,v2))); baseinterST:args(interST);






Cálculo del núcleo de una matriz A: nullspace(A)

Cálculo del espacio de columnas de una matriz A: columnspace(A)

Cálculo de la dimensión del núcleo de una matriz A: nullity(A)

Introducir la aplicación: f(x):=[-2*x[1]-2*x[2], 3*x[1]+3*x[2], x[1]]; (NO SE PONE X E Y, SINO X[1] Y X[2]).

Hallar mediante f la imagen del vector v=(3,4): f(v);

Construir la matriz coordenada A de f en las bases canónicas: e1:[1,0]$e2:[0,1]$ c1:f(e1); c2:f(e2); A:transpose(matrix(c1,c2));

Hallar la imagen del vector v=(3,4) usando la matriz A calculada en el apartado anterior: A.v;

Hallar una base y la dimensión del Ker f: Kf:nullspace(A);

Hallar una base y la dimensión de Im f: Imf:columnspace(A); BImf:args(Imf); dimImf:length(BImf);

Hallar la matriz coordenada B de f en las bases B1={(1,4),(1,3)} de R2 y B2={(2,0,1), (0,-1,0), (3,0,0)} de R3: P:transpose(matrix([1,4],[1,3])); Q:transpose(matrix([2,0,1], [0,-1,0], [3,0,0])); B:invert(Q).A.P;

Dado el vector u cuyas coordenadas en la base B1 son (1,-1,0,3,5), calcular las coordenadas en la base B2 de f(u): u:[1,-1,0,3,5]$ A.u;

Construir la matriz coordenada C de f en las bases canónicas: P:transpose(matrix(u1,u2,u3,u4,u5)); Q:transpose(matrix(v1,v2,v3,v4,v5,v6,v7)); C:Q.A.invert(P);

Hallar la expresión analítica de f, f(x,y,z,t,u): var:[x,y,z,t,u]$ fx:C.var;

Hallar una base y la dimensión del Ker f: Kf:nullspace(C); BKf:args(Kf); dimKf:length(BKf);

Hallar una base y la dimensión de Im f: Imf:columnspace(C); BImf:args(Imf); dimImf:length(BImf);


Calcular la preimagen del vector v: v:[278566,-286637,-183743, 310982,506620,395659,248493]; eq:fx-transpose(v); Eq:list_matrix_entries(eq); f1v:linsolve(Eq,var);

Dada la aplicación f:R3--->R3 dada por f(x,y,z)=(3x-5y+5z, -2x+az, 3x-3y+5z). Indicar si f es inyectiva, suprayectiva o biyectiva en función del parámetro a: A:transpose(matrix(f(e1),f(e2),f(e3))); Kf:nullspace(A); Kf1:nullspace(A),a:-20/6;










Cálculo de valores propios y multiplicidades de una matriz: eigenvalues(A);

Hallar el polinomio característico de una matriz A con respecto a la variable t: pol:charpoly(A,t); factor(pol); expand(pol);

Cálculo de valores propios, multiplicidades y bases de los subespacios fundamentales de una matriz (dimensión): E:eigenvectors(A); val:E[1][1];mult:E[1][2];vec:E[2]; E[2][1];E[2][2];E[2][3]; (Las bases de los subespacios fundamentales de una matriz y la dimensión se pueden calcular con los comandos "nullspace" y "nullity")

En caso de ser diagonalizable, cálculo de las matrices D y P tales que P-1AP=D. En caso de no ser diagonalizable (forma canónica de Jordan), cálculo de las matrices J y P tales que P-1AP=J: D:dispJordan(jordan(A));Q:ModeMatrix(A,jordan(A)); (Si la matriz es diagonalizable, la matriz de Jordan es diagonal). Cuando la matriz no es diagonalizable: load(diag)$ J:dispJordan(jordan(B)); P:ModeMatrix(B,jordan(B)); Comprobación: invert(P).B.P; is(equal(invert(P).B.P,J)); invert(Q).A.Q; is(equal(invert(Q).A.Q,D));

Hallar la forma canónica de Jordan JA de A y una matriz regular P tales que P-1AP=JA: load(diag)$ JA:dispJordan(jordan(A)); P:ModeMatrix(A,jordan(A));

Hallar los valores propios, con sus multiplicidades, de la matriz A: (Observando la diagonal de JA: valores propios 7, -4, -3 y 5 con multiplicidades respectivas 1, 2, 1 y 3.)

Hallar el polinomio característico de la matriz A: pol:charpoly(A,t)$ factor(pol);

Hallar bases de los subespacios fundamentales de A: (Las bases de los subespacios fundamentales se extraen de las columnas de P). Base de S(A,7): B7:col(P,1); Base de S(A,-4): B4:[col(P,2),col(P,3)];(igual con todas la multiplicidades)

Matrices con parámetros: Encontrar el valor o los valores de k para los que f es diagonalizable: pol:charpoly(A,t)$ factor(pol); (El polinomio característico de A no depende del parámetro k. A tiene los valores propios 3 y 2 con multiplicidades respectivas 1 y 3. A será diagonalizable si el subespacio fundamental del valor propio 2 tiene dimensión 3, igual a la multiplicidad. Esta dimensión es 4-rg(A-2*I4), de modo que A es diagonalizable se rg(A-2*I4) es 1) A2:A-2*ident(4); TA2:triangularize (A2); solve(TA2[3,4]); rank(A2),k:1; rank(A2),k:0; (A es diagonalizable solo si k=1).

Encontrar la matriz de Jordan de A dependiendo de los distintos valores de k: Caso k=1: load(diag)$ dispJordan(jordan(A)),k:1; Caso k=0: dispJordan(jordan(A)),k:0; Caso general: dispJordan(jordan(A));

Elegir un valor de k para el que A sea diagonalizable y encontrar una base de vectores propios de A: Solo es diagonalizable con k=1 P1:ModeMatrix(A,jordan(A)),k:1;(Las columnas de P forman una base de vectores propios de A)

Elegir un valor de k para cada matriz de Jordan distinta que puede tener A. En cada caso, encontrar una base de cada subespacio máximo de A:(Las bases de los subespacios máximos se extraen siempre de las columnas de la matriz de semejanza P) (La matriz de Jordan solo tiene un 1 encima de la diagonal para k=0) P0:ModeMatrix(A,jordan(A)),k:0; (La matriz de Jordan tiene dos unos sobre la diagonal para k distinto de 0,1. Por ejemplo, con k=2) P2:ModeMatrix(A,jordan(A)),k:2;







Para poder utilizar los nuevos comandos "innerproduct", "unitvector", "orthogonal_complement", "gramschmidt" debe cargarse antes el paquete "eigen". load(eigen);

Producto escalar usual en Rn innerproduct(v,w);

Normalizar un vector de Rn con el producto escalar usual


unitvector(v);

Hallar el subespacio ortogonal al subespacio S de Rn con el producto escalar usual

orthogonal_complement(transpose(v),transpose(w));

orthogonal_complement(v,w);

Aplicar el método de Gram-Schmidt a una familia de vectores de Rn con el producto escalar usual


gramschmidt([[-1,0,-3,-5,1],[2,1,3,0,-1],[-2,1,-1,0,-3],[-8,4,-3,2,1],[-8,4,-3,2,1]]);

A:matrix([-1,0,-3,-5,1....,2,1]); gramschmidt(A);

Dado el espacio euclídeo R3, se consideran los vectores: v1 = (1, a, 1) y v2 = (a2, 2, 1) dependientes del parámetro "a". Determinar para qué valores del parámetro "a" son ortogonales los vectores v1 y v2.


p:innerproduct(v1,v2);solve(p);

Dado el subespacio de R5 S={(x,y,z,a,b)| x+y+z+a+b=0,x-y+3*z+2*a=0}, Hallar una base ortogonal de S.


eq:[x+y+z+a+b=0,x-y+3*z+2*a=0]; var:[x,y,z,a,b]; A:coefmatrix(eq,var); S:nullspace(A); BS:args(S); Construimos una matriz con la base de S por filas MS1:addcol(BS[1],BS[2],BS[3])$ MS:transpose(MS1); BOGS:gramschmidt(MS)

Hallar una base ortonormal de S.


BONS:[unitvector(BOGS[1]),unitvector(BOGS[2]),unitvector(BOGS[3])];

Entradas relacionadas: