Sunteți pe pagina 1din 28

CURSO DE MATLAB

PRQ404-PROGRAMACION Y METODOS NUMERICOS


ING. M.Sc. ROBERTO PARRA ZEBALLOS
ARRAYS: vectores y matrices
>> v=[1 3 pi 1/3] % Separados por espacios en blanco
• >> v=[1,3,pi,1/3] % o bien separadas por comas
• existen otras formas de introducir vectores, cuando sus coordenadas guardan
alguna relación entre sí:
ORDEN SALIDA
[a:h:b] Vector (a,a+h,a+2h, . . .,a+nh), donde n es el
mayor entero tal que a+nh ∈ [a,b]
si h > 0 y a+nh ∈ [b,a] si h < 0. En este caso,
los corchetes pueden sustituirse por
paréntesis o incluso eliminarse

linspace(a,b,n) Vector cuyas coordenadas son los puntos de


una partición uniforme del intervalo [a,b]
EJEMPLOS
• >> v=[1:0.3:2]
• >> v=(1:-0.4:-0.8)
Si se omite el incremento h MATLAB toma por defecto h=1
• >> v=1:4
• En la orden linspace el tercer argumento es opcional, y si no se
introduce toma el valor 100:
• >> v=linspace(0,10)
• v=linspace(0,10, 10)
• Calcular los espacios recorridos por un móvil a velocidad
v0 = 5 m/s, para 5 instantes correspondientes a los 2 primeros
segundos del movimiento:
• >> t=linspace(0,2,5)
• >> v0=5
• >> s=v0*t
matrices
• Los elementos de una matriz se introducen entre corchetes. Las filas
separadas mediante un punto y coma (;) y los elementos separados por
espacios en blanco o comas.
• >> A=[1 2 3; 3,1,2;1 1 0]
• Una vez definida una matriz o un vector, se puede acceder a sus elementos
o submatrices con las órdenes:

ORDEN SALIDA
v(i) v(i) Coordenada i del vector v
v(end) Última coordenada del vector v
A(i,j) Elemento de la matriz A que ocupa la posición i,j
Columna j de la matriz A
A(:,j) Fila i de la matriz A
A(i,:) Submatriz de A que contiene las filas indicadas en
A(v,w) las coordenadas de v y las columnas
indicadas en w
Elimina la fila i de la matriz A
A(i,:)=[ ] Elimina la columna j de la matriz A
A(:,j)=[ ] Última columna de la matriz A
A(:,end)
ORDEN SALIDA
ones(n) Matriz cuadrada n×n de unos.
ones(m,n) Matriz m×n de unos.
zeros(n) Matriz cuadrada n×n de ceros.
zeros(m,n) Matriz m×n de ceros.
eye(n) Matriz identidad n×n.
eye(m,n) Matriz m×n con unos en la diagonal principal
y el resto ceros.

EJEMPLOS
>> A=[1 2 3 4 1; 3,1,2 0 2;1 1 0 1 3]
>> A(3,4)=100, A(2,5)=200
>> B=A
>> B(:,2)=[] %La matriz B coincide con la matriz
obtenida de eliminar la columna 2 de A
Definición de matrices por bloques
• Dadas dos matrices A y B con el mismo número de filas, se puede definir
una matriz C formada por todas las columnas de A y de B:
>> A=zeros(3)
>> B=eye(3,2)
>> C=[A B]
• Análogamente, se puede definir una matriz a partir de otras dos con el
mismo número de columnas:
>> A=eye(2,3)
>> B=ones(3)
>> C=[A;B]
OPERACIONES CON ARRAYS
OPERACI RESULTADO OPER RESULTADO
ÓN ACIO
A+B Suma A y B N
A-B Resta B de A l +A Suma a cada elemento de A el
A*B Multiplica A por B escalar l
A/B Calcula AB−1 A.*B Calcula una matriz que en la
A\B Calcula A−1B posición (i, j) contiene el producto
l *A Multiplica todos los elementos aijbij de los elementos que en A y B
de A por l ocupan dicha posición
A^n Eleva la matriz A al entero n Calcula una matriz que en la
A.’ Calcula la traspuesta de A A./B posición (i, j) contiene el cociente
A’ Calcula la traspuesta de la aij/bij de los elementos que en A y
conjugada de A B ocupan dicha posición
Eleva cada elemento de la matriz A
al entero n
A.^n Calcula una matriz que en la
posición (i, j) contiene aij^bi j
A.^B
FUNCIONES SOBRE ARRAYS
size(A) Vector con las dimensiones de la matriz A
size(A,1) Número de filas de la matriz A
size(A,2) Número de columnas de la matriz A
length(v) Número de coordenadas del vector v
length(A) Mayor elemento del vector size(A)
rank(A) Rango de la matriz A
det(A) Determinante de la matriz A
trace(A) Traza de la matriz A
inv(A) devuelve la inversa de A, aunque también puede calcularse como A^n
sum(A) devuelve un vector fila en el que el elemento i contiene la suma de todos los
elementosde la columna i de A
prod(A) devuelve un vector fila en el que el elemento i contiene el producto de todos
los elementos de la columna i de A
dot(u,v) Producto escalar de los vectores u y v
cross(u,v) Producto vectorial de los vectores (de tres coordenadas) u y v
max(A) devuelve un vector fila en el que el elemento i contiene el máximo de todos
los elementos de la columna i de A
[m,pos]=max(A) devuelve m vector fila en el que el elemento i contiene el máximo de
todos los elementos de la columna i de A, y el vector fila pos en el que almacena la
posición en la que se encuentra dicho máximo.
min(A) devuelve un vector fila en el que el elemento i contiene el mínimo de todos los
elementos de la columna i de A
[m,pos]=min(A) devuelve m vector fila en el que el elemento i contiene el mínimo de
todos los elementos de la columna i de A, y el vector fila pos en el que almacena la
posición en la que se encuentra dicho mínimo.
null(A) Devuelve una base del subespacio de las soluciones de un sistema homogéneo
colspace Proporciona, por columnas, una base del subespacio generado por los
vectores columna de la matriz A. Dado que es una función simbólica, el argumento
debe ser una variable simbólica.
rref(A) Calcula la matriz escalonada reducida de la matriz A
poly(A) Calcula el polinomio det(x-AI), expresado como un vector, según
potencias decrecientes.
poly(A,x) Calcula el polinomio det(x-AI). x debe ser declarada antes como
variable simbólica.
eig(A) Calcula los valores propios de A.
[P,D]=eig(A) Devuelve la matriz P cuyas columnas son los vectores propios, y la
matriz diagonal D formada por los valores propios. Si la matriz A no es
diagonalizable,Matlab devuelve una matriz P no regular y una matriz diagonal
D formada por los valores propios, de modo que AP=PD.
[P,D]=eig(sym(A)) Hace lo mismo que la orden [P,D]=eig(A), pero con la matriz
A en formato simbólico.
orth(A) Devuelve una matriz cuyas columnas forman una base ortonormal del
subespacio engendrado por las columnas de A
ENTRADAS Y SALIDAS DE VARIABLES
Input  Aparece un mensaje pidiendo un dato. El valor digitado será dado a la variable. Si se desea
asignar una cadena se añade el argumento ‘s’.
Sintaxis: Variable = input (‘mensaje’, ’s’)
Ejemplos:
>> z=input(‘Ingrese un número:’)
Ingrese un número: 7
>> whos z
Name Size Bytes Class Attributes
z 1x1 8 double
>> NOM = input ('Cuál es tu nombre?','s')
Cuál es tu nombre?Juancito
NOM =
Juancito
>> whos NOM
Name Size Bytes Class Attributes
NOM 1x8 16 char
ENTRADAS Y SALIDAS DE VARIABLES
disp  visualiza en pantalla un mensaje de texto o el valor de %c tipo
una matriz, pero sin imprimir su nombre.
Ejemplos: %s para cadena de caracteres
>> disp (’FIN DEL PROGRAMA’)
%d para variables enteras
FIN DEL PROGRAMA
>> A %f para variables reales
A=
%lf para grandes variables reales
1 2 3 >>x=1/3
x= %e decimal tipo exponencial
4 5 6
0.3333
>> disp(A) >> disp('El valor de x = '), disp (x)
El valor de x =
1 2 3 0.3333
4 5 6 \n  nueva lines
Fprintf  Visualiza un valor numérico con formato \t  tabulador
\b  backspace
Sintaxis; fprintf( ‘mensaje y formato de la variable’, variable) \r  return
Ejemplo: >> área = 100; \f  alimentación de hoja
>> fprintf ('El área del rectángulo es %12.3f cm2 \n', area)
PROGRAMACION EN MATLAB
El simbolo ~ se obtiene
presionando
simultaneamente AltGr y 4 y
espacio en blanco.

expresion1 OpR expresion2


ESTRUCTURAS IF-ELSEIF-ELSE-END
La orden else puede
 if expresión lógica 1 aparecer o no.
 conjunto de órdenes 1 También puede
 elseif expresión lógica 2 aparecer sólo la
 conjunto de órdenes 2 combinación if-end o
 elseif expresión lógica 3 la combinación
 conjunto de órdenes 3
if-else-end.
 .
 .
 else
 conjunto de órdenes

 end
LA ESTRUCTURA FOR-END
La sintaxis es la siguiente:
 for k=x
 conjunto de órdenes
 end
donde k es una variable y x es un vector.
Por ejemplo si queremos calcular el valor de k2, cuando k = 4,5,6:
>> for k=[4,5,6]
 k^2
 end

Bucles while-end
Su sintaxis es la siguiente:
 while expresión lógica
 conjunto de órdenes
 End
EJEMPLO
 x=1
 while x<=11
 x=2*x
 end
FICHEROS FUNCTION
 Las function se construyen en ficheros .m . Se distinguen de los
guiones en la primera orden en donde se deben
especificar los argumentos
 function [Argumento(s) de Salida] = nombrefuncion (Arg.
Entrada)
% líneas de comentarios
% que aparecen al ejecutar
% help nombrefuncion
Órdenes que hacen los cálculos
...
 Por norma los nombres de la function y del fichero coincidirán.
Es decir, el fichero lo llamamos nombrefuncion.m
 Para llamar o ejecutar la function se realiza como las órdenes
normales
 » [Argumento(s) de Salida] = nombrefuncion (Arg. Entrada)
CONSTRUIR UNA FUNCTION RAICES.M QUE CALCULE LAS RAÍCES DE UN
POLINOMIO DE SEGUNDO GRADO AX2+BX+C

Una vez guardado el fichero


raices.m. Se puede llamar
Se escribe en el fichero raices.m >> [x,y] = raices(1,-3,2)
 function [x1, x2] = raices(a,b,c) x=
2
% y=
 % Función que calcula en x1 y x2 las raíces 1
>> help raices
 % de un polinomio de segundo grado Función que calcula en x1 y x2
las raíces
 % a x^2 + b x + c = 0
de un polinomio de segundo
% grado
a x^2 + b x + c = 0
 disc=sqrt(b*b-4*a*c)
 x1 = (-b + disc)/(2*a)
 x2 = (-b - disc)/(2*a)
 Sintaxis:
 function [valores de retorno] = nombre_función (Argumentos de
entrada)
Si no hay valores de retorno se omiten los corchetes y el signo =. Si sólo
hay un vector de retorno no se colocan corchetes.

FUNCIONES EN MATLAB
 function [M,S]=media_desv(x) >> x =[1 2 3 4 5 6];
 n=length(x); >> [M, S] = media_desv (x)
>> fprintf (‘La media = %12.3f
 M=sum(x)/n; \n’, M)
 desv2=0; >> fprintf (‘La desv_est = %12.3f
\n’, S)
 if n <= 30
 for i=1:n
 desv2=desv2+(x(i)-M)^2;
 end
 S=sqrt(desv2/(n-1));
 else
 for i=1:n
 desv2=desv2+(x(i)-M)^2;
 end
 S=sqrt(desv2/n);
 end
CREACIÓN DE REFERENCIAS A
FUNCIONES
a) Construcción de un manipulador de una función conocida de
MATLAB:
fhandle = @NombreFunción
>>f1=@sin >>y=f1(pi/2)  y =1
>>f2=@exp >>z=f2(1)  z = 2,7183
b) Manipuladores a funciones del usuario
Implementación  fhandle = @(lista de variables)
Uso de función  fhandle(Arg1, Arg2, …, ArgN)
EJEMPLO: Calculo de hipotenusa con funció hypot
>>hypot=@(x,y) sqrt(x.^2+y.^2);
>>z=hypot(3,4)  z = 5
 EJEMPLO QUE OBTENGA LA FECHA Y HORA ACTUAL
>> tiempo = @() datestr(now);
>> ahora = tiempo()  ahora = 24-abril-2017 14:45:00
c) Funciones que utilizan manipuladores de función:
Reciben como argumentos de entrada manipuladores a función para
particularizar sus cálculos con la función referenciada.
EJEMPLO: Dada f1(x) = 1/(x^3-2x-5) calcular la integral entre 0 y 2. Use la
función quad para calcular la I.
Sintaxis  I = quad (fhandle, a, b)
>>functión y = mifuncion1(x)
y= 1./(x.^3-2.*x-5)
I = quad(@mifuncion1, 0, 2)  I = -0,4605
 Feval (‘F’, arg1, arg2, …, argN)
Evalúa la función F (F.m) en los argumentos especificados.
EJEMPLO: function [x1, x2]=ecuacion2(a,b,c) EVAL evalúa una
cadena que
d=b^2-4*a*c; contiene una
x1=(-b+sqrt(d)/(2*a); expresión MATLAB
x2=(-b-sqrt(d)/(2*a);
>> x=[1:5];
>> [x1, x2]=feval (‘ecuacion2’, 1, 2, 3) >> cadena2=
x1= -1.0000+1.4142 i ‘w=(x.^0.5-
1)./(x.^0.5)’;
x2= -1.0000-1.4142 i >>eval(cadena2)
w=0 0.2929 0.4226
0.5000 0.5528

EVALUACION DE FUNCIONES: FEVAL


CALCULO SIMBOLICO

Obtener el valor de f (x,y) = (2x+5y+3)^1/3 en los puntos (0,0), (0,1), (0,2),


y (0,3).
» syms x y
» f=(2*x+5*y+3)^(1/3)
» v=[0 1 2 3];
» val=subs(f,{x,y},{0*v,v}) %sustituye (x,y) por (0,v(i))
» val=double(val) %pasa val a variable numérica
LÍMITES, DERIVADAS E
INTEGRALES SIMBÓLICAS
MANIPULACIÓN DE EXPRESIONES
SIMBÓLICAS
SOLUCION DE ECUACIONES
 solve(p)  encuentra soluciones de la ecuación p=0
Calcúlense todas las raíces del polinomio z3+z2−4z+6

» syms z
» p=z^3+z^2-4*z+6
» sol=solve(p)
 nos da las soluciones de la ecuación. La solución es un vector
de tres componentes que hemos guardado con el nombre
sol.
 La orden solve no siempre da todas las soluciones como
puede comprobarse si se escribe
» sol=solve(’sin(x)’)
 Sólo devuelve sol = 0
>> syms x y
>> sol=solve('x+y-1', '2*x-3*y-10')
Para obtener los valores de la solución escribimos
>> sol.x, sol.y

MAS EJEMPLOS

S-ar putea să vă placă și