Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Cálculo Numérico II
Grado en Matemáticas
Clases prácticas
Introducción a
MATLAB
Bucles
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
P
ermiten la repetición de un mismo tipo de cálculo
. Su estructur a gener al es: fo r k=n1:incremento:n2
(comandos a ejecutarse) end
EJEMPL
O:
Calcular los primeros cinco términos de
la sucesión
>> f o r k=1:5 >> a(k)=(k+1)^2/(k+3); >> end >> a a = 1.0000 1.8000 2.6667 3.5714 4 .5000Estructur
a
s condicionadas
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
P
ermiten controlar si una parte del progr
a
ma se ejecuta o no
dependiendo de una determinada condición. Existen v
a rias estructur a s: a) If simple: Si (condición) es v e rdader
a, se ejecutan los comandos entre
if y end . Si (condición) es f a
lsa, se continua en la sentencia después
de
end
.
if (condición)
(comandos que deben ejecutarse)
end
Estructur
a
s condicionadas
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
EJEMPL
O: Determinar cuando son reales las r
a
íces de la
ecuación de segundo gr
ado
>> v=input(‘Introduce a, b y c:’); >> a=v(1); b=v(2); c=v(3); >> discri=b^2-4*a*c; >> if (discri>=0) >>
disp(‘Las r
a
íces son reales’)
>> end Oper adores de relación y lógicos: Menor que <
Menor o igual que
<=
Mayor que
>
Mayor o igual que
>=
Igual a
==
Distinto de
Estructur
a
s condicionadas
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ ersidad de Sevilla b) If -else if (condición)
(comandos que se ejecutan si
(condición) es v e rdader a) else
(comandos que se dan si
(condición) es f alsa) end Si (condición) es v e rdader
a, se ejecutan los comandos entre
if y else . Si (condición) es f a
lsa, se ejecutan los comandos entre
else y end . Estructur a s condicionadas Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
EJEMPL
O: Determinar cuando son reales y cuando no
, las
ra
íces de la ecuación de segundo gr
ado
>> v=input(‘Introduce a, b y c:’); >> a=v(1); b=v(2); c=v(3); >> discri=b^2-4*a*c; >> if (discri>=0) >>
disp(‘Las r
a
íces son reales’)
>> else >>
disp(‘Las r
a
íces no son reales’)
Estructur
a
s condicionadas
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
c) If
-elseif
if (condición1)
(comandos que se ejecutan si
(condición1) es v e rdader a) elseif (condición2)
(comandos que se dan si
(condición2) es v e rdader a) end Si (condición1) es v e rdader
a, se ejecutan los comandos entre
if y elseif . Si (condición2) es v e rdader
a, se ejecutan los comandos
entre elseif y end . Pueden haber v a rios elseif Estructur a s condicionadas Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ ersidad de Sevilla EJEMPL O: Dada la ecuación Determinar cuando ha y una única r a íz real, cuando ha y dos ra
íces reales distintas o cuando no ha
y r
a
íces reales,
calculando las r
a
íces en los dos primeros casos.
>> v=input(‘Introduce a, b y c:’); >> a=v(1); b=v(2); c=v(3); >> discri=b^2-4*a*c; >> if (discri==0) >>
disp(‘Ha y una única r a iz real’) >> raiz=-b/(2*a) >> elseif (discri>0) >> disp(‘Las r a
ices son reales y distintas:’)
>> ra iz1=(-b+sqrt(disc))/(2*a) >> raiz2=(-b-sqrt(disc))/(2*a) >> else >> disp(‘Las r a
íces no son reales:’)
Estructur
a
s condicionadas
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
d)
While
while (condición) (comandos que se ejecutan mientr
as
(condición)
sea cierta)
end Se ejecutan los comandos entre
while y end , mientr a s que (condición) sea v e rdader a. La estructur a es la de un bucle, pero en v e
z de un contador tenemos una condición
Estructur
a
s condicionadas
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
EJEMPL
O:
Calcular la suma de todos los números
pares hasta 50
>> k=0; >> suma=0; >> while (k<=50) >> suma=suma+k; >> k=k+2; >> end >> suma
Funciones intrínsecas
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Son f
unciones que están pre-definidas en Matlab
.
Tienen nombres propios que no se pueden usar par
a
otr
a
s v
a
riables por el usuario
.
Ejemplos sin(x), cos(x), tan(x) asin(x), acos(x), atan(x)
(trigonométricas in v ersas) exp(x), log(x) (Logaritmo nepperiano), log10(x), log2(x) Funciones anónimas Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Son f
unciones que se definen de f
o
rma analítica por
el usuario
.
En oposición a las f
unciones intrínsecas de Matlab
.
Función de una v
a
riable:
f=@(x) expresion(x) Función de dos v
a
riables:
Funciones anónimas
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Ejemplos. >> f=@(x) sin(x^2)*exp(x) >> f(1) ans = 1.924743106107930 Función de dos v
a
riables:
>>g=@(x,y) sin(x)*cos(x) >>g(3,4) ans = -0.139707749099463
Dibujo de curv
as Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Se dibuja un conjunto de pares de puntos {(x_i,y_i)} Unidos por tr
azos o indicados por símbolos
plot(x,y
, ‘b’)
Donde: • x
es el tablero de abscisas, los x_i.
•
y
es el tablero de ordenadas, los y_i.
•
‘b’
indica que los tr
azos se dibujarán en azul
o
Se pueden usar otros colores:
‘r ’, ‘k’ , ‘y ’,… o símbolos: ‘*’ , ‘-’ ,... o
Se pueden escribir ley
e
ndas, comentarios en los ejes, incluir
Dibujo de curv
as Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Ejemplo >> x=linspace(0,2*pi,30) >> f=@(x) exp(x).*sin(x).^2 >> y=f(x) plot(x,y
, ‘b’)
M ficheros
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Son ficheros que contienen instrucciones Matlab
.
•
Son ejecutables desde la v
e
ntana de comandos escribiendo su
nombre. • Su nombre termina en .m. • Se pueden editar desde Matlab con la opción de menú “File>New>Script
”.
Ejemplo: Contenido del fichero “dibujo
.m”:
x=linspace(0,2*pi,30) f=@(x) exp(x).*sin(x).^2 y=f(x) plot(x,y
, ‘b’)
Funciones definidas mediante M ficheros
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Son f
unciones definidas por el usuario
. Se progr
a
man en
m-ficheros. • Deben tener el mismo nombre que la f
unción que definen.
•
El fichero debe comenzar por [Args salida] = f
uncion(Args entr ada) En gener a l: [y1,…yn]=f uncion(x1,…,xn). • T o
dos argumentos de salida (
y1,…,yn)
deben definirse dentro
de la f unción. • Los v a
lores de los argumentos de entr
ada ( x1,…,xm) deben darse al llamar la f unción desde la v e ntana de comandos: >> [y1,…yn]=f uncion(v1,…,vm)
Funciones definidas mediante M ficheros
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Ejemplo: Función que calcula la norma euclídea de un v
ector
.
Function y = normaeu(x) %Cálculo de la norma euclÌdea de un v
ector
y=0; n=length(x); for
i=1:n
Funciones definidas mediante M ficheros
Dpto
. Ecuaciones Diferenciales y Análisis Numérico
. Univ
ersidad de Sevilla
Ejemplo: Función que calcula la norma euclídea y la media de un vector
.
function [y
,z] = normmed(x)
%Cálculo de la norma euclÌdea y la media de un v
ector
y=0; z=0; n=length(x); for
i=1:n
y=y+x(i)*x(i);
z=z+x(i);