Você está na página 1de 59

Herramientas de Cmputo

Matemtico

Entorno Matlab
Prof. Blanca Guilln
Temas

Fundamentos de Matlab
Introduccin al software Matlab
El entorno Matlab: ventanas, variables y
archivos
Smbolos y Comandos Bsicos

Grficas con Matlab


Graficacin Simple
Graficacin de Malla y de Superficies
Fundamentos de Matlab

ARCHIVOS
Generalidades
MATLAB es un programa interactivo en el sentido que
establece un dilogo con el usuario mediante un
lenguaje de comandos. Todo comando introducido tiene
como respuesta, por parte de MATLAB, su ejecucin o,
en su defecto, el mensaje de error correspondiente.
Generalidades
Programar en MatLab es usar una serie de comandos que
permitan realizar una tarea o funcin especfica. Los
comandos pueden ser:

1. Operaciones matemticas introducidas una por


una a travs de la lnea de comandos. Ejemplo:

>> A=[1 2 3; 4 5 6; 7 8 9];


>> B=A
Generalidades
Programar en MatLab es usar una serie de comandos que
permitan realizar una tarea o funcin especfica. Los
comandos pueden ser:

2. Invocaciones a archivos-M denominados scripts


que automatizan secuencias largas de comandos.
Generalidades
Programar en MatLab es usar una serie de comandos que
permitan realizar una tarea o funcin especfica. Los
comandos pueden ser:

3. Invocaciones a funciones, archivos-M, que


permiten aadir a MATLAB funciones adicionales
expandiendo as la capacidad de este programa.
Archivos de Comando: Scripts
Cuando un script es invocado, MATLAB
simplemente ejecuta los comandos encontrados
en dicho archivo.

Las instrucciones en script operan globalmente en


los datos en el espacio de trabajo.

Los comandos son utilizados para hacer anlisis,


resolver problemas, o disear secuencias largas
de comandos que se conviertan en interactivas.
Scripts Ejemplo 1
% Ejemplo de un archivo-m
% Clculo100de la suma de los primeros 100 trminos de la
1
% serie: n 1
n 1 2

suma=0;
for n=1:100
xn=1/2^(n-1); % trmino general de la serie
suma=suma+xn
end
suma
% Fin del archivo-m
Archivos de Comando: Scripts
Si guardamos el archivo con el nombre:

Script1Clase2

para ejecutarlo basta con escribir Script1Clase2


en la ventana de comandos de MATLAB seguido
de "enter" y vemos que MATLAB calcula los
primeros 100 trminos de la serie.
Luego que la ejecucin del archivo es completada,
las variables suma y n permanecen en el espacio
de trabajo.
Funciones
Un archivo-M que contiene la palabra function al
principio de la primera lnea, es un archivo de
funcin.

En una funcin, a diferencia de un script, se


deben pasar argumentos de entrada y/o salida.

Las variables definidas y manipuladas dentro de la


funcin son locales y no operan globalmente en el
espacio de trabajo.
Funciones Ejemplo 2
function suma = f1clase2(N)

% Clculo de la suma de los primeros N trminos de la


N
1
% serie: n 1
n 1 2

suma=0;
for n=1:N
xn=1/2^(n-1); % trmino general de la serie
suma=suma+xn
end
Funciones - Ejemplo
La primera lnea declara el nombre de la funcin, los
argumentos de entrada, y los argumentos de salida. Sin
esta lnea sera un archivo de comando.

function suma = f1clase2 (N)


Argumento de salida Argumento de entrada

Nombre de la funcin
Funciones Ejemplo 2
El smbolo % indica que el resto de la lnea es un
comentario. Las primeras lneas documentan el archivo-
M y aparecen en la pantalla cuando escribimos:
help f1Clase2.

Las variables n y xn, son locales a f1Clase2 y no existen


en el espacio de trabajo, o si existen, permanecen sin
cambios.

Para ejecutar la funcin, se hace la llamada en la lnea


de comandos incluyendo los parmetros. Esto es:
>> suma = f1Clase2(100)
Otras funciones
MATLAB tiene un gran nmero de funciones
incorporadas. Algunas son funciones
intrnsecas, esto es, funciones incorporadas en el
propio cdigo ejecutable del programa. Estas
funciones son particularmente rpidas y eficientes.

Existen adems funciones definidas en ficheros


*.m y *.mex12 que vienen con el propio programa
o que han sido aportadas por usuarios del mismo.
Estas funciones extienden en gran manera las
posibilidades del programa
Otras funciones
Observacin:

Para que MATLAB encuentre una determinada


funcin de usuario el correspondiente archivo-M
debe estar en el directorio actual o en uno de los
directorios del search path.
Otras funciones
1. Funciones matemticas elementales.
2. Funciones especiales.
3. Funciones matriciales elementales y especficas.
4. Funciones para la descomposicin y/o factorizacin de
matrices.
5. Funciones para anlisis estadstico de datos.
6. Funciones para anlisis de polinomios.
7. Funciones para integracin de ecuaciones
diferenciales ordinarias.
8. Resolucin de ecuaciones no-lineales y optimizacin.
9. Integracin numrica.
10. Funciones para procesamiento de seales.
Funciones matemticas elementales

Funciones Elementales Funciones Trigonomtricas


abs Valor absoluto sin Seno
angle Fase (argumento) cos Coseno
sqrt Raz cuadrada asin Arco seno
real Parte real acos Arco coseno
imag Parte imaginaria tan Tangente
conj Complejo conjugado atan Arco tangente
exp Exponencial (Base e) sinh Seno hiperblico
log Logaritmo natural cosh Coseno hiperblico
log10 Logaritmo base 10 tanh Tangente hiperblica
Funciones que actan sobre vectores

Funciones que actan slo sobre vectores


max Mximo elemento de un vector
min Mnimo elemento de un vector
sum Suma de los elementos de un vector
cumsum Suma acumulada de los elementos de un vector
mean Valor medio de los elementos de un vector
std Desviacin estndar
prod Producto de los elementos de un vector
cumprod Producto acumulativo de los elementos de un vector
sort Ordenacin los elementos de un vector
Funciones que actan sobre matrices

Funciones que actan sobre matrices


trace Traza de una matriz cuadrada
size Tamao de una matriz
lu Descomposicin de Crout (LU) de una matriz
norm Norma 2 de una matriz (mayor autovalor)
inv Inversa de una matriz
poly Coeficientes del polinomio caracterstico
eig Autovalores de una matriz
svd Descomposicin en valores singulares de una matriz
tril Matriz triangular inferior
triu Matriz triangular superior
Fundamentos de Matlab

PROGRAMANDO CON MATLAB:


SMBOLOS Y COMANDOS BSICOS
Programando en Matlab

La ejecucin de las instrucciones en MATLAB


puede someterse a un proceso de programacin, tal
como ejecutar un determinado grupo de
instrucciones, slo si se satisface cierta condicin
booleana o mediante bucles y bifurcaciones.
Expresiones Booleanas
Las expresiones booleanas se usan para determinar si un
conjunto de una o ms condiciones es verdadero o falso, y el
resultado de su evaluacin es un valor verdadero (1) cuando
se cumple la condicin y falso (0) cuando no se cumple. Los
operandos de una expresin booleana pueden ser:

Expresiones relacionales: comparan dos valores y


determinan si existe o no una cierta relacin entre ellos.

Expresiones lgicas: combinan valores lgicos


(Verdadero/Falso) para obtener nuevos valores lgicos
que determinen el flujo de control de un algoritmo o
programa.
Operadores Relacionales

Los operadores relacionales son operadores binarios, es


decir, tienen dos operandos. Su expresin general es:

expresion1 operador expresion2

El resultado de la operacin ser un 0 si la condicin


representada por el operador relacional no se
cumple, y ser un 1 si la condicin representada por el
operador relacional se cumple.
Operadores Relacionales

expresion1 operador expresion2


3 <= 3

Operadores Relacionales
1. (3 <= 3) el resultado es 1
porque la condicin se < Menor que
cumple > Mayor que

<= Menor o igual que


2. (2 == 1) el resultado es 0
porque la condicin no se >= Mayor o igual que
cumple
=~ Diferente de
Operadores Lgicos
Su forma general es la siguiente:

expresion1 & expresion2

expresion1 | expresion2

~expresion1

Operadores Lgicos
& and
| or
~ not
Operadores Lgicos
1. & (and): se evalan siempre ambos operandos, y el resultado
es true slo si ambos son true.

2. && (and breve): si el primer operando es false ya no se evala


el segundo, pues el resultado final ya no puede ser ms que
false.

3. | (or): se evalan siempre ambos operandos, y el resultado es


false slo si ambos son false.

4. || (or breve): si el primer operando es true ya no se evala el


segundo, pues el resultado final no puede ser ms que true.

5. ~ negacin lgica
Operadores Lgicos

Los operadores lgicos se pueden combinar entre s y


agruparlos mediante parntesis. Por ejemplo:

(2==1) | (-1==-1) el resultado es 1

(2==1) & (-1==-1) el resultado es 0

((2==2) & (3==3)) | (4==0) el resultado es 1

((6==6) | (8==0)) & ((5==5) & (3==2)) el resultado es 0


Bifurcaciones
Una Bifurcacin es una estructura selectiva. Se utilizan para
realizar operaciones cuando se cumpla o no una condicin.
En los siguientes grficos se observan 3 formas de
bifurcacin distintas:

Fuente: Aprenda Matlab como si estuviera en primero: Jos Rodrguez


Bifurcaciones
La manera ms habitual de encontrar las bifurcaciones es en
forma de:

1. Sentencias: if

2. Sentencias: if ... else, o

3. Sentencias: if ... else mltiples.

Fuente: Aprenda Matlab como si estuviera en primero: Jos Rodrguez


Sentencia if

Permite ejecutar o no una sentencia


simple o compuesta segn se cumpla
o no una determinada condicin.

Sintaxis:

if (Condicin)
sentencia1;
sentencia2;
...
End

Fuente: Aprenda a programar como si estuviera en primero: Aguinaga y col.


Sentencia ifelse

Permite realizar una bifurcacin,


ejecutando una parte u otra del
programa segn se cumpla o no
una cierta condicin.

Sintaxis:

if (Condicin)
sentencia1;
else
sentencia2;
end

Fuente: Aprenda a programar como si estuviera en primero: Aguinaga y col.


Sentencia ifelse mltiple
Permite realizar una ramificacin ejecutando una entre
varias partes del programa segn se cumpla una de n
condiciones.

Fuente: Aprenda a programar como si estuviera en primero: Aguinaga y col.


Sentencia ifelse mltiple
Sintaxis:

if (condicin1)
sentencia1;
elseif (condicin2)
sentencia2;
elseif (condicin3)
sentencia3;
...
elseif ()

else
sentencian;
end
Fuente: Aprenda a programar como si estuviera en primero: Aguinaga y col.
Ejemplo 3 (caso 1)
function analisis_nota(nota)
if nota <5
disp(Suspendido)
end
if nota>=5 & nota <7
disp(Aprobado)
end
if nota>=7 & nota <9
disp(Notable)
end
if nota>=9
disp(Sobresaliente)
end

Fuente: Aprenda a programar como si estuviera en primero: Aguinaga y col.


Ejemplo 3 (caso 2)
function analisis_nota(nota)
if nota <5
disp(Suspendido)
elseif nota <7
disp(Aprobado)
elseif nota <9
disp(Notable)
else
disp(Sobresaliente)
end

Fuente: Aprenda a programar como si estuviera en primero: Aguinaga y col.


Bucles

La otra gran herramienta en los lenguajes de programacin


para controlar el flujo de un programa son los bucles.

stos permiten repetir la ejecucin de lneas de cdigo,


es decir, permiten que el flujo del programa vuelva de
nuevo hacia atrs. Esta repeticin se realiza, bien un
nmero determinado de veces, bien hasta que se cumpla
una determinada condicin de tipo lgico o aritmtico.

Aunque cada lenguaje de programacin tiene sus propias


construcciones, y su manera de utilizarlas, las dos
construcciones ms habituales para realizar bucles son el
while y el for.

Fuente: Aprenda a programar como si estuviera en primero, Aguinaga y col.


Bucle while
Los bucles WHILE se utilizan cuando queremos
que se repita una serie de instrucciones
mientras que se cumpla una determinada
condicin que no sabemos cundo dejar de
cumplirse.

Fuente: Aprenda a programar como si estuviera en primero, Aguinaga y col.


Bucle while
Syntaxis:

while ( ExpresionDeControl)
sentencia;
end

Fuente: Aprenda a programar como si estuviera en primero, Aguinaga y col.


Ejemplo 4
Hallar el primer entero n para el cual n! es un
nmero de 10 digitos:

n = 1;
while prod(1:n) < 1.0e10,
n = n+1;
end
fprintf('El primer entero para el cual n! tiene 10 dgitos es n
= %4.0f.\n', n-1)
Bucle for
Los bucles FOR se utilizan cuando queremos
que se repita una serie de instrucciones un
nmero determinado de veces.

Fuente: Aprenda a programar como si estuviera en primero, Aguinaga y col.


Bucle for
Los bucles FOR se utilizan cuando queremos
que se repita una serie de instrucciones un
nmero determinado de veces.

Los bucles FOR se repiten mientras que una


variable no adquiera un determinado valor. As que,
cada bucle FOR contiene una variable a la que
llamaremos VARIABLE DEL BUCLE FOR.

Fuente: Aprenda a programar como si estuviera en primero, Aguinaga y col.


Bucle for
Los bucles FOR se utilizan cuando queremos
que se repita una serie de instrucciones un
nmero determinado de veces.

Cuando se programa un bucle FOR, se escribe una


primera instruccin con la que se dan los tres
parmetros fundamentales del bucle FOR:

for valor_inicial: incremento: valor_final


Paso del bucle

Fuente: Aprenda a programar como si estuviera en primero, Aguinaga y col.


Ejemplo 5
Imprima la raz cuadrada de los primeros 5
enteros.
n = 5;
for i=1:n
fprintf(%6d %8.4f\n,i,sqrt(i));
end
Anidamiento de bucles
Los bucles pueden anidarse unos dentro de otros.
Esta estrategia se utiliza muy a menudo.
Un ejemplo claro se encuentra a la hora de recorrer
los elementos de una matriz.

Fuente: Aprenda a programar como si estuviera en primero, Aguinaga y col.


Anidamiento de bucles Ejemplo 6
Crear una matriz 4x4 tal que A(i,j)=1/(i+j-1)

m=4;
n=4;
for i = 1:m
for j = 1:n
A(i, j) = 1/(i+j- 1);
end
end
Anidamiento de bucles Ejemplo 7
Crear una funcin con parmetros de entrada m y n, y
parmetro de salida la matriz A mxn, definida mediante:
A(i,j)=1/(i+j-1)
function A=ejemplo7(m,n)

for i = 1:m
for j = 1:n
A(i, j) = 1/(i+j- 1);
end
end
Ejercicio 1
Crear una funcin de nombre RaicesPoly2 que calcule las
races de un polinomio de segundo grado del tipo:

2
p( x) ax bx c
Observaciones:
1. Esta funcin necesitar 3 argumentos de entrada (los
valores a, b y c del polinomio) y 2 de salida (las dos
races del polinomio).
2. Compruebe que funciona
Ejercicio 2 Uso bucle for
Construir una funcin de nombre CalcularFactorial.m, que
calcule el factorial de un nmero que se pasa por ventana.
Disee un script (programa principal) llamado
ejercicio2.m desde donde se invoque a la funcin
CalcularFactorial.
El script debe realizar las siguientes operaciones:
1. Borrar todas las variables (ver clear)
2. Pedir por teclado el nmero (n) del que se desea
conocer su factorial (ver funcin input)
3. Calcular el factorial de n con una llamada a la funcin
CalcularFactorial creada por Ud. mismo y almacenar
el resultado en la variable y. Es decir,
y = CalcularFactorial(n)
Ejercicio 3 Uso bucle While
Construir una funcin de nombre CalcularFactorial2.m,
que calcule el factorial de un nmero n que se pasa por
ventana usando el bucle while.
Disee un script (programa principal) llamado ejercicio2.m
desde donde se invoque a la funcin CalcularFactorial2.
El script debe realizar las siguientes operaciones:
1. Borrar todas las variables (ver clear)
2. Pedir por teclado el nmero (n) del que se desea
conocer su factorial (ver funcin input)
3. Calcular el factorial de n con una llamada a la funcin
CalcularFactorial2 creada por Ud. mismo y almacenar
el resultado en la variable y. Es decir,
y = CalcularFactorial2(n)
Mtodo de Biseccin

Teorema de Bolzano:
Si una funcin continua
en el intervalo [a, b]
toma valores de distinto
signo en a y en b,
entonces existe al
menos un valor entre
ambos extremos del
intervalo en el que la
funcin se anula.

Es decir, existe p en
(a,b) tal que f(p)=0
Mtodo de Biseccin
El Teorema de Bolzano proporciona un mtodo
para encontrar soluciones a una funcin continua
en un intervalo. Para ello basta con ejecutar los
pasos siguientes:
Mtodo de Biseccin
1. Dada una funcin continua f, determinar valores a y b,
tales que en uno la funcin es positiva, y en el otro
negativa.
2. Bisecar el intervalo [a,b] (hallar el punto medio del
intervalo) y llamar al punto medio p.
3. Calcular el valor de la funcin en p.
4. Sustituir uno de los extremos del intervalo por p.
Concretamente, aquel que tenga el mismo signo que
f(p). En este paso se tiene el mismo caso que al
principio, pero con un intervalo la mitad de ancho.
5. Realizar el proceso de biseccin tantas veces como
sea necesario, hasta que la anchura del intervalo sea
inferior a una tolerancia prefijada.
Ejercicio 4 Mtodo de Biseccin
Ejercicio 4 Mtodo de Biseccin
Crear una funcin de nombre biseccion, con argumentos
de entrada f, a, b y tol, y argumento de salida raiz, que
aproxime la raz de la ecuacin f(x)=0.

La funcin debe cumplir los siguientes requisitos:


1. Debe admitir cualquier funcin f que satisfaga el Teorema
de Bolzano.
2. Si f(a) y f(b) son del mismo signo, debe indicar que no es
posible encontrar una solucin en el intervalo I(a,b)
(aunque no estamos seguros de que no la haya, sino que
el mtodo no se puede aplicar).
3. Si f(a) y f(b) son de signos distintos, aplica el mtodo de
biseccin descrito y se presenta la solucin.
Ejercicio 4 Mtodo de Biseccin
A fin de generalizar la funcin biseccion para
cualquier funcin f, es conveniente realizar disear
una funcin (aparte de biseccion) para evaluar dicha
funcin f. Para ello, escriba una funcin del tipo:

function r = f(x)
% x es un valor real
r = ... % Aqu va la funcin a evaluar

Observacin: Otra alternativa posible es usar las funciones


feval o inline de matlab. Les recomiendo revisen la ayuda
para que entiendan como aplicarlas.
Ejercicio 4 Mtodo de Biseccin
Utilice el mtodo de la biseccin para hallar la
interseccin de las funciones:

2
f ( x) x 1
g ( x) tan( x), 0 x 3 /8
Observacin: grafique ambas funciones
superpuestas para que observe grficamente donde
se intersectan. Para ello utilice las funciones plot, y
hold on y hold off de matlab.
Funcin feval
[y1, y2, ...] = feval(function, x1, ..., xn). If function
is a quoted string containing the name of a
function (usually defined by an M-file), then
feval(function, x1, ..., xn) evaluates that function
at the given arguments. The function parameter
must be a simple function name; it cannot
contain path information.
Funcin Inline
Example 2
This example creates an inline function to represent the
formula. The resulting inline function can be evaluated with
the argnames and formula functions.

f = inline('3*sin(2*x.^2)')
f = Inline function: f(x) = 3*sin(2*x.^2)
argnames(f)
ans = 'x
formula(f)
ans = 3*sin(2*x.^2)

Você também pode gostar