Академический Документы
Профессиональный Документы
Культура Документы
Thomas A. Edison
TCNICAS DE ANLISIS:
Sumario
2.1. Definicin de matrices desde el teclado
2.2. Operaciones con matrices 2.3. Matrices predefinidas 2.4. Direccionamiento de matrices y vectores. El operador (:) y la funcin (cat)
Definicin de un vector
Vector fila: elementos separados con comas (,) o con espacios:
El operador (:)
El operador (:) es utilizado para especificar rangos, su forma de empleo es muy simple y sus beneficios inmensos.
Forma de empleo: <vector>=[val_ini : paso : val_fin];
Ejemplo:
Definicin de matrices
Las matrices se definen por filas, los elementos de la fila se separan por espacios o comas (,) mientras que las filas van separadas por punto y coma (;)
Ejemplos: A=[1,2,3; 4,5,6; 7,8,9] Se ve en pantalla:
A=[1 2 3; 4 5 6; 7 8 9]
Definicin de matrices
Observacin 1 Una vez definida la matriz esta pasa a su espacio de trabajo (Workspace) y estar disponible para realizar cualquier operacin.
Ejemplo:
Definicin de matrices
Observacin 2 MatLab introduce por defecto una variable llamada (ans) de answer sobre la cual tambin se puede operar.
Ejemplo:
Definicin de matrices
Observacin 3 En MatLab se permite la creacin de matrices vacas.
Ejemplo:
Operaciones
Operaciones con escalares:
v+k adicin o suma v-k sustraccin o resta v*k multiplicacin v/k divide por k cada elemento de v k./v divide k por cada elemento de v v.^k potenciacin cada componente de v esta elevado a k k.^v potenciacin k elevado cada componente de v VECTORES:
A .* B=[a1.b1 a2.b2 ... an.bn] A y B deben ser horizontales o verticales. Si A=[fila] y B=[Columna]: Producto punto = A*B
A*B
A/ B
A ^ n1
Operaciones
Ejemplo:
Matrices predefinidas
eye(n) zeros(n) zeros(n,m) Matriz unitaria (n x n)
Matriz de ceros (n x n)
Matriz de ceros (n x m) Matriz de unos (n x n) Matriz de unos (n x m)
ones(n)
ones(n,m) rand(n) rand(n,m) linspace (x1,x2,n)
magic(n)
El operador (:)
El operador (:) se muestra mucho ms potente cuando se trabaja con matrices.
El operador (:)
Extraccin de submatrices.
El operador (:)
Extraccin de una columna.
El operador (:)
Extraccin de una fila (end = ltima).
El operador (:)
Eliminacin de una columna.
La funcin (cat)
La funcin (cat) se emplea para concatenar matrices a lo largo de una dimensin especificada. Al igual que el operador (:) es de una gran utilidad cuando se trabaja con matrices.
La funcin (cat)
Ejemplo (1: abajo; 2: a la derecha):
B
Operadores relacionales
< <= > >= == ~= Menor que Menor o igual a Mayor que Mayor o igual a Igual a Distinto de
Operadores lgicos
&& || ~ xor Conjuncin Disyuncin Negacin Disyuncin exclusiva
ECUACIONES LINEALES
Dado un sistema algebraico de ecuaciones lineales de la forma Ax=B. Lo resolveremos por mtodos clsicos y con funciones propias de matlab Comandos: >>det(A) %determinante de una matriz cuadrada >>inv(A) %inversa de una matriz cuadrada
Ecuaciones lineales________________________________
Ejemplos de resolucin de un sistema Ax=B: Ejemplo: Resolver el sistema: X1+2 X2+3 X3 = 4 2X1+3 X2+4 X3 = 5 4X1+2 X2+5 X3 = 1
Ecuaciones lineales________________________________
Ecuaciones lineales________________________________
Autovectores (o vectores propios ) de una matriz: Los vectores solucin obtenidos al remplazar cada uno de los valores propios en la ecuacin. Ejemplo: Hallar los valores y vectores propios asociados a la matriz
y t= -1
( valores propios)
POLINOMIOS
Los polinomios se representan en matlab por un vector fila de dimensin n+1 siendo n el grado del polinomio. Dado un polinomio
se representa por >> pol1=[1 0 2 0] para el clculo de las races de un polinomio existe el comando roots. >>raices=roots(pol1) (da un vector columna, aunque pol1 es un vector fila)
x3+2x
Polinomios______________________________________
Un polinomio puede ser reconstruido a partir de sus races con el comando poly >> p=poly(raices) (da un vector fila) ** en caso de que el argumento de poly fuera una matriz obtendramos como resultado el polinomio caracterstico de la matriz. As mismo si queremos calcular los autovalores de la matriz bastara con calcular las races del polinomio caracterstico.
Ejemplo1: pol2=[2 4 0 1]; % definicin del polinomio 2x3+4x2+1 raices=roots(pol2) % clculo de sus races pol2_n=poly(raices) % reconstruccin del polinomio real(pol2_n) % qu pas? Ejemplo2: A=[1 2 3 ; 2 3 4; 4 2 5]; p=poly(A) % pol. caracterstico roots(p) % autovalores de A
Polinomios______________________________________
Para calcular el valor de un polinomio p en un punto dado x1 basta con utilizar el comando polyval >>y=polyval(p,x1) Ejemplo: Evaluar el polinomio x3-x2-x+1 en el punto 2 p=[1 1 1 1] % definicin del polinomio x3-x2-x+1 polyval(p,2) Ejemplo: Ahora evaluarlo en todo un rango de puntos x=-2:0.1:2; Y=polyval(p,x); Para multiplicar y dividir polinomios tenemos los comandos especiales conv(p1,p2) y deconv(p1,p2) Ejemplo5: p1=[1, -2, 1]; p2=[1,1]; p3=conv(p1,p2) p4=deconv(p3,p2) [p4,r]=deconv(p3,p2) % resto de la divisin
Polinomios______________________________________
Para conocer el resto de la divisin de polinomios basta con poner >>[p4,r] = deconv(p3,p2)
El comando residue, permite el clculo del desarrollo en suma de fracciones simples del cociente p1/p2. p2 debe tener races reales El formato del comando es: >>[r,p,k] =residue(p1,p2) donde: r= vector columna con los numeradores p= vector columna con las raices del denominador k= vector fila con los coeficientes del polinomio independiente.
Polinomios______________________________________
x3 x2 1 x 3 3x 2 4
x3 x2 1 35 13 1 1 3 2 2 x 3 x 4 9( x 2) 3( x 2) 9( x 1)
[pol1,pol2]=residue(r,p,k)
Polinomios______________________________________
Para calcular la derivada de un polinomio tenemos el comando, >>polyder(p) Ejemplo7: Dado el polinomio x3+6x2+1 su derivada es
% CLOCK returns a six element date vector vector containing the % current time and date in decimal form: % CLOCK = [year month day hour minute seconds]
% The first five elements are integers. The seconds element % is accurate to several digits beyond the decimal point.
% ETIME
Elapsed time.
% ETIME(T1,T0) returns the time in seconds that has elapsed % between vectors T1 and T0. The two vectors must be six
>> b=rand(n,1);
>> x=zeros(n,1);
Tiempo transcurrido ??
tiempo=etime(tiempoFin, tiempoIni) RESULTADO: tiempoIni = 1.0e+003 * 2.0060 0.0090 0.0290 0.0090 0.0270 0.0436
tiempo=etime(tiempoFin, tiempoIni)
RESULTADO:
tiempo =
5.2810
tiempo =
PROGRAMACIN
PROGRAMACIN________________________________
Comandos de entrada salida input: nos permite introducir datos variable=input(mensaje a pantalla); disp: muestra un texto por pantalla disp(El algoritmo no ha convergido)
PROGRAMACIN________________________________
Testear el nmero de argumentos nargin devuelve el nmero de argumentos de entrada con los que el usuario ha llamado a la funcin. nargout devuelve el nmero de argumentos de salida con los que el usuario ha llamado a la funcin. nargchk chequea si el nmero de argumentos de entrada calculados con nargin esta entre el valor mximo y mnimo previsto, si no da error. nargchk(mnimo,mximo,nmero_entrada)
PROGRAMACIN________________________________
Bucles. Bucles anidados for k=n1:incre:n2 end Con break se rompe la ejecucin Estructuras de control condicionadas
switch expresion case expresion_0
if
elseif
else end
end
while end
PROGRAMACIN________________________________
Programacin de funciones function arg_salida=nombre_funcion(arg_entrada) El fichero se debe guardar con nombre_funcion.m Para devolver el control al programa desde cualquier punto de una funcin basta con escribir la sentencia return Ejercicio Utilizando estructuras de control construir una funcin que nos calcule las races de una ecuacin de segundo grado ax2+bx+c=0
function raiz=sole2(a,b,c) %raiz=sole2(a,b,c) %solucion de la ecuacion de segundo grado %ax^2+bx+c=0, a~=0 % if (nargin ~=3) error(El numero de argumentos de entrada debe ser 3) end discri=b^2-4*a*c; raiz=[]; if(discri==0) raiz=-b/(2*a); disp([Raiz doble=,num2str(raiz)]) return elseif(discri>0) raiz(1)=(-b+sqrt(discri))/(2*a); raiz(2)=(-b-sqrt(discri))/(2*a); disp([Raices reales simples=,num2str(raiz)]) return raiz(1)=(-b+sqrt(-discri)*i)/(2*a); raiz(2)=(-b-sqrt(-discri)*i)/(2*a); disp([Raices complejas=,num2str(raiz)]) return
else
end