Application Center - Maplesoft

App Preview:

Estructuras

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

Estructuras.mws

MATEMATICAS

CON MAPLE

Para Estudiantes y Profesores

MAPLE V Versin...:. 5.1

Captulo II - Estructuras

Documento: Maple Manual Estructuras

Captulo: II - Estructuras

Elabor: Csar Ivn Tinoco.

Versin: 23 de Julio del 2.000

Estructuras Simples

Una estructura es una conjunto de datos que puede obedecer a una ley determinada, o estar agrupados bajo un criterio.

> restart;
numeros:=1,2,3,4,5,6;
nombre:=luis, marcos, maria, fernando;

numeros := 1, 2, 3, 4, 5, 6

nombre := luis, marcos, maria, fernando

Hemos asignado a la variable numeros la secuencia 1,2,3,4,5,6. y a la variable nombres , los datos de tipo caracter o string : luis, marcos, maria, fernando. Tambin podemos establecer una secuencia de datos mediante una expresin, usando la opcin seq , por ejemplo los primeros nmeros pares.

Orden ........: seq

Sintxis ......: seq (expresin , n = a . . b )

Propsito ...: Establece una secuencia de nmeros evaluando expresion , desde a hasta b

> pares:=seq(2*i,i=1..10);
impares:=seq(2*i+1,i=1..10);
inidec:=seq(c||i,i=1..10);

pares := 2, 4, 6, 8, 10, 12, 14, 16, 18, 20

impares := 3, 5, 7, 9, 11, 13, 15, 17, 19, 21

inidec := c1, c2, c3, c4, c5, c6, c7, c8, c9, c10

Podemos "unir" varias secuencias y hacer alusin a un elemento de una secuencia por medio de sub_indice o un intervalo de sub indices, observe:

> numeros:=(pares,impares);
numeros[5],pares[3],impares[3];
numeros[5..9];

numeros := 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 5...

10, 6, 7

10, 12, 14, 16, 18

Una secuencia no es una lista, ni un vector ni una tabla y tampoco un conjunto, es una relacin de datos que cumplen una regla.

El siguiente ejercicio, asigna una secuencia un conjunto de datos generando una tabla por medio de una funcin. Luego forma dos vectores tales que sus correspondientes elementos sean parejas ordenadas y finalmente presenta los grficos de dicha tabla. La orden plot la explicaremos ms adelante.

> restart:
seq(f(i),i={x,y,z,w,u,v});
f1:=3*x+2;
Datos:=seq([i,subs(x=i,f1)],i=1..8);
whattype(Datos);
plot([Datos],style=point,symbol=circle,title=`Representacin de Datos`,titlefont=[TIMES,BOLD,14]);

f(x), f(y), f(z), f(w), f(u), f(v)

f1 := 3*x+2

Datos := [1, 5], [2, 8], [3, 11], [4, 14], [5, 17],...

exprseq

[Maple Plot]

Una lista es un conjunto de datos la cual se puede contar, es una secuencia escrita entre parntesis, formando una reunin de elementos finitos y por tanto contables y seleccionables. Para el control cardinal de una lista se usan los siguientes comandos:

Orden ........: op, nops

Sintxis ......: nops ( expresin )

op(n, expresin);

Propsito ...: Cuenta el nmero de elementos de una lista.

Devuelve el elemento n de la expresin o un subconjunto de elementos

> Datos;
nops([Datos]);
op(2,[Datos]);
op(2..5,[Datos]);

[1, 5], [2, 8], [3, 11], [4, 14], [5, 17], [6, 20],...

8

[2, 8]

[2, 8], [3, 11], [4, 14], [5, 17]

Manejar listas, es muy util, el siguiente ejercicio, interpola dos listas, una representando la variable independiente y otro la variable dependiente. La orden interp , la explicaremos ms en detalle en los prximos captulos.

Orden ........: interp

Sintxis ......: interp ( x , y , variable )

Propsito ...: Encuentra la curva (funcin) que mejor se ajusta al conjunto de datos representados en las listas X y Y

> X:=[seq(i,i=1..10)];
Y:=[seq(3*i+2,i=1..10)];
interp(X,Y,x);

X := [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Y := [5, 8, 11, 14, 17, 20, 23, 26, 29, 32]

3*x+2


De la misma manera podemos establecer conjuntos como una coleccin arbitraria de datos, realizar las operaciones bsicas entre conjuntos. Cuando un conjunto tenga elementos duplicados, slo quedar uno de ellos. Un conjunto se asigna con corchetes, una lista con parenteis cuadrados y una secuencia sin ninguno de los dos.

> restar:
A:={1,2,3,4,5,6,7,8,9,0};
B:={1,2,3,8,9,3,17,18,19,10};
Union:=A union B;
Interseccion:=A intersect B;
Diferencia:=A minus B;
`El elemento..2 de A es..:` ,A[2];
`El elemento..3 de B es..:` ,B[3];
`Nmero de elementos de los conjuntos es..: `,nops(A),nops(B);;

A := {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

B := {1, 2, 3, 8, 9, 10, 17, 18, 19}

Union := {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 17, 18,...

Interseccion := {1, 2, 3, 8, 9}

Diferencia := {0, 4, 5, 6, 7}

`El elemento..2 de A es..:`, 1

`El elemento..3 de B es..:`, 3

`Nmero de elementos de los conjuntos es..: `, 10, ...

De un conjunto podemos seleccionar, aquellos elementos que cumplan con una regla determinada, usando la orden select .

Orden ........: select

Sintxis ......: select ( condicin , conjunto )

Propsito ...: Selecciona del conjunto , los elementos que cumplen la condicin .

> numeros:={seq(i,i=1..45)};
primos:=select(isprime,numeros);
nops(primos);

numeros := {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...
numeros := {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...

primos := {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, ...

14

Las listas y los conjuntos tambin pueden tener elementos no numricos. Cuando la orden op , no tiene un parmetro que determine el objeto a seleccionar, se obtienen todos los elementos.

> dias_habiles:=[lunes,martes,miercoles,jueves,viernes];
dias_festivos:=[sabado,domingo];
dias_habiles[4];
semana:=[op(dias_habiles),op(dias_festivos)];
primos:=[seq(ithprime(i),i=20..30)];

dias_habiles := [lunes, martes, miercoles, jueves, ...

dias_festivos := [sabado, domingo]

jueves

semana := [lunes, martes, miercoles, jueves, vierne...

primos := [71, 73, 79, 83, 89, 97, 101, 103, 107, 1...

Algo an ms interesante resulta al poder generar una lsita de listas y ordenar una lista semana , en el sigiente ejemplo, es una variable tipo lista, formada por listas. Observe cuidadosamente cono se form una secuencia dentro de otra secuencia.

Orden ........: sort

Sintxis ......: sort ( lista , parametro )

Propsito ...: Ordenar una lista de acuerdo al parametro lxico o nmerico.

> semana:=[dias_habiles,dias_festivos];
[seq(i^j,j=1..2)];
parejas:=[seq([seq(i^j,j=1..2)],i=1..4)];
semana:=[op(dias_habiles),op(dias_festivos)];
sort(semana,lexorder);
numeros:=[3,7,1,2,9,4,5,6,1,2,9];
sort(numeros,numeric);

semana := [[lunes, martes, miercoles, jueves, viern...

[i, i^2]

parejas := [[1, 1], [2, 4], [3, 9], [4, 16]]

semana := [lunes, martes, miercoles, jueves, vierne...

[domingo, jueves, lunes, martes, miercoles, sabado,...

numeros := [3, 7, 1, 2, 9, 4, 5, 6, 1, 2, 9]

[1, 1, 2, 2, 3, 4, 5, 6, 7, 9, 9]

Matrices

Conceptos Bsicos

Una Matriz es una estructura especial, es un conjunto ordenado de elementos en filas y columnas. Cada elemento de la matriz est determinado por la posicin que ocupa dentro de la misma. Es importante anotar que existe otra forma de manipular matrices, lo que se ver en la seccin de Algebra Lineal.

Orden ........: array

Sintxis ......: array ( 1 . . m , 1 . . n , [ elementos] )

Propsito ...: Definir una matriz de orden m*n.

> restart:
A:=array(1..4,1..2);

A := array(1 .. 4,1 .. 2,[])

La matriz A se ha definido de 4 filas por 2 columnas y an no tiene elementos. Para ingresar los elementos de la matriz procedemos de varias formas.

1- Definir la matriz y asignar los valores.

2- Definir la matriz sobre listas.

Debe ser claro que un vector es un caso particular de una matriz. Los siguientes ejemplos mostrarn varias matrices y vectores al igual que la forma de referenciar sus elementos.

> restart:
A:=array(1..2,1..2,[(1,1)=1,(1,2)=2,(2,1)=3,(2,2)=4]);
B:=array([[1,2],[3,4]]);
C:=array([[1,2,3],[4,5,6],[7,8,9]]);
F:=array([5,6,7,8,9,0]);
A[1,2],F[5];

A := matrix([[1, 2], [3, 4]])

B := matrix([[1, 2], [3, 4]])

C := matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

F := vector([5, 6, 7, 8, 9, 0])

2, 9

print , nos permite presentar en pantalla el contenido de una matriz asignada a una variable y array(funcin, rango) define una matriz de aucerdo al nombre de la funcin y en el rango establecido por el parmetro.

> A:=array(identity,1..3,1..3);
print(A);

A := array(identity,1 .. 3,1 .. 3,[])

matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]])

Los elementos de una matriz pueden seguir una determinada ley, por tanto podemos asignar sus elementos mediante una secuencia. Supongamos que una matriz esta definida de la siguiente forma:

a[ij] = i^2+j^2

Asignaremos la matriz por una secuencia de secuencias. Preste especial atencin a cada una de las siguientes ordenes, hemos tratado de mostrar paso a paso lo que sucede con la definicin y asignacin de la matriz A.

> restart:
lista1:=[seq((i^2+j^2),i=1..3)];
lista2:=[seq((i^2+j^2),j=1..4)];
lista3:=seq([seq(i^2+j^2,j=1..4)],i=1..3);
A:=array(1..3,1..4,[lista3]);

lista1 := [1+j^2, 4+j^2, 9+j^2]

lista2 := [i^2+1, i^2+4, i^2+9, i^2+16]

lista3 := [2, 5, 10, 17], [5, 8, 13, 20], [10, 13, ...

A := matrix([[2, 5, 10, 17], [5, 8, 13, 20], [10, 1...

En matemticas existen unas matrices particulares, las cuales estan previamente definidas en Maple. Los siguientes ejemplos muestran algunas de ellas.

Operaciones con Matrices.

Las operaciones tradicionales entre matrices, tambin estan definidas en Maple .

Orden ........: evalm

Sintxis ......: eval ( operacin )

Propsito ...: Realiza la operacin entre las matrices del argumento..

> restart;
A:=array([[1,2],[3,4]]);
B:=array([[5,2],[3,2]]);
`A + B `:=evalm(A+B);
`A - B `:=evalm(A-B);
`5A `:=evalm(-5*A);
`A * B `:=evalm(A&*B);
`Inv(A) `:=evalm(A^(-1));
`A^3 `:=evalm(B^3);

A := matrix([[1, 2], [3, 4]])

B := matrix([[5, 2], [3, 2]])

`A + B ` := matrix([[6, 4], [6, 6]])

`A - B ` := matrix([[-4, 0], [0, 2]])

`5A ` := matrix([[-5, -10], [-15, -20]])

`A * B ` := matrix([[11, 6], [27, 14]])

`Inv(A) ` := matrix([[-2, 1], [3/2, -1/2]])

`A^3 ` := matrix([[197, 90], [135, 62]])

Funciones sobre Matrices.

Se trata de hacer un seguimiento a una expresin y obtener una estructura de datos basada en la expresin. La orden map , realiza este seguimiento o "mapeo" de la expresin en una estrucura o una expresin.

Orden ........: map

Sintxis ......: map ( funcin, estructura )

Propsito ...: Aplica la funcin en los elementos de la estructura

> restart:
map(cos,[x,2,z,Pi]);
A:=array([[1,2],[exp(1),Pi]]);
evalf(map(sin,A),4);
map(exp,A);
f1:=x->x^2+3*x+5;
map(f1,[1,2,3,4]);

[cos(x), cos(2), cos(z), -1]

A := matrix([[1, 2], [exp(1), Pi]])

matrix([[.8415, .9093], [.4110, 0.]])

matrix([[exp(1), exp(2)], [exp(exp(1)), exp(Pi)]])

f1 := proc (x) options operator, arrow; x^2+3*x+5 e...

[9, 15, 23, 33]


Anlogamente, podemos seguir el comportamiento de una expresin en dos variables sobre dos estrucutras de datos, para esto usamos la orden
zip .

Orden ........: zip

Sintxis ......: zip ( funcin, estructura1, estructura2 )

Propsito ...: Aplica la funcin de variar variables a los elementos de las estructuras . del argumento.

> f1:=(x,y)->x/y;
A:=[2,3,4,5,6];
B:=[4,5,6,7,12];
zip(f1,A,B);
f2:=(x,y)->sin(x)/cos(y);
zip(f2,A,B);

f1 := proc (x, y) options operator, arrow; x/y end ...

A := [2, 3, 4, 5, 6]

B := [4, 5, 6, 7, 12]

[1/2, 3/5, 2/3, 5/7, 1/2]

f2 := proc (x, y) options operator, arrow; sin(x)/c...

[sin(2)/cos(4), sin(3)/cos(5), sin(4)/cos(6), sin(5...

Tablas

Una tabla es una lista de elementos asociados, es como una estructura en C. Una tabla maneja los datos sobre los indices de cada dato en la tabla. Ah radica su importancia, el elemento est enlazado en su posicin.

Orden ........: table

Sintxis ......: table ( conjunto de elementos asigandos)

Propsito ...: Secuencia ordenada de elementos.

> t1:=table([Primero=1,Segundo=2,Tercero=3]);
dias:=table([lunes=Monday,martes=Tuesday,miercoles=Wednesdays,jueves=Thursday,viernes=Friday,sabado=Saturday]);
t1[Primero];
dias[martes];

t1 := TABLE([Primero = 1, Segundo = 2, Tercero = 3]...

dias := TABLE([miercoles = Wednesdays, lunes = Mond...

1

Tuesday

Cuando a una tabla no se le asignan elementos especficamente, estos sern asignados en forma cardinal.

> table([1,2,3]);

TABLE([1 = 1, 2 = 2, 3 = 3])

Algebra Lineal

Para el manejo de elementos de Algebra Lineal en Maple , debemos cargar la librera linalg. Algunas de las aplicaciones y comandos adicionados usando esta librera presentan a continuacin.

> restart:
with(linalg);

Warning, the protected names norm and trace have been redefined and unprotected

[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...

Vectores y Matrices

Vectores.

Definicin .

Es probable que este familizarizado con los vectores, listas, arreglos o matrices, pero esta nueva definicin establece el vector como un elemento de caracter matemtico vectorial, es decir, un conjunto de nmeros que representan un elemento con magnitud, direccin y sentido o el vector posicin en trminos grficos y fsicos.

Lo anterior nos lleva a suponer que un vector definido [x,y,z] representa una terna de nmeros del vector posicin de cordenadas x, y, z.

Orden ........: vector

Sintxis ......:vector( [x1,x2,x3,....,xn] )

vector( n , f )

Propsito ...: Define un vector en trminos de sus componentes rectangulares.
Define un vector de dimensin
n en la funcion f .

> restart:with(linalg):
V:=vector([1,2,3]);
S:=vector(6,x->x^2);
P:=vector(4,[1,x,x^2,x^3]);

Warning, the protected names norm and trace have been redefined and unprotected

V := vector([1, 2, 3])

S := vector([1, 4, 9, 16, 25, 36])

P := vector([1, x, x^2, x^3])

Angulo entre Vectores.

El ngulo entre dos vectores, est definido:

cos(alpha) = u*v/(abs(u)*abs(v))

Se obtiene:

Orden ........: angle

Sintxis ......: angle ( vectores )

Propsito ...: Calcula el ngulo entre los vectores del argumento.

El resultado estar dado en radianes, para convertir este dato a grados usamos la orden convert o realizamos un procedimiento que represente un regla de tres.

> M:=vector([1,1,1]);
P:=vector([1,0,0]);
Angulo:=evalf(angle(M,P),4);
evalf(Angulo);
evalf(convert(%,degrees),4);

M := vector([1, 1, 1])

P := vector([1, 0, 0])

Angulo := .9554

.9554

54.75*degrees

Producto entre Vectores

El producto vectorial entre los vectores U y V de R^3 , es otro vector perpendicular simultaneamente a U y V. Est definido como:

U*x*V = matrix([[i, j, k], [u[1], u[2], u[3]], [v[1...

El determinante anterior es un vector!, y se obtiene:

Orden ........: crossproduct

Sintxis ......: crossproduct ( vectores )

Propsito ...: Calcula el vector resultante del producto Cruz o Vectorial entre los vectores del argumento.

> p:=vector([1,2,3]);
q:=vector([7,3,5]);
r:=crossprod(p,q);
a1:=angle(p,r);
convert(a1,degrees);
a2:=angle(q,r);
convert(a2,degrees);

p := vector([1, 2, 3])

q := vector([7, 3, 5])

r := vector([1, 16, -11])

a1 := 1/2*Pi

90*degrees

a2 := 1/2*Pi

90*degrees

Producto Punto.

El Producto punto de vectores es un nmero asociado a los vectores de la misma magnitud. El producto punto de los vectores V y U, est definido como:

V.U= sum(v[i]*u[i],i = 1 .. n)

Se obtiene en Maple con la siguiente orden.

Orden ........: dotprot

Sintxis ......: dotprot ( vectores )

Propsito ...: Calcula el producto punto en tre los vectores del argumento.

> V:=vector([2,3,4,5]);
U:=vector([1,3,5,-4]);
C:=dotprod(V,U);

V := vector([2, 3, 4, 5])

U := vector([1, 3, 5, -4])

C := 11

randvector (n), genera un vector aleatorio de dimensin n. vectdim , determina la dimensin del vector del argumento.

> randvector(3);
randvector(10);
vectdim(%),vectdim(U);;

vector([-85, -55, -37])

vector([-35, 97, 50, 79, 56, 49, 63, 57, -59, 45])

10, 4

norm , calcula la norma de un vector.

> norm( array([1,1]),2),norm( array([1,1,1]),2);
norm( array([2,2,2,2,2]),2);

sqrt(2), sqrt(3)

2*sqrt(5)

Matrices, Conceptos Bsicos

Definicin .

Una matriz es un conjunto de elementos numricos ordenados en filas y columnas. Para referirnos a una matriz, le asignamos un nombre y una definicin de sus elementos asi:

Sea una matriz A[mn] cuyos elementos estan definidos:

A = a[ij]

Nos estamos refiriendo a la matriz A con elementos a[ij] . Una matriz se puede definir en Maple , con la siguiente orden.

Orden ........: matrix

Sintxis ......: matrix ( m , n , [ a[11] , a[12] ,......, a[mn] ] )

matrix ( m , n, [fila 1],[fila 2],....[fila 3] )
matrix ( m , n, funcin)

Propsito ...: Define una matriz.de tamao m*n con elementos [ ... ]

Define una matriz.de tamao m*n especifivando las filas que la componen

Define una matriz.de tamao m*n especificando la regla de construccin de sus elementos

> restart:with(linalg):
A:=matrix(3,2,[1,2,3,4,5,6]),
whattype(A);
B:=matrix(3,2,[[1,2],[3,4],[5,6]]);
f1:=(i,j)->i^2+j^2;
C:=matrix(3,3,f1);

Warning, the protected names norm and trace have been redefined and unprotected

A := matrix([[1, 2], [3, 4], [5, 6]]), symbol

B := matrix([[1, 2], [3, 4], [5, 6]])

f1 := proc (i, j) options operator, arrow; i^2+j^2 ...

C := matrix([[2, 5, 10], [5, 8, 13], [10, 13, 18]])...

ranmatrix , genera una matriz aleatoria de orden m x n. type ( A, matrix), evalua si A es una matrix.

> S:=randmatrix(3, 3):
type(S,matrix);
print(S);

true

matrix([[-85, -55, -37], [-35, 97, 50], [79, 56, 49...

Operaciones y Manupulacin de Matrices

Suma, Resta y producto por escalar de Matrices

Sea A una matriz de m filas y n columnas y B otra matriz de la misma dimensin, entonces A+B ser otra matriz del mismo orden, es decir:

A[mxn] = a[ij] , B[mxn] = b[ij] , entonces A+B = C donde

C[mxn] = c[ij] , con.. c[ij] = a[ij]+b[ij]


Orden ........: matadd

Sintxis ......: matadd ( Matriz 1, Matriz 2 )

matrix ( Matriz 1, Matriz 2 , k, t )

Propsito ...: Calcula la suma entre las matrices del argumento.
Calcula la suma entre las matrices del argumento multiplicadas por los escalares k y t respectivamente. Queda definido el producto por escalar y la resta de matrices.

> restart:with(linalg):
A:=matrix(2,2,[[1,2],[3,4]]);
B:=matrix(2,2,[[5,6],[7,8]]);
C:=matadd(A,B);
E:=matadd(A,B,-1,1);

Warning, the protected names norm and trace have been redefined and unprotected

A := matrix([[1, 2], [3, 4]])

B := matrix([[5, 6], [7, 8]])

C := matrix([[6, 8], [10, 12]])

E := matrix([[4, 4], [4, 4]])

scalarmul , multiplica una matiz por un escalar.

> scalarmul(array([[1,2],[3,4]]),2);
scalarmul(A,4);
scalarmul(B,-3);

matrix([[2, 4], [6, 8]])

matrix([[4, 8], [12, 16]])

matrix([[-15, -18], [-21, -24]])

Producto Matricial

Sea A una matriz de m filas y n columnas y B otra matriz de n filas por k columnas, el producto A*B ser otra matriz de orden m*k, es decir:

A[mxn] = a[ij] , B[nxk] = b[ij] , entonces A*B = C donde

C[mxk] = c[ij] , con.. c[ij] = a[ik]*b[kj]

Orden ........: multiply

Sintxis ......: multiply ( Matriz 1, Matriz 2 )

multiply ( Matriz , Vector )

Propsito ...: Calcula el producto entre las matrices del argumento.
Calcula el producto de la matriz por un vector, mientras se cumplan las condiciones.

> A:=matrix(2,2,[[1,2],[3,4]]);
B:=matrix(2,2,[[5,6],[7,8]]);
C:=multiply(A,B);
v:=vector([1,2]);
P:=multiply(A,v);

A := matrix([[1, 2], [3, 4]])

B := matrix([[5, 6], [7, 8]])

C := matrix([[19, 22], [43, 50]])

v := vector([1, 2])

P := vector([5, 11])

Manipulacin de Matrices


Orden ........: addrow, addcol, mulcol, mulrow

Sintxis ......: addrow( Matriz, i,j, expresin)
addcol( Matriz, i,j, expresin)
mulcol( Matriz, j, expresin)
mulrow( Matriz, i, expresin)

Propsito ...: Adiciona la expresin a los elementos de la fila del elemento ij de la matriz. Multiplica la fila i o columna j por la expresin .

> restart:with(linalg):
A:=matrix(3,3,[[1,2,3],[3,4,5],[5,6,7]]);
B:=matrix(3,2,[[10,20],[30,40],[60,70]]);
addrow(A,2,2,5),addcol(A,1,3,5);
mulrow(A,3,y),mulcol(A,2,x);

Warning, the protected names norm and trace have been redefined and unprotected

A := matrix([[1, 2, 3], [3, 4, 5], [5, 6, 7]])

B := matrix([[10, 20], [30, 40], [60, 70]])

matrix([[1, 2, 3], [18, 24, 30], [5, 6, 7]]), matri...

matrix([[1, 2, 3], [3, 4, 5], [5*y, 6*y, 7*y]]), ma...

augment , adiciona las columnas de una matriz en la otra,lo mismo mientras que concat , lo hace con vectores formando una matriz. Los vectores o matrices deben tener el mismo nmero de filas.

> print(A,B);
augment(A,B);
v:=vector([3,4,5]);
u:=vector([6,7,8]);
augment(A,v),augment(v,A);

matrix([[1, 2, 3], [3, 4, 5], [5, 6, 7]]), matrix([...

matrix([[1, 2, 3, 10, 20], [3, 4, 5, 30, 40], [5, 6...

v := vector([3, 4, 5])

u := vector([6, 7, 8])

matrix([[1, 2, 3, 3], [3, 4, 5, 4], [5, 6, 7, 5]]),...

stackmatrix , adiciona las filas de una matriz debajo de la otra, las matrices deben tener el mimo nmero de columnas. submatrix , extrea una matriz de otra matriz, estableciendo el rango de la filas y columnas a extraer.

> stackmatrix(A,v),stackmatrix(v,A);
submatrix(A,2..3,2..3),submatrix(A,1..2,1..3);

matrix([[1, 2, 3], [3, 4, 5], [5, 6, 7], [3, 4, 5]]...

matrix([[4, 5], [6, 7]]), matrix([[1, 2, 3], [3, 4,...

swaprow , intercambia filas de la matriz. swapcol , intercambian columnas de la matriz.

> print(A);
swaprow(A, 1, 2),swapcol(A, 1, 2);

matrix([[1, 2, 3], [3, 4, 5], [5, 6, 7]])

matrix([[3, 4, 5], [1, 2, 3], [5, 6, 7]]), matrix([...

band , genera una matriz de orden n, con los elementos de otro vector, tales que el elemento de la mitad del vector ser la diagonal, y los otros estarn a lado y lado de esta. trace, calcula la traza de una matriz cuadrada.

> t1:=band([1],2);
trace(t1);
t2:=band([1,3,2],3);
trace(t2);

t1 := matrix([[1, 0], [0, 1]])

2

t2 := matrix([[3, 2, 0], [1, 3, 2], [0, 1, 3]])

9

charpoly , genera el polinomio caracterstico de la matriz del argumento en trminos de una variable.

> print(A);
charpoly(A,x);
F:=band([1,5,2],3);
charpoly(F,x);

matrix([[1, 2, 3], [3, 4, 5], [5, 6, 7]])

x^3-12*x^2-12*x

F := matrix([[5, 2, 0], [1, 5, 2], [0, 1, 5]])

x^3-15*x^2+71*x-105

companion , devuelve la matrix asociada a un polinomio, es decir, lo contrario.

> p:=charpoly(F,x);
companion(p,x);
charpoly(%,x);

p := x^3-15*x^2+71*x-105

matrix([[0, 0, 105], [1, 0, -71], [0, 1, 15]])

x^3-15*x^2+71*x-105

row, col , extraen filas y columnas de una matriz. delcol y delrow , quitan la columna o fila de una matriz.

> print(A);
row(A,2);
col(A,2..3);
row(A,2..3);
delrows(A,1..1),delcols(A,1..1);;

matrix([[1, 2, 3], [3, 4, 5], [5, 6, 7]])

vector([3, 4, 5])

vector([2, 4, 6]), vector([3, 5, 7])

vector([3, 4, 5]), vector([5, 6, 7])

matrix([[3, 4, 5], [5, 6, 7]]), matrix([[2, 3], [4,...

det , calcula el determinanate de una matriz cuadrada. equal , verifica si las matrices del argumento son iguales.

> A:=randmatrix(2,2);
Determinante:=det(A);
m1:=matrix(2,2,[[2,3],[4,5]]):
m2:=matrix(2,2,[[4,6],[8,10]]):
equal(m1,m2);

A := matrix([[-85, -55], [-37, -35]])

Determinante := 940

false

Dado un sistema de ecuaciones podemos generar la matriz ampliada de dicho sistema, genmatrix , nos permite esto. geneqns , hace lo contrario. Las ecuaciones pueden ser generadas en trminos de varias variables o en una sola sub indizada.

> ecuas:={x+2*y=0,3*x-5*y=0};
A:=genmatrix(ecuas,[x,y]);
geneqns(A,[x,y]);
geneqns(A,x);

ecuas := {x+2*y = 0, 3*x-5*y = 0}

A := matrix([[1, 2], [3, -5]])

{x+2*y = 0, 3*x-5*y = 0}

{x[1]+2*x[2] = 0, 3*x[1]-5*x[2] = 0}


traspose , calcula la transpuesta de una matriz y vandermonde , genera la matriz de Vandermonde, sobre un vector columna inicial.

> print(A,transpose(A));
vandermonde([1,2,5]),vandermonde([1,2,3,-1]);

matrix([[1, 2], [3, -5]]), matrix([[1, 3], [2, -5]]...

matrix([[1, 1, 1], [1, 2, 4], [1, 5, 25]]), matrix(...

Inversa de una Matriz

La siguiente orden calcula la inversa, mientras esta exista.

Orden ........: inverse

Sintxis ......: inverse ( matriz )
Propsito ...: Calcula la inversa de la matriz del argumento.

> restart:with(linalg):
A:=matrix(2,2,[[1,2],[3,4]]);
Inversa:=inverse(A);
`A * Inversa.: `,multiply(A,Inversa);

Warning, the protected names norm and trace have been redefined and unprotected

A := matrix([[1, 2], [3, 4]])

Inversa := matrix([[-2, 1], [3/2, -1/2]])

`A * Inversa.: `, matrix([[1, 0], [0, 1]])

> B:=matrix(2,2,[[a,b],[c,d]]):
B1:=inverse(B):
print(B,B1);

matrix([[a, b], [c, d]]), matrix([[d/(a*d-b*c), -b/...

Menor, Cofactores y Matriz de Cofactores


El menor ij denotado por
M[ij] . es el determinante de la sub matriz que resulta de suprimir la fila i y la columna j de una matriz. minor , devuelve la sub matriz, nosotros calculamos el determinante.

Orden ........: minor

Sintxis ......: minor ( Matriz, [ i , j ] )

Propsito ...: Calcula el menor [ i, j] de la Matriz del argumento.

> A:=matrix(3,3,[[1,3,4],[4,5,4],[1,7,4]]);
minor(A,1,1),` El menor 1,1 `,det(%);
minor(A,1,2),` El menor 1,2 `,det(%);

A := matrix([[1, 3, 4], [4, 5, 4], [1, 7, 4]])

matrix([[5, 4], [7, 4]]), ` El menor 1,1 `, 48

matrix([[4, 4], [1, 4]]), ` El menor 1,2 `, -8

El cofactor ij denotado c[ij] = (-1)^(i+j) M[ij] lo calculamos: :

> (-1)^(1+1)*det(minor(A,1,1));
(-1)^(1+2)*det(minor(A,1,2));

-8

-12

Con la orden seq , podemos calcular todos los menores de una matriz.

> seq(seq(minor(A,i,j),j=1..3),i=1..3);

matrix([[5, 4], [7, 4]]), matrix([[4, 4], [1, 4]]),...

Matriz Adjunta

La adjunta de una matriz cuadrada est definida sobre la transpuesta los cofactores.

Orden ........: adjoint

Sintxis ......: adjoint ( Matriz )

Propsito ...: Calcula la adjunta de la matriz del argumento.

> A:=matrix(3,3,[[1,3,4],[4,5,4],[1,7,4]]);
Aj:=adjoint(A):
TAj:=transpose(Aj):
print(Aj,TAj);

A := matrix([[1, 3, 4], [4, 5, 4], [1, 7, 4]])

matrix([[-8, 16, -8], [-12, 0, 12], [23, -4, -7]]),...

Lo que significa que los cofactores de una matriz, los podemos calcular con la adjunta. Verifique que los cofactores c[11] = -8 y c[12] =-12, son los calculados en el ejercicio anterior.

Eliminacin de Gauss, Gauss-Jordan

Dado un sistema de ecuacines lineales, es posible encontrar la solucin usando el Mtodo de Eliminacin de Gauss el cual consiste en:

1- Formar la matriz ampliada del sistema

2- Llevar la matriz a una ecalonada reducida

3- Solucionar dicha matriz

Este proceso lo realiza Maple con la orden:

Orden ........: gausselim

Sintxis ......: gausselim ( A , r, d)

Propsito ...: Encuentra la matriz triangular superior de A , asigna a r el valor del rango de la matriz A . Adems devuelve en d , el determinante de la matriz del argumento.

Supongamos el siguiente sistema de ecuaciones:

x[1]+3*x[2]+2*x[3] = -1

x[2]+4*x[3] = -7

2*x[1]+7*x[3]+6*x[3] = -5

x[2]+2*x[3] = -3

> A:=matrix(4,4,[[1,3,2,-1],[0,1,4,-7],[2,7,6,-5],[0,1,2,-3]]);
`Escalonada ..: `,gausselim(A);
Rango:=r;

A := matrix([[1, 3, 2, -1], [0, 1, 4, -7], [2, 7, 6...

`Escalonada ..: `, matrix([[1, 3, 2, -1], [0, 1, 4,...

Rango := r

El mtodo Gauss Jordan, lleva la matriz ampliada hasta la escalonada reducida y en Maple lo calculamos con la orden gaussjord .

> u:=gaussjord(A,'r');

u := matrix([[1, 0, 0, 0], [0, 1, 0, 1], [0, 0, 1, ...

Que representa la solucin del sistema, es decir:

x[1] = 0 , x[2] = 1 , x[3] = -2

Podemos usar las ordenes, geneqns , genmatrix , para genera la matriz amplida y el sistema de ecuaciones de la matriz ampliada reducida.

> ecuas:={x+3*y+2*z=-1, y+4*z=-7, 2*x+7*y+6*z=-5, y+2*z=-3};
b:=vector([-1,-7,-5,-3]):
c:=genmatrix(ecuas,[x,y,z]):
augment(c,b);
print(u);
geneqns(u,[x,y,z,b]);

ecuas := {y+4*z = -7, 2*x+7*y+6*z = -5, y+2*z = -3,...

matrix([[0, 1, 4, -1], [2, 7, 6, -7], [0, 1, 2, -5]...

matrix([[1, 0, 0, 0], [0, 1, 0, 1], [0, 0, 1, -2], ...

{0 = 0, x = 0, y+b = 0, z-2*b = 0}

Solucin de un Sistema de Ecuaciones Lineales

Consideremos el siguiente sistema de Ecuaciones Lineales.

a[11]*x[1]+a[12]*x[2]+a[13]*x[3] = b[1]

a[11]*x[1]+a[12]*x[2]+a[13]*x[3] = b[1]

a[11]*x[1]+a[12]*x[2]+a[13]*x[3] = b[1]

El sistema de ecuaciones se puede expresar de la forma Ax=b , donde A es la matriz de coeficientes, x el vector de las incognitas y b el vector de los trminos independientes. El sistema se resulve obteniendo los valores para x , que satisfagan las ecuaciones. Este vector se obtiene en Maple con la orden:

Orden ........: leastsqrs.

Sintxis ......: leastsqrs ( A , b)

Propsito ...: Calcula el vector resultante o solucin de un sistema de ecuaciones lineales de la forma Ax=b.

> restart:with(linalg):
ecuas:={x-3*y+z+2*w=6, 3*x-8*y+4*z+4*w=15, -2*x+8*y+3*z-11*w=-21, x+2*y-3*z+3*w=8, 3*x-y+5*z-2*w=8};
A:=genmatrix(ecuas,[x,y,z,w]);
b:=([6,15,-21,8,8]);
sol:=leastsqrs(A,b);

Warning, the protected names norm and trace have been redefined and unprotected

ecuas := {x-3*y+z+2*w = 6, 3*x-8*y+4*z+4*w = 15, -2...

A := matrix([[1, -3, 1, 2], [3, -8, 4, 4], [-2, 8, ...

b := [6, 15, -21, 8, 8]

sol := vector([1, 2, 3, 4])

Podemos verificar la respuesta en cada una de las ecuaciones originales. Observe que la variable sol , es una lista o un vector, debemos convertir dicho vector en un conjunto que represente los valores de x,y,z y w, para esto usamos la orden equate , de la librera students que genera ecuaciones conlos elementos correspondientes de las listas.

> with(student):
sol1:=equate([x,y,z,w],sol);
subs(sol1,ecuas);

sol1 := {x = 1, y = 2, z = 3, w = 4}

{6 = 6, 15 = 15, -21 = -21, 8 = 8}

Un sistema de ecuaciones puede tener muchas soluciones, por ejemplo:

> A:=matrix(3,3,[[2,-1,1],[1,-2,-1],[4,-5,-1]]);
b:=vector([3,3,9]);
Escalonada:=gausselim(A,'r');
Escalonada_Reducida:=gaussjord(A,'r');
Solucion:=leastsqrs(A,b);

A := matrix([[2, -1, 1], [1, -2, -1], [4, -5, -1]])...

b := vector([3, 3, 9])

Escalonada := matrix([[2, -1, 1], [0, -3, -3], [0, ...

Escalonada_Reducida := matrix([[1, 0, 1], [0, 1, 1]...

Solucion := vector([_t[1], _t[1]-2, -_t[1]+1])

> Escalonada := matrix([[2, -1, 1], [0, -3, -3], [0, 0, 0]]);

Escalonada := matrix([[2, -1, 1], [0, -3, -3], [0, ...

Significa esto, que el vector solucin del sistema, est representado por las ecuaciones paramtricas siguientes:

2+t = x

t = y

-1-t = z

Lo cual podemos verificar para un valor aleatorio del parmetro t. Con la orden rand(a..b) generamos un nmero aleatorio.

> ecuaciones:={4*x-5*y-z=3, 2*x-y+z=3, x-2*y-z=9};
solucion:=leastsqrs(A,b);
t1:=rand(1..10):t:=t1():
`Para t..: `,t;
sol:={x=2+t,y=t,z=-1-t};
linea1:=op(1,ecuaciones);
linea2:=op(2,ecuaciones);
linea3:=op(3,ecuaciones);
eval(linea1,sol),eval(linea2,sol),eval(linea3,sol);

ecuaciones := {x-2*y-z = 9, 2*x-y+z = 3, 4*x-5*y-z ...

solucion := vector([_t[1], _t[1]-2, -_t[1]+1])

`Para t..: `, 2

sol := {y = 2, z = -3, x = 4}

linea1 := x-2*y-z = 9

linea2 := 2*x-y+z = 3

linea3 := 4*x-5*y-z = 3

3 = 9, 3 = 3, 9 = 3

Veamos un sistema de ecuaciones, la solucin, la verificacin y su representacin grfica:

Sea el sistema formado por las ecuaciones:

x+y = 2

2*x-y = 1

x+2*y = 3

> ecuas:={x+y=2,2*x-y=1,x+2*y=3};
A:=genmatrix(ecuas,[x,y]);
b:=vector([2,1,3]);
G:=augment(A,b);
Escalonada:=gausselim(G,'r');
Escalonada_Reducida:=gaussjord(G,'r');
Solucion:=leastsqrs(A,b);

ecuas := {2*x-y = 1, x+2*y = 3, x+y = 2}

A := matrix([[2, -1], [1, 2], [1, 1]])

b := vector([2, 1, 3])

G := matrix([[2, -1, 2], [1, 2, 1], [1, 1, 3]])

Escalonada := matrix([[2, -1, 2], [0, 5/2, 0], [0, ...

Escalonada_Reducida := matrix([[1, 0, 0], [0, 1, 0]...

Solucion := vector([9/7, 2/7])

Verificando tenemos:

> with(student):
solecuas:=equate([x,y],Solucion);
subs(solecuas,ecuas);

solecuas := {x = 9/7, y = 2/7}

{16/7 = 1, 13/7 = 3, 11/7 = 2}

Observe la grfica:

> convert(ecuas,list);
with(plots):
l1:=implicitplot(op(1,ecuas),x=-2..8,y=-2..6,color=blue):
l2:=implicitplot(op(2,ecuas),x=-2..8,y=-2..6,color=red):
l3:=implicitplot(op(3,ecuas),x=-2..8,y=-2..6,color=black):
p:=convert(eval(Solucion),list);
punto:=plot([p],x=-2..8,y=-2..6,style=point,symbol=circle,color=magenta):
te1:=textplot([1.7,1.2,`(1,1)`]):
te2:=textplot([4,5,`x+y=2`],color=blue):
te3:=textplot([4,4,`2*x-y=1`],color=black):
te4:=textplot([4,3,`x+2*y=3`],color=red):
display(l1,l2,l3,punto,te1,te2,te3,te4,title=`Sitema de Ecuaciones`);

[2*x-y = 1, x+2*y = 3, x+y = 2]

Warning, the name changecoords has been redefined

p := [9/7, 2/7]

[Maple Plot]

Interpolacin. Mtodo Matricial y de Sumatorias.

Una de las aplicaciones del Algebra Lineal consiste en interpolar un conjunto de datos (Puntos), para generar la "Curva que mejor se Ajusta" a dicho conjunto de datos.

La siguiente expresin, nos permite obtener el polinomio que representa dicha curva:

(A^T*A)^(-1)*A^T*Y = F(x)

Donde:

A = Matriz cuyos elementos son:

Columna 1..: Unos

Columna 2..: Valores de la Variable Independiente de los datos obtenidos

Columna i...: Valores de la Variable Independientele elevados a la (i-2), lo que prcticamnete es la matriz de Vandermonde.

Y = Vector con los valores de la Variable Dependiente de los datos obtenidos.

El siguiente ejercicio representa el polinomio de interpolacin sobre los datos de un experimento. Asignamos a X y a Y como vectores con los datos de las variables idependiente y dependiente respectivamente. Con estos valores formamos la tabla de datos en trminos de parejas ordenadas (x,y), que llamamos Puntos. Finalmente realizamos las operaciones pertinenetes.

> with(linalg):with(plots):
X:=vector([0,3,4,5,6]);
Y:=vector([0,5,7,11,13]);
Puntos := [seq([X[i],Y[i]],i=1..vectdim(X))];
A:=matrix(5,2,[[1,0],[1,3],[1,4],[1,5],[1,6]]);
AT:=transpose(A);
Polinomio:=multiply(multiply(inverse(multiply(AT,A)),AT),Y);

X := vector([0, 3, 4, 5, 6])

Y := vector([0, 5, 7, 11, 13])

Puntos := [[0, 0], [3, 5], [4, 7], [5, 11], [6, 13]...

A := matrix([[1, 0], [1, 3], [1, 4], [1, 5], [1, 6]...

AT := matrix([[1, 1, 1, 1, 1], [0, 3, 4, 5, 6]])

Polinomio := vector([-36/53, 116/53])

Que representa la solucin para la interpolacin lineal, donde polinomio es de la forma:

b*x^0+m*x

> b:=evalf(Polinomio[1]);
m:=evalf(Polinomio[2]);
f1:=m*x+b;
plot({Puntos,f1},x=-5..10,style=[line,point],title=`Curva de Aproximacin por Matrices`,labels=[`Eje X`,`Eje Y`],thickness=[0,3],symbol=circle);

b := -.6792452830

m := 2.188679245

f1 := 2.188679245*x-.6792452830

[Maple Plot]

Ahora, veremos una curva de aproximacin en un polinomio de grado mayor, usando la opcin de Maple que genera una matriz de Vandermonde.

> A:=vandermonde([0,3,4,5,6]);
AT:=transpose(A);
Polinomio:=multiply(multiply(inverse(multiply(AT,A)),AT),Y);

A := matrix([[1, 0, 0, 0, 0], [1, 3, 9, 27, 81], [1...

AT := matrix([[1, 1, 1, 1, 1], [0, 3, 4, 5, 6], [0,...

Polinomio := vector([0, 727/60, -943/120, 113/60, -...

As hemos obtenido el polinomio:

a*x^0+b*x+c*x^2+d*x^3+e*x^4

Veamos las implicaciones grficas:

> f2:=0+(727/60)*x^1+(-943/120)*x^2+(113/60)*x^3+(-17/120)*x^4;
plot({Puntos,f1,f2},x=0..7,y=0..15,style=[line,line,point],color=[blue,red,black],title=`Curva de Aproximacin y Puntos`,labels=[`Eje X`,`Eje Y`],thickness=[0,0,3],symbol=circle);

f2 := 727/60*x-943/120*x^2+113/60*x^3-17/120*x^4

[Maple Plot]

Como se puede observar, la curva se aproxima cada vez ms. La regresin lineal practicamente no toca ningn punto, mientras que la polinmica los toca a todos.

Finalmente usaremos la opcin, interp , de Maple. No graficaremos pues es exacta al resultado de la interpolacin anterior.

> interp(X,Y,x);

727/60*x-943/120*x^2+113/60*x^3-17/120*x^4

Para finalizar, usaremos el mtodo de Interpolacin por Derivadas Parciales. Recordemos que los valores de m y b, para la interpolacin lineal luego de haber derivado parcialmente, son:

Punto de corte (b)...:

b = (sum(Y[i],i = 1 .. n)+sum(X[i],i = 1 .. n)*(-m)...

Pendiente................ (n*sum(X[i]*Y[i],i = 1 .. n)+sum(X[i],i = 1 .. n)*s...

Tratemos de registrar estas sumatorias en Maple, teniendo como conjunto de datos a X y Y de los ejercicios anteriores.

> X:=vector([0,3,4,5,6]);
Y:=vector([0,5,7,11,13]);
Puntos := [seq([X[i],Y[i]],i=1..vectdim(X))];
n:=vectdim(X);
S_XY:=sum(X[i]*Y[i],i=1..n);
S_X:=sum(X[i],i=1..n);
S_Y:=sum(Y[i],i=1..n);
S_XX:=sum((X[i])^2,i=1..n);
m:=(n*S_XY-S_X*S_Y)/(n*S_XX-S_X^2);
b:=(S_Y-S_X*m)/n;
evalf(m),evalf(b);

X := vector([0, 3, 4, 5, 6])

Y := vector([0, 5, 7, 11, 13])

Puntos := [[0, 0], [3, 5], [4, 7], [5, 11], [6, 13]...

n := 5

S_XY := 176

S_X := 18

S_Y := 36

S_XX := 86

m := 116/53

b := -36/53

2.188679245, -.6792452830

Por lo tanto la lnea que ms se ajusta es:

y = -0.679 + 2.1886x

> f3:=evalf(m,2)*x+evalf(b,2);
plot({Puntos,f3},x=-5..10,style=[point,line],title=`Curva de Aproximacin por Series`,labels=[`Eje X`,`Eje Y`],thickness=[3,0],symbol=circle);

f3 := 2.2*x-.68

[Maple Plot]

Graficos Matriciales

matrixplot , nos permite hacer una representacin grfica de una matrix, veamos algunas.

> restart:with(plots):with(linalg):
A:= hilbert(8): B:=toeplitz([1,2,3,4,-4,-3,-2,-1]):
matrixplot(A);
matrixplot(A &* B);
matrixplot(A+B,heights=histogram,axes=boxed);
matrixplot(A+B,heights=histogram,axes=frame,gap=0.25,style=patch);
F := (x,y) -> sin(x*y):
matrixplot(A+B,heights=histogram,axes=frame,gap=0.25,style=patch,color=F);

Warning, the name changecoords has been redefined

Warning, the protected names norm and trace have been redefined and unprotected

[Maple Plot]

[Maple Plot]

[Maple Plot]

[Maple Plot]

[Maple Plot]

>

>