Sunteți pe pagina 1din 12

anapasigl

www.wuolah.com/student/anapasigl

4299

Leccion 0 - Notas sobre Matlab y Octave.pdf


temas de teoria 1-4

3º Métodos Matemáticos

Grado en Ingeniería de las Tecnologías de Telecomunicación

ETSI - Escuela Técnica Superior de Ingeniería


US - Universidad de Sevilla

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su
totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

MÉTODOS MATEMÁTICOS (Curso 2012-2013)


Grado en Ingeniería de Tecnologías de Telecomunicación (ETSI)
Departamento de Matemática Aplicada II. Universidad de Sevilla

Lección 0: Notas sobre Matlab y Octave


Índice
1. Aspectos Generales 2
1.1. Acceso a Matlab y Octave . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
1.2. Edición y variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Formatos numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Datos 3
2.1. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Direccionamiento y manipulación de matrices . . . . . . . . . . . . . . . . . 4
2.3. Operaciones básicas con matrices . . . . . . . . . . . . . . . . . . . . . . . . 5

3. Archivos y Programación 5
3.1. Archivos de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Archivos de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3. Subfunciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4. Órdenes de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4. Grácas 9
4.1. Grácas bidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Grácas tridimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

2 Lección 0.- Notas sobre Matlab y Octave

1. Aspectos Generales
El material expuesto en esta lección debe entenderse solamente como una sencilla intro-
ducción a aquellos aspectos de los programas Matlab y Octave que van a ser utilizados
repetidamente durante el curso. Puesto que la diferencia entre ambos entornos es realmente
mínima, la exposición se desarrollará para Matlab, con algún que otro comentario sobre
Octave si fuera preciso.
Sin duda, es muy recomendable profundizar en algunas de las cuestiones aquí tratadas,
especialmente en todo lo relacionado con el manejo de archivos *.m y con la programación.
Para ello, puede consultarse cualquiera de los textos mencionados en el proyecto docente de
la asignatura.

1.1. Acceso a Matlab y Octave

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
En las distintas aulas del Centro de Cálculo de la ETSI se puede acceder a las licencias
(son un número limitado) de Matlab adquiridas por la Universidad de Sevilla. Casi todos
los ordenadores del Centro de Cálculo permiten trabajar con Matlab y, para ello, basta
seguir las correspondientes instrucciones del propio Centro de Cálculo de la Escuela.
Octave es un entorno computacional altamente compatible con Matlab con la impor-
tante diferencia de que se distribuye como software libre. Puede ejecutarse bajo Windows,
Linux y MacOS entre otros sistemas operativos. Si bien inicialmente, el manejo de este
programa es por línea de códigos, existen numerosas interfaces grácas de usuario, como
qtoctave, que permiten generar un entorno amigable de trabajo con este programa. En cual-
quier caso, para usuarios de Windows, se recomienda descargar GNU Octave-edición
UPM de la página WEB

http://mat.caminos.upm.es/octave/

donde profesores de la Universidad Politécnica de Madrid han diseñado una plataforma


realmente cómoda y sencilla para usar Octave.

1.2. Edición y variables


Matlab nos indica que está a la espera de nuestras instrucciones cuando aparece el
símbolo >> (prompt ). Para salir de Matlab basta teclear exit o quit y para ejecutar
cualquier instrucción, pulsar la tecla Return . Hemos de tener en cuenta que una instrucción
termina al cambiar de línea. Si necesitamos escribir más de una línea, debemos poner el
símbolo ... (tres puntos) al nal de la misma y continuar en la siguiente línea. Si lo que
queremos es escribir varias instrucciones dentro de la misma línea, basta separarlas por
comas.
El cursor se posiciona con las echas izquierda/derecha ← , → y para borrar caracteres

pueden usarse las teclas Backspace o Supr . Si lo que se desea es borrar toda la línea de

edición puede usarse la tecla Esc . También son accesibles otras posibilidades de edición en

línea (de signicado completamente intuitivo) con las teclas Inicio , Fin o Insert . Otra

opción muy útil es usar las echas arriba/abajo ↑,↓ para recuperar las órdenes previas. De
esta manera, se puede recuperar una línea anterior de órdenes, editarla y ejecutarla revisada.
Para limpiar completamente la pantalla se utiliza la orden clc.

¿Quieres triunfar en tus estudios? Conoce el método para lograrlo


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

Datos 3

Conviene precisar que los paréntesis ( ) y los corchetes [ ] tienen signicados bien
distintos en Matlab. Los primeros se utilizan para evaluar funciones y los segundos para
denir vectores o matrices.
El resultado de ejecutar en Matlab cualquier expresión matemática se guarda, caso de
no asignarle ningún nombre, en una variable denominada ans (de answer ), la cual se muestra
inmediatamente en pantalla y toma como valor el correspondiente resultado. Si deseamos
que el resultado de nuestra operación no aparezca en pantalla, basta teclear al nal de la
expresión el símbolo ; (punto y coma).

Ejercicio 1. Para este ejercicio, se recomienda usar las órdenes help y lookfor. Compruebe
que Matlab permite determinar el máximo común divisor (greatest common divisor ) de dos
enteros. Determine el máximo común divisor del par (30,24).

 ⋄ 

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
>> lookfor divisor
>> gcd(30,24)

1.3. Formatos numéricos


Para visualizar los resultados, Matlab ofrece numerosas posibilidades aunque, por de-
fecto, representa los números en pantalla con redondeo a cuatro cifras decimales. También
decide si representa un número en notación convencional (coma ja) o en notación cientíca
(coma otante). La orden básica para la representación en pantalla es format.
Es fundamental entender que Matlab no cambia la representación interna de un número
cuando se escogen diferentes formatos, sólo modica su visualización.

Ejercicio 2. Escriba el número π en varios formatos de Matlab.

 ⋄ 

>> format short, pi


>> format long, pi
>> format shorte, pi
>> format longe, pi

2. Datos
2.1. Matrices
En Matlab se trabaja fundamentalmente con matrices. De hecho, para Matlab, los
números son simplemente matrices cuadradas de orden uno. Las matrices pueden denirse
de diversas maneras. Las dos más usuales son:

Escribir la matriz entre corchetes, colocando las las una a continuación de otra, sepa-
radas por el símbolo ;. Entre los elementos de una misma la podemos colocar una
coma o dejar un espacio en blanco.

Sevilla Language Center – MY FRIEND THINKS YOU ARE PRETTY


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

4 Lección 0.- Notas sobre Matlab y Octave

Escribir la matriz entre corchetes, colocando cada la en un renglón distinto.

Matlab incluye una orden muy útil para generar vectores cuyas coordenadas están en
progresión aritmética. En concreto, la estructura a:b:c crea un vector entre los números a y
c, incrementando cada coordenada con el número b. Si sólo se escribe a:c se considera que b
es igual a uno.

Ejercicio 3.

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Genere tres vectores cuyos elementos representen una partición del intervalo
[-1,1] en cinco, ocho y diez subintervalos iguales. Con las tres primeras coordenadas de cada
uno de ellos, genere las tres las de una matriz 3×3 y calcule el determinante de dicha
matriz.

 ⋄ 

>> p5=-1:2/5:1;
>> p8=-1:2/8:1;
>> p10=-1:2/10:1;
>> A=[p5(1:3);p8(1:3);p10(1:3)]
>> det(A)

2.2. Direccionamiento y manipulación de matrices


Para seleccionar un elemento determinado de una matriz se escribe el nombre de la matriz
seguido del número de la y columna separados por una coma y entre paréntesis.
Si se desea extraer una submatriz, basta colocar en vez de números, vectores cuyas com-
ponentes son los números de las correspondientes las y columnas. El símbolo dos puntos es
muy útil para crear submatrices. Cuando no se le dan valores a derecha e izquierda recorre,
por defecto, todas las las o columnas. Si colocamos datos fuera del rango actual de una
matriz se rellenan con ceros las zonas no especicadas.

Ejercicio 4. Obtenga de cuatro maneras distintas la submatriz formada por la segunda y


la tercera la de la siguiente matriz
 
1 1 1 1
 1 2 2 2 
A=
 1
.
2 3 3 
1 2 3 4
 ⋄ 

>> A=[1 1 1 1;1 2 2 2;1 2 3 3;1 2 3 4]


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

La última opción no debe emplearse si se desea conservar la matriz A.


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

Archivos y Programación 5

2.3. Operaciones básicas con matrices


Para trabajar con matrices y vectores, Matlab cuenta con una serie de operaciones
básicas que citamos a continuación. En todas ellas es fundamental el que las dimensiones
sean las adecuadas.

El símbolo + para sumar matrices y el - para restar matrices.

El símbolo * para multiplicar matrices. Si el símbolo lo precedemos de un punto se


obtiene la multiplicación coordenada a coordenada.

El símbolo ^ para la potenciación de matrices. Con el punto delante se obtiene la


operación coordenada a coordenada.

El símbolo ./ para dividir dos matrices coordenada a coordenada. Cuando una de

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
ellas es un número puede quitarse el punto.

Funciones elementales sobre vectores/matrices (de signicado completamente intuitivo


en inglés): max, min, sort, sum, size,...
Además, Matlab incorpora funciones que permiten generar matrices que surgen con
frecuencia en los cálculos: eye, zeros, ones, diag, rand, randn, ...

Ejercicio 5. Escriba las matrices A y B denidas por

A(i, j) = 10(i − j) + 1; i, j = 1, ..., 10.


{
1, i−j =1
B(i, j) = , i, j = 1, ..., 40.
0, en otro caso
 ⋄ 

>> A=[1:10]'*ones(1,10); A=10*(A-A')+1


>> B=[zeros(1,40);eye(39,40)]

3. Archivos y Programación
Tanto para trabajar con datos de cierto tamaño, como para diseñar nuevas funciones
en Matlab, es completamente imprescindible trabajar con M-archivos (archivos ASCII con
extensión *.m). De hecho, una parte importante de cada sesión con Matlab es crear y
renar este tipo de archivos. Atendiendo a su uso, los M-archivos suelen dividirse en dos
grandes grupos: archivos de instrucciones o tipo script y archivos de funciones.

3.1. Archivos de instrucciones


Un M-archivo de este tipo consiste en una sucesión de instrucciones de Matlab. Para
ejecutarlas y ver el correspondiente resultado en pantalla, basta escribir el nombre del archivo
(sin la extensión) y pulsar Return . Las variables en un archivo de instrucciones son globales
y, por tanto, pueden afectar a los valores de las variables que se hayan creado durante la
sesión de trabajo con Matlab.

¿Quieres triunfar en tus estudios? Conoce el método para lograrlo


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

6 Lección 0.- Notas sobre Matlab y Octave

Los archivos de instrucciones son utilizados, por ejemplo, para introducir datos en ma-
trices de grandes dimensiones, pues en un archivo de este tipo es fácil corregir errores sin
repetir todo el trabajo.

Ejercicio 6. Obtenga la matriz cuadrada de orden veinte tal que los elementos de su diagonal
son todos iguales a 3 y las dos subdiagonales principales están formadas por unos. Calcule
su determinante. Posteriormente cambie la diagonal por el vector cuyas coordenadas son los
primeros veinte números naturales y vuelva a calcular el determinante de la nueva matriz.

 ⋄ 
Trabajamos con un archivo de instrucciones denominado prueba.m

u=ones(20,1);
A=3*diag(u)+diag(u(1:19),1)+diag(u(1:19),-1);

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
det(A)

>> prueba

u=ones(20,1);
v=1:20;
A=diag(v)+diag(u(1:19),1)+diag(u(1:19),-1);
det(A)

>> prueba

3.2. Archivos de funciones


Los M-archivos de funciones son los que permiten incrementar la colección de funciones
que ejecuta Matlab. Es decir, se pueden crear funciones especícas para algún problema
concreto y, a partir de su introducción, dichas funciones tienen el mismo rango que las
funciones del sistema y se ejecutan de igual forma. Las variables en los archivos de funciones
son locales, es decir, no afectan a los valores de las variables que se hayan creado durante la
sesión de trabajo con Matlab.
El nombre de un archivo de función debe ser el nombre de la función seguido, obviamente,
de la extensión *.m. La primera línea de un archivo de este tipo debe ser como sigue:

function [argumentos de salida]=nombre de la función(argumentos de entrada).

A continuación, puede haber diversas líneas de comentario que han de estar precedidas
necesariamente por el símbolo  %. Conviene decir que son precisamente estas líneas las que
aparecerán en pantalla al usar la orden help. Finalmente, aparece el programa, esto es, las
instrucciones necesarias para poder evaluar la función.
Tanto los argumentos de entrada como los de salida no son obligatorios y, si no aparecen,
no hace falta escribir los correspondientes corchetes o paréntesis.
Para hacerse una idea de las órdenes que incorpora Matlab en un cierto área, puede
usarse la orden lookfor seguida de una cierta palabra. Por ejemplo, si esa palabra es eigen-
value, obtenemos un listado de aquellas órdenes relacionadas con el cálculo de autovalores.

Sevilla Language Center – MY FRIEND THINKS YOU ARE PRETTY


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

Archivos y Programación 7

Ejercicio 7. Diseñe una función que devuelva el producto escalar de dos vectores x e y de
Rn . Los argumentos de entrada deben ser los vectores x e y. Además, el correspondiente
archivo debe incluir algunas líneas de comentario.

 ⋄ 

function p=L00_ejer_07(x,y)
% Esta funcion calcula el producto escalar de dos vectores x e y
x=x(:);
y=y(:);
p=x'*y;
end

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
3.3. Subfunciones
Cualquier función puede incluir subfunciones. Esto es, en un mismo chero se pueden
incluir funciones adicionales (o subfunciones) con nombres diferentes del nombre de la función
principal. Estas subfunciones sólo pueden ser llamadas por las funciones contenidas en ese
archivo, resultando invisibles para otras funciones externas.
Las subfunciones son particularmente útiles en el manejo de métodos numéricos que
actúan sobre funciones. Por citar un ejemplo, mencionamos que el cálculo numérico de inte-
grales en Matlab se realiza mediante la orden quadl (QUADrature of Lobatto ) y uno de
sus argumentos es la función a integrar.

Ejercicio 8. Utilizando la orden quadl y para a = 10, obtenga una tabla con los valores de
las siguientes quince integrales

∫ 1
xn
In = dx, n = 1, 2, . . . , 15.
0 a+x
 ⋄ 

function L00_ejer_08(a,n)
for k=1:n
Q=quadl(@(x)fun(x,a,k),0,1);
fprintf('Int(%2.0f)=%16.15f\n',k,Q)
pause(0.1)
end
function y=fun(x,a,k)
y=(x.^k)./(a+x);
end
end

¿Quieres triunfar en tus estudios? Conoce el método para lograrlo


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

8 Lección 0.- Notas sobre Matlab y Octave

3.4. Órdenes de control


Como cualquier lenguaje de programación, Matlab dispone de instrucciones de control
para realizar (o romper) bifurcaciones, repeticiones y bucles. Las bifurcaciones permiten
realizar distintas operaciones, según se cumpla o no una determinada condición lógica. Para
su diseño, Matlab incorpora las órdenes if y switch. Por otro lado, los bucles y repeticiones,
permiten hacer las mismas o análogas operaciones sobre datos distintos; regidos por una
cierta condición lógica en el caso de los bucles y recorriendo unos ciertos valores previamente

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
dados, en el caso de las repeticiones. Para generar repeticiones, Matlab dispone de la orden
for y para generar bucles de la orden while.
La orden for. La sintaxis para la utilización de esta orden de control es

 for variable=vector
instrucciones sobre la variable

end

El signicado es el siguiente: mientras la variable recorre los valores del vector, se


realizan las instrucciones descritas, con la variable tomando dichos valores. Matlab
permite anidar varias órdenes for.

Ejercicio 9. Dada una matriz cuadrada de orden n, diseñe una función, usando la instrucción
for, que sume los elementos de mayor módulo de cada una de las columnas de dicha matriz.
 ⋄ 

function s=L00_ejer_09(A)
[~,n]=size(A);
s=0;
for j=1:n
[~,i]=max(abs(A(:,j)));
s=s+A(i,j);
end
end

La orden if. La sintaxis habitual para la utilización de esta orden de control es




 if relación lógica P1 


 instrucciones Q1 
else



 instrucciones Q2 

end

El signicado es el siguiente: si P1 es cierto se ejecutan las instrucciones Q1 y si P1 es


falso se ejecutan las instrucciones Q2 . Las líneas tres y cuatro anteriores pueden suprimirse
y, en este caso, cuándo P1 sea falso, no se ejecuta ninguna instrucción.

Ejercicio 10. Diseñe una función que calcule todos los divisores de un número natural dado.
 ⋄ 
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

Grácas 9

function d=L00_ejer_10(n)
d=[];
for i=1:n
if rem(n,i)==0
d=[d,i];
end
end
end

La orden while. La sintaxis para la utilización de esta orden de control es



 while relación lógica
instrucciones

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
end

El signicado de este esquema es que las instrucciones se irán ejecutando mientras la


relación lógica sea cierta.

∑∞
Ejercicio 11. Un famoso resultado de L. Euler (1707-1783) arma que
1 π2
n=1 n2 = 6 .
Obtenga el menor número de sumandos de la serie anterior, de modo que la correspondiente
π2 −6
suma nita aproxime con un error menor o igual que 10 .
6

 ⋄ 

function n=L00_ejer_11(tol)
s=0;
n=1;
e=1;
while e > tol
s=s+1/n^2;
e=abs(s-pi^2/6);
n=n+1;
end

>> L01_ejer_11(1e-6)

4. Grácas
Para mostrar las correspondientes grácas, Matlab abre una nueva ventana, la deno-
minada ventana de gura. Si ya hubiera una, se borra la actual y se dibuja en ella la nueva
gráca. Para utilizar dos o más grácas en diferentes ventanas, se usa la ordengure. La
orden gure(n) muestra, o crea si no la hay, la ventana de gura n-ésima y ésta pasa a ser
la ventana de gura activa. La orden close cierra la ventana gráca activa.

Sevilla Language Center – MY FRIEND THINKS YOU ARE PRETTY


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4500

10 Lección 0.- Notas sobre Matlab y Octave

4.1. Grácas bidimensionales


Para obtener grácas 2-D, Matlab admite cuatro opciones: grácas en coordenadas
cartesianas, grácas en coordenadas polares, grácas de barras y grácas de escaleras. La
orden para representar datos bidimensionales en coordenadas cartesianas es plot, para crear
grácas en coordenadas polares es polar y, nalmente, los grácos de barras y escaleras se
generan usando las órdenes bar y stairs, respectivamente.
La orden plot escala los ejes para ajustar los datos, representa los puntos y, a continua-
ción, conecta los puntos con una línea recta. También añade una escala numérica y coloca
de forma automática marcas en ambos ejes.

Ejercicio 12. Dibuje la gráca de la función exponencial en el intervalo [-2,2]. Obtenga una
segunda gráca donde a la curva anterior se le añada la recta tangente en x = 0.

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 ⋄ 

function L00_ejer_12
x=-2:0.01:2;
figure(1)
plot(x,exp(x));
xlabel('x');
ylabel('y');
title('Curva y=e^x');shg
pause
figure(2)
plot(x,exp(x),x,1+x,'r')
xlabel('x');
ylabel('y');
title('Curva y=e^x y recta tangente y=1+x en x=0');
legend('y=e^x','y=1+x','Location','SouthEast');shg
end

4.2. Grácas tridimensionales


Para obtener grácas 3-D, Matlab admite tres opciones: grácas de líneas, grácas de
supercies y grácas de contorno. La orden básica para realizar grácas de líneas es plot3,
las órdenes para grácas de supercies son mesh y surf y, nalmente, para grácas de
contorno es contour.

¿Quieres triunfar en tus estudios? Conoce el método para lograrlo

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