Matlab Manual Corto

36
APUNTES DE MATLAB Ingenier´ ıa T´ ecnica Industrial. En estas breves notas, se pretende dar un primer paso en el aprendizaje del uso de MATLAB (Matrix Laboratory). Hemos dividido este trabajo en las siguientes secciones: Comandos b´asicos. Variables Vectores. polinomios y matrices. Gr´aficas2D. Gr´aficas3D. C´alculosimb´ olico. Programaci´on con Matlab. 1 Comandos b´ asicos. Variables. Hagamos algunas consideraciones generales: Para salir del programa: File Exit Matlab ( o escribiendo >> exit) Las ´ordenes se escriben a continuaci´ on del prompt >> Ejemplo: >> 2 b 3 Tambi´ en se puede asignar el valor a una variable: >> x=5+3 b 2 Se pueden utilizar las funciones matem´aticas habituales. >> sqrt(2) 1

Transcript of Matlab Manual Corto

Page 1: Matlab Manual Corto

APUNTES DE MATLABIngenierıa Tecnica Industrial.

En estas breves notas, se pretende dar un primer paso en el aprendizaje deluso de MATLAB (Matrix Laboratory).Hemos dividido este trabajo en las siguientes secciones:

• Comandos basicos. Variables

• Vectores. polinomios y matrices.

• Graficas 2D.

• Graficas 3D.

• Calculo simbolico.

• Programacion con Matlab.

1 Comandos basicos. Variables.

Hagamos algunas consideraciones generales:

• Para salir del programa: File Exit Matlab ( o escribiendo >> exit)

• Las ordenes se escriben a continuacion del prompt >>Ejemplo:>> 23

Tambien se puede asignar el valor a una variable:>> x=5+32

Se pueden utilizar las funciones matematicas habituales.>> sqrt(2)

1

Page 2: Matlab Manual Corto

Calculos/comandos encadenados:>> x=sin(3),y=cos(10),z=tan(8)

Y si no caben en un renglon>> x=sin(10),...z=3*6

• MATLAB distingue entre mayusculas y minusculas.Si se anade un punto y coma (;) al final de la instruccion, la maquinano muestra la respuesta... pero no por ello deja de realizarse el calculo.Los comentarios deben ir precedidos por % o, lo que es lo mismo,MATLAB ignora todo lo que vaya precedido por el sımbolo %.

• Operadores: +, −, ∗, /, .Las operaciones se evaluan por orden de prioridad: primero las poten-cias, despues las multiplicaciones y divisiones y, finalmente, las sumasy restas. Las operaciones de igual prioridad se evaluan de izquierda aderecha.

• La ayuda de MATLAB es bastante util; para acceder a la misma bastateclear help. Es recomendable usarlo para obtener una informacionmas precisa sobre la sintaxis y diversas posibilidades de uso de loscomandos.>> helpwin>> help det>> lookfor rota

• Formatos numericos: El usuario puede controlar el numero de decimalescon que aparece en pantalla el valor de las variables, sin olvidar que ellono esta relacionado con la precision con la que se hacen los calculos,sino con el aspecto con que estos se muestran.Para cambiar la presentacion del valor de la variable se usa el comandoformat o bien en File Preferences Numeric Format>> 1/3

>> format long

2

Page 3: Matlab Manual Corto

>> 1/3

Los mas usuales son:>> format long>> format short e>> format long e>> format short>> format rat>> format +La instruccion format vuelve al formato estandar que es el de 4 cifrasdecimales. La representacion interna del numero siempre es la misma.

• Variables:

Para conocer el valor de una variable, basta teclear su nombre. Paraconocer las variables que se han usado hasta el momento se utiliza elcomando who:

>> who

o, si se quiere mas informacion:

>> whos

Para deshacerse de una variable

>> clear y

Los calculos que no se asignan a una variable en concreto se asignan ala variable de respuesta por defecto que es ans (del ingles, answer).

Sin embargo, si el calculo se asigna a una variable, el resultado quedaguardado en ella.

MATLAB tiene definida variables con valor predeterminado.

Por ejemplo:

pi El valor del numero π.

3

Page 4: Matlab Manual Corto

Inf Infinito, aparece si hacemos 1/0.

NaN Mensaje de error (Not a Number), por ejemplo 0/0.

eps Epsilon de la maquina (observese que MATLAB trabaja en dobleprecision).

>>eps

ans = 2.2204e-016

pero...

estos se pierden si se les asignan otro valor distinto.

>> eps=7

eps = 7

La unidad imaginaria se representa en MATLAB como i o j.

2 Vectores, polinomios y matrices

2.1 Vectores

Para definir un vector fila, basta introducir sus coordenadas entre corchetes:>> v=[1 2 3]>> w=[4 5 6];

El operador ′ es el de trasposicion para matrices reales y conjugacion ytrasposicion para matrices complejas. Nos permite definir vectores columnas:>> w ′

(La comilla ′ es la que, en un teclado estandar, se encuentra en la tecla delsigno de interrogacion.)

Si queremos declarar un vector de coordenadas equiespaciadas entre dos

4

Page 5: Matlab Manual Corto

dadas, por ejemplo, que la primera valga 0, la ultima 20 y la distancia entrecoordenadas sea 2, basta poner:>> vect1=0:2:20vect1 = 0 2 4 6 8 10 12 14 16 18 20

Equivalentemente, si lo que conocemos del vector es que la primera coor-denada vale 0, la ultima 20 y que tiene 11 en total, escribiremos:>> vect2=linspace(0,20,11)vect2 = 0 2 4 6 8 10 12 14 16 18 20

A las coordenadas de un vector se accede sin mas que escribir el nombredel vector y, entre parentesis, su ındice:>> vect2(3)

y se pueden extraer subvectores, por ejemplo:>> vect2(2:5)o,>> vect1(:)

Las funciones matematicas elementales estan definidas de forma que se puedenaplicar sobre vectores. El resultado es el vector formado por la aplicacion dela funcion a cada elemento del vector. Ası:>> log(v)Vector definido como el producto de un vector por un escalar>> p=(0:0.1:1)*pi>> x=sin(p)

Las operaciones habituales entre vectores (suma, resta y producto escalarde vectores; suma, resta, producto y potencia de matrices) se representancon los operadores habituales:>> v,w>> z=v*w’>> Z=w’*v>> v*w

5

Page 6: Matlab Manual Corto

??? Error using ==¿ * Inner matrix dimensions must agree.

Tambien pueden efectuarse multiplicaciones, divisiones y potencias devectores, entendiendolas como elemento a elemento (como, de hecho, se re-alizan la suma y la resta). El operador utilizado para ellas es el habitualprecedido por un punto (.); es decir:>> v.*w>> w./v>> v. 2

Finalmente, tambien pueden calcularse longitud, producto escalar, productovectorial, etc:>> length(v)>> dot(u,v)>> cross(u,v)

2.2 Variables logicas

Tambien existen variables logicas que toman los valores 0 (falso) o 1 (ver-dadero). Por ejemplo:

Vector logico cuyas coordenadas valen 1 si la coordenada correspondientede v es mayor o igual que 2 y 0 si no lo es

>> abs(v) >= 2

Vector formado por la coordenadas de v que verifican la desigualdad

>> vector = v(abs(v) >= 2)

Asignacion de un valor logico (el doble signo igual es el igual logico)

>> v2=[3 2 1]

>> logica=v==v2

6

Page 7: Matlab Manual Corto

Distinto (∼ es el operador de negacion)

>> logic2 = v ∼= v2

2.3 Polinomios

Se puede trabajar con polinomios: basta tener en cuenta que un polinomiono es mas que un vector. El orden de los coeficientes es de mayor a menorgrado, por ejemplo:

Polinomio x4 + 2x2 + 3>> p=[1 0 2 0 3]

Polinomio 2x2 + x>> q=[2 1 0]

MATLAB tiene funciones especıficas para polinomios como:

Evaluacion del polinomio x4 + 2x2 + 3 en x = −1

>>polyval(p,-1)

Producto de los polinomios p y q

>>pro=conv(p,q)

Cociente entre pro y p; obviamente el resultado es q

>> deconv(pro,p)

Raıces del polinomio pro

>> roots(pro)

Polinomio monico (aquel cuyo coeficiente principal es 1) que tiene porraıces a los numeros i, −i, 0.5 y π

7

Page 8: Matlab Manual Corto

>> poly([i -i 1/2 pi])

2.4 Matrices

Las matrices se escriben como los vectores, pero separando las filas medianteun punto y coma; ası una matriz 3x3:>> M=[1 2 3;4 5 6;7 8 9]

Su traspuesta (en el caso de matrices reales), su traspuesta y conjugada (en el caso de matrices complejas) es:>> N=M ′

Podemos realizar las operaciones usuales, suma, diferencia, producto, po-tencia, rango, determinante, inversa>> S=M+N, M*N>> S3>> rank(M),inv(M)>> det(N)

Para visualizar graficamente la matriz>> spy(M)

Podemos construir matrices con otros vectores ya definidos>> mat=[v;w;0 0 1]

A los elementos de una matriz se accede sin mas que escribir el nombrede la matriz y, entre parentesis, los respectivos ındices:Elemento en la primera fila y tercera columna de la matriz mat>> mat(1,3)

Tambien se puede acceder a un fila o columna completas, por ejemplo ala segunda columna de mat

8

Page 9: Matlab Manual Corto

>> mat(:,2)

O a su segunda fila>> mat(2,:)

Y tambien podemos acceder a la matriz como si fuera una columna. Porejemplo: los elementos segundo a septimo de la matriz como columna son>> M(2:7)

O podemos acceder a cualquiera de sus submatrices. Por ejemplo el comandoque obtiene la submatriz formada por los elementos que estan en ”todas”lasfilas que hay entre la segunda y la tercera y en las columnas primera y tercerade la matriz mat es>> mat(2:3,[1 3])

Existen algunas matrices definidas previamente; por ejemplo, la matriz iden-tidad,>> eye(5)

O la matriz de ceros>> zeros(3)

O la matriz cuyos elementos valen todos 1:>> ones(4)

Se puede conocer el tamano de una matriz>> size(mat)

Existen comandos que permiten crear de forma sencilla matrices. Por ejem-plo:Matriz diagonal cuya diagonal es el vector v>> diag(v)

Matriz diagonal con la diagonal de M. La sentencia diag(M) da el vector

9

Page 10: Matlab Manual Corto

formado por la diagonal de la matriz M>> diag(diag(M))

Matriz tridiagonal 5x5 con 0 en la diagonal principal y 1 en la sub y su-perdiagonal

>> diag(ones(1,4),1)+diag(ones(1,4),-1)

Indicacion: Ver ficheros .m en 6.1

Ejercicios

Vectores

1. (a) Definir un vector fila de 10 elementos (valores reales), tal que ladiferencia entre dos elementos consecutivos sea igual a 0.5. Nom-bre a a ese vector.

(b) Defina un vector columnna b de longitud 10, y cuyos elementossean los elementos de a elevados al cuadrado.

(c) Halle el producto escalar a.b.

2. (a) Crear un vector cuyo primer elemento sea 50, el ultimo 480 y talque la diferencia entre dos elementos cualesquiera sea 3.

(b) Hallar el numero de elementos del vector definido en el apartadoanterior.

3. Sean los vectores filas u y v definidos de la siguiente forma:u=[10,-11,12], w=[2,1,3].

(a) Halle el producto escalar entre u y w, y el producto elemento aelemento entre u y w. ¿Cual es la diferencia entre ambos produc-tos?

(b) La norma euclideana de un vector v es ||v|| =√∑n

i=1 |vi|2, dondev = (v1, v2, ..., vn). Calcule la norma del vector u definido en (a) de

10

Page 11: Matlab Manual Corto

dos formas distintas. ¿Existe una funcion predefinida en matlabpara determinar la norma de un vector? ¿Como podrıa determi-narlo?

(c) El angulo θ formado entre dos vectores x e y se define a partir de:

cos θ =x.y

||x||||y||,

donde x.y es el producto escalar entre ambos vectores. Apliqueesta formula para determinar el angulo entre u y w.Exprese el angulo en grados.

Matrices

1. Defina una matriz A (3x5) tal que la primera fila este formada por losenteros consecutivos entre 1 y 5, la segunda fila por los enteros entre 6y 10, y la tercera por los enteros entre 11 y 19 con incremento 2.

(a) Halle la matriz transpuesta de A.

(b) Defina una matriz cuyos elementos sean unos, y de las mismasdimensiones que A.

(c) Compruebe si la siguiente matriz B es simetrica (una matriz essimetrica cuando es igual a su transpuesta).

B =

2 −1 0−1 2 −10 −1 2

(d) Halle el producto matricial entre B y A.

2. Sea la matriz

J =

1 2 3 45 6 7 89 10 11 1220 0 5 4

11

Page 12: Matlab Manual Corto

(a) Defina un vector formado por la tercera columna de J.

(b) Defina un vector igual a la cuarta fila de J.

(c) Defina una matriz (4x2) formada por la segunda y tercera colum-nas de J.

(d) Defina una matriz (2x2) formada por los elementos de la segunday tercera filas y la segunda y tercera columnas de J.

3 Graficas 2D.

MATLAB tiene un gran potencial de herramientas graficas.

3.1 Graficas de funciones y = f(x)

Para representar graficamente una funcion, por ejemplo y = sen (x), se siguenlos siguientes pasos:

En primer lugar generamos los valores:

>> x=linspace(0,2*pi,10);

Sustituimos en la funcion:

>> y=sin(x);

Y dibujamos la grafica con el comando plot:

>> plot(x,y)

Por defecto une los puntos (x(i),y(i)) mediante una poligonal. Con pocospuntos la grafica tiene un aspecto demasiado lineal a trozos. Para evitarlo,basta tomar mas puntos.

>> x=linspace(0,2*pi,100);

12

Page 13: Matlab Manual Corto

>> y=sin(x);

>> plot(x,y)

Tambien pueden dibujarse funciones con el comando fplot. Este comandogenera los valores de la variable independiente automaticamente.

Dibuja la funcion seno en el intervalo [0,2*pi]

>> fplot( ′ sin(x) ′ ,[0 2*pi])

3.1.1 Superposicion de graficas

El comando hold on mantiene en la ventana grafica los dibujos anteriores

Dibuja sobre la grafica anterior la funcion cos(x).

>> hold on

>> fplot( ′ cos(x) ′ ,[0 2*pi])

El comando hold off desactiva la superposicion de graficos.

>> hold off

Dibuja la funcion x2 sen (1/x):

>> fplot( ′ x2*sin(1/x) ′ ,[-0.05 0.05])

Podemos tambien dibujar dos graficas en la misma ventana creando dosfunciones y dibujandolas.

>> x=linspace(0,2*pi,100);

>> y=sin(x);

>> z=cos(x);

>> plot(x,y,x,z)

13

Page 14: Matlab Manual Corto

3.1.2 Estilos de lıneas y color.

Por ejemplo,

>> plot(x,y, ′m+′ )

>> plot(x,y, ′g*′ )

>> plot(x,y, ′yd′ ,x,z, ′r–′ )

Para ver todos los estilos, teclea

>> help plot

Para poner una malla:

>> grid on

Para desactivarla

>> grid off

Para modificar los ejes que aparecen por defecto, usamos el comandoaxis, con el siguiente formato:

>> axis([xmin xmax ymin ymax]).

Por ejemplo,

>> axis([-1 1 -1 1])

Para que vuelvan a la situacion inicial:

>> axis auto

Para ”cuadrar” los ejes:

>> axis square

14

Page 15: Matlab Manual Corto

3.1.3 Etiquetado de graficas.

Ejemplo:

>> x=linspace(-3,3,500);

>> y=exp(-x.2);

>> z=2*exp(-x.2);

>> plot(x,y, ′ - ′ ,x,z, ′ – ′ ) % dibujamos

>> title ( ′ Campanas de Gauss ′ )% tıtulo

>> xlabel ( ′ Eje de Abscisas ′ ) % eje horizontal

>> ylabel ( ′ Eje de Ordenadas ′ ) % eje vertical

y por ultimo anadimos un texto explicativo de cada uno de los graficoscon el comando legend

>> legend ( ′ exp(-x2) ′ , ′ 2*exp(-x2) ′ )

Para insertar texto sobre un punto cualquiera de la ventana, (En lasnuevas versiones esto se puede hacer directamente sobre la ventana):

>> gtext( ′ texto ′ )

3.1.4 Comando subplot

El comando subplot sirve para dibujar varios graficos en una misma ventana.

Ejemplo:

>> x=linspace(-2,2,100);

>> y1=x;y2=x.2; y3=x.3; y4=x.4;

>> subplot(2,2,1), plot(x,y1), title( ′ y=x ′ )

15

Page 16: Matlab Manual Corto

>> subplot(2,2,2), plot(x,y2), title( ′ y=x2 ′ )

>> subplot(2,2,3), plot(x,y3), title( ′ y=x3 ′ )

>> subplot(2,2,4), plot(x,y4), title( ′ y=x4 ′ )

3.2 Curvas en parametricas

Dibujar la curva dada por:

{

x(t) = (1/t) cos(t)y(t) = (1/t) sen (t)

; t ∈ [1, 100]

>>t=linspace(1,100,10000);

>>x=(1./t).*cos(t); y=(1./t).*sin(t);

>> plot(x,y)

Podemos dibujar las curvas y sus vectores tangentes utilizando el comandoquiver

>> t=linspace(0,2*pi,1000);

>> x=3*cos(t); y=2*sin(t);

>> plot(x,y), hold on

>> t=linspace(0,2*pi,30);

>> x=3*cos(t);y=2*sin(t);

>> dx=-3*sin(t);dy=2*cos(t);

>> quiver(x,y,dx,dy)

16

Page 17: Matlab Manual Corto

3.3 Curvas en implıcitas

El comando ezplot dibuja curvas como plot en cartesianas y parametricasde una manera mas sencilla ya que genera automaticamente los valores de lavariable independiente. Tambien se utiliza para dibujar curvas en implıcitas.Utiliza el intervalo [−2π, 2π] por defecto.

>> ezplot( ′ cos(x) ′ )

Tomando otro intervalo en la variable independiente:

>> ezplot( ′ sin(1/x) ′ , [ 0 , pi ])

Podemos tomar un intervalo en la variable independiente y otro en ladependiente:

>> ezplot( ′ sin(1/x) ′ , [ 0, pi, -1.2, 1.2 ])

Para dibujar curvas en forma implıcita se utiliza el comando ezplot conel siguiente formato ezplot( ′ g(x,y) ′ ) donde la curva es g(x, y) = 0, y sepueden especificar los intervalos de variacion de x e y. Por ejemplo:

>> ezplot( ′ x2+y2-1 ′ , [-1,1,-1,1])

4 Graficas 3D

4.1 Curvas en el espacio

Dibujar la curva ~r(t) = (cos(t), sen (t), t) con t ∈ [0, 10π]

• Con el comando plot3

>> t=linspace(0,10*pi,5000);

>> plot3(cos(t),sin(t),t),grid on

>> xlabel( ′ Eje x ′ ), ylabel( ′ Eje y ′ ), zlabel( ′ Eje z ′ )

17

Page 18: Matlab Manual Corto

>> title( ′ Helice ′ )

• Con el comando ezplot3

>> ezplot3( ′ cos(t) ′ , ′ sin(t) ′ , ′ t ′ ,[0,10*pi])

• Tambien existe el comando quiver3 que funciona de manera analogaal correspondiente en 2D.

4.2 Graficas de funciones z = f(x, y)

Podemos tambien dibujar superficies. Por ejemplo, para dibujar la superficiez = e−x2−y2 seguimos los siguientes pasos:

• Primero generamos un mallado de la region de XY sobre la que vamosa dibujar

>> [x,y]=meshgrid(-2:0.1:2)

Tambien podemos generar mallados no cuadrados, por ejemplo:

>> [x,y]=meshgrid(-2:0.1:2,-1:0.1:3);

• Sustituimos en la funcion

>> z=exp(-x.2-y.2);

• Dibujamos la funcion con cualquiera de los tres comandos siguientesplot3, mesh, surfl.

>> plot3(x,y,z)

>> mesh(x,y,z)

>> surf(x,y,z)

Los comandos siguientes sirven para modificar el dibujo obtenido.

Para cambiar el color:

>> shading interp;

18

Page 19: Matlab Manual Corto

>> colormap(pink);

Para girar la figura mediante el raton:

>> rotate3d;

4.3 Imprimir, exportar, guardar graficos

• Podemos imprimir desde la ventana grafica: File Print o File PrintPreview

• Podemos exportar grafico a un procesador de textos con Edit CopyFigure y se pega en el procesador de textos. Tambien podemos exportarcon File Export

• Podemos guardar graficos como un fichero grafico con File Save As

• Otra posibilidad es crear un fichero-M (Script) con los comandos quegeneran el grafico.

Ejercicios

Graficos

1. Sea la funcion y = sen (3πx), definida en 0 ≤ x ≤ 1.

(a) Evalue la funcion en N puntos igualmente espaciados en el rango[0, 1], y represente y = y(x) uniendo los puntos mediante segmen-tos de recta: tomando N = 10 y N = 100

(b) Dibuje las graficas anteriores en dos figuras diferentes, para verlassimultaneamente y compararlas (utilice el comando figure).

(c) Ponga tıtulo y nombre a los ejes de la segunda grafica.

(d) Superponga luego una malla.

19

Page 20: Matlab Manual Corto

(e) Limpie la ventana de graficos, o abra una nueva figura.

(f) Represente y=y(x) con una lınea de color azul.

(g) Represente y=y(x) con cırculos de color rojo.

2. Dibuje la grafica de las funciones: y = cos x e y = x, para 0 ≤ x ≤ 2,en la misma ventana, con 100 puntos.

(a) Aplique el comando zoom para determinar en forma aproximadael punto de interseccion.

(b) Limpie la ventana de graficos.

(c) Represente y = sen (3πx) con 0 ≤ x ≤ 1.

(d) Varıe el rango de los ejes x e y mediante el comando axis, tal queel rango en el eje x sea entre –0.5 y 1.5, y el rango en y sea entre−1.2 y 1.2.

3. Mediante el comando subplot cree una figura con cuatro graficas,tal que en la primera grafica (contando de arriba hacia abajo, y deizquierda a derecha) se represente la funcion y = sen (3πx), en lasegunda y = cos(3πx), en la tercera y = sen (6πx) y en la cuartay = cos(6πx),con 0 ≤ x ≤ 1. Nombre a los ejes en cada grafica.

4. Represente la grafica de las siguientes funciones, para 0 ≤ x ≤ 10, enuna misma figura pero en diferentes subventanas (mediante el comandosubplot). Experimente con los comandos axis, grid y hold.

y = sen xx , u = 1

(x−1)2 + x, v = x2+1x2−4 , w = (10−x)1/3

4−x2)1/2 .

5. Sean las funciones g(x) = sen (2πx) y h(x) = cos(2πx), con 0 ≤ x ≤ 1.Represente ambas funciones en la misma ventana, cada una con 100puntos como mınimo, y tal que la curva (x, g(x)) este representada porun trazo continuo de color rojo, y la curva (x, h(x)) por una lınea pun-teada de color verde. Agregue un texto (mediante el comando legend)dentro de la ventana de graficos, indicando cual trazo representa cadacurva Ponga tıtulo a la grafica y nombre a los ejes.

20

Page 21: Matlab Manual Corto

6. Representar graficamente las siguientes curvas en parametricas

(a) x = 3 sen (2t) cos(t), y = 3 sen (2t) sen (t). Donde t varia entre −πy π.

(b) x = t sen (t), y = cos(t), z = t. Donde el parametro vale 0 ≤ t ≤20.

7. Representar las siguientes superficies utilizando los distintos comandos.

(a) f(x, y) = ex2+y2

(b) f(x, y) =sen (

x2 + y2)√

x2 + y2para −8 ≤ x ≤ 8, −8 ≤ y ≤ 8.

Indicacion Para que no haya problemas de division por cero con-siderar la funcion R =

x2 + y2 +eps y construir la funcion comoz = sin(R)/R.

5 Calculo Simbolico.

5.1 Expresiones Simbolicas.

Son cadenas de caracteres representando numeros, funciones, operadores yvariables. Las variables no requieren valores predefinidos.

• Definicion de variable simbolica El comando syms define simbolicamentevariables y tiene el siguiente formato syms nombre variable

• Ejemplo

>>syms x

• Definicion de funcion simbolica

Despues de tener definida la variable independiente como variable simbolicaes posible definir funciones simbolicas de la siguiente formanombre funcion = expresion matematica

21

Page 22: Matlab Manual Corto

• Ejemplo

>> f = (x2-7*x+8)/(x+2)

5.2 Calculo de derivada n-esima de una funcion.

El comando diff permite hallar la derivada n-esima de una funcion simbolicacon el siguiente formato diff(nombre funcion, n). Si queremos hallar la deriva-da de la funcion basta escribir el comando como diff(nombre funcion)

Ejemplo

Calculemos la derivada tercera de la funcion f definida anteriormente yla pondremos en forma bonita con el comando pretty.

>>d3=diff(f,3)

>>pretty(d3)

5.3 Calculo de integrales.

5.3.1 Calculo de integrales indefinidas

>>int (nombre funcion)

5.3.2 Calculo de integrales definidas

>> int(nombrefuncion, variable, liminferior, limsuperior)

• Ejemplo

Calculemos∫ sin(x)0

11+t2 dt

Definimos las variables simbolicas x y t:

>> syms t x

22

Page 23: Matlab Manual Corto

Definimos la funcion simbolica:

>>f=1/(1+t 2)

Y calculamos la integral:

>> int(f, t, 0, sin(x))

• Ejercicio

Calcular∫ 1

0

√1− x2dx

• Resultado de las integrales definidas en forma numerica

>> numeric(ans)

Con mas decimales:

>>vpa(ans, no decimales)

5.4 Ecuaciones Algebraicas.

Nos planteamos la resolucion de ecuaciones o sitemas de ecuaciones, tantocon raıces reales como complejas, para lo que se utiliza el comando ”solve”.

• Resolucion de una ecuacion

>>solve( ′ecuacion′ ), donde por ecuacion se entiende la expresion al-gebraica de la misma.

• Ejemplo

Si queremos resolver una ecuacion de segundo grado ax2 ++ bx + c = 0:

>>solve( ′a ∗ x 2+b ∗ x + c = 0′ )

• Resolucion de una ecuacion respecto a otra variable

>>solve( ′ecuacion′ , ′nombre variable′ )

23

Page 24: Matlab Manual Corto

• Ejemplo

Si queremos resolver la ecuacion anterior ax2 + bx + c = 0 respecto dela variable b:

>> solve( ′a ∗ x 2+b*x+c=0 ′ , ′b′)

• Resolucion de un sistema de ecuaciones

>>[var 1,var 2]= solve( ′ecuacion 1′ , ′ecuacion 2′ )

• Ejemplo

Resolver el sistema:{

x− y = 0x + y = 1

• Observacion:

Si no se puede encontrar una solucion en forma algebraica (ecuacionno algebraica), el comando solve devuelve una aproximacion numericade la solucion. Ocurre por ejemplo al intentar resolver sin(x) = x− 1:

>>solve ( ′sin(x) = x-1′ )

Entonces, en estos casos es mejor utilizar el comando fzero queutiliza el metodo de biseccion para calcular las raıces, bien dentro deun intervalo, o bien a partir de un valor real.

• Comando fzero:

>> fzero( ′ecuacion′ , [a,b]): busca una raız en el intervalo [a, b], ypara ello es necesario que la funcion tome valores de distinto signo enlos extremos del intervalo, ya que su busqueda se basa en el teoremade Bolzano.

Ejemplo

>> fzero( ′sin(x)- x+1′ , [0,pi])

>>fzero( ′ecuacion ′ , a)): busca una raız de la ecuacion a partir delvalor real a.

Ejemplo

24

Page 25: Matlab Manual Corto

>> fzero( ′sin(x)- x+1′ , 0)

Observacion: En este caso necesitamos tener la ecuacion en la formaf(x) = 0, y al colocarla en el comando fzero solo ponemos f(x).

5.5 Ecuaciones Diferenciales Ordinarias.

Para resolver ecuaciones de este tipo, usaremos el comando dsolve:

>>var resultado =dsolve( ′ ecuacion diferencial′ ,′ var′)

• Ejemplo

Resolver la ecuacion diferencial dydx = 1 + y2.

>>y= dsolve( ′Dy= 1+y 2′ , ′ x ′ )

Resuelve la ecuacion y el resultado lo mete en la variable y.

• Resolucion de un problema con condiciones iniciales

>> variable resultado =dsolve( ′ ecuacion diferencial ′ , ′ condicion ocondiciones iniciales separadas por comas ′ , ′ var ′)

• Ejemplo

Resolver{ dy

dx = 1 + y2

y(0) = 1

>>y= dsolve( ′Dy= 1+y 2 ′ , ′ y(0)=1′ , ′x′)

• Ejercicio

Resolver

d2xdt2 − 2dx

dt − 3x = 0x(0) = 0x′(0) = 1

25

Page 26: Matlab Manual Corto

5.6 Herramientas interactivas

• Sumas de Riemann

Nos permiten aproximar el valor de la integral definida de una funcion fen el intervalo [0,1]. Si queremos hacerla para otro intervalo, habrıa quehacer antes un cambio de variable que convierta

∫ ba f(x)dx en

∫ 10 g(t)dt

y aplicar luego las sumas de Riemann.

>> rsums(f)

• Ejemplo

Evaluemos la integral de f(x) = 10xe−5x2 y la comparamos luego conla aproximacion de las sumas de Riemann

>>f= ’10*x*exp(-5*x2)’

Evaluamos el valor de la integral definida de f en [0,1] con 6 decimales:

>>vpa(int(f,0,1),6)

Activamos las sumas de Riemann:

>> rsums(f)

6 Programacion en Matlab.

• Los tipos de programas que podemos realizar en Matlab son dos: tipoScripts (ficheros de comandos) y tipo Function (en el que se definen fun-ciones matematicas de una o varias variables). Ambos son ficheros detexto con extension .m, que contienen instrucciones propias de Matlab.

Como archivos de texto, se pueden crear con cualquier procesador. Re-comendamos no obstante, utilizar el editor que trae incorporado Mat-lab, que se invoca con la siguiente instruccion:

>> edit nombre del archivo;

Para conocer los archivos existentes de este tipo podemos teclear what.

26

Page 27: Matlab Manual Corto

6.1 Ficheros de comando o tipo Scripts y ficheros tipoFuntion

• Ficheros de comandos o tipo Scripts.

Son los mas simples, no tienen argumentos de entrada ni de salida. Sonutiles para automatizar bloques de instrucciones y calculos que debenefectuarse repetidamente. Operan sobre datos existentes en el espaciode trabajo. Ademas, cualquier variable creada por uno de estos archivospermanece en el espacio de trabajo una vez que finaliza su lectura.

• Observacion.

Matlab trabaja con memoria dinamica, por lo que no es necesariodeclarar las variables que se van a usar. Por esta misma razon, habraque tener especial cuidado y cerciorarse de que entre las variables delespacio de trabajo no haya ninguna que se llame igual que las de nue-stro programa (proveniente, por ejemplo, de un programa previamenteejecutado en la misma sesion), porque esto podrıa provocar conflictos.A menudo, es conveniente reservar memoria para las variables (porejemplo, si se van a utilizar matrices nuy grandes); para ello, basta conasignarles cualquier valor. Del mismo modo, si se esta usando muchamemoria, puede ser conveniente liberar parte de ella (clear) variablesque no se vayan a usar mas.

• Ficheros tipo Function.

Aceptan argumentos de entrada y salida. Sirven para extender ellenguaje de Matlab usando nuestras propias funciones. Tienen supropio espacio de trabajo reservado, donde puede definirse variablespropias locales que no afectan al espacio de trabajo general.

Los pasos principales para definir una funcion en Matlab son:

1) Decidir un nombre para la funcion, que no sea igual al dealguna funcion predefinida en Matlab.

2) La primera lınea del archivo debe tener el formato:

27

Page 28: Matlab Manual Corto

Function [lista de salidas]= nombre de la funcion [lista deentradas]

3) Documentar la funcion: describir brevemente el propositode la funcion y como puede ser usada. Estas lıneas deben estar prece-didas del sımbolo %, pues son lıneas de comentarios y debe indicarseal programa que las ignore.

4) Incluir el codigo que defina la funcion.

• Ejemplo

Vamos a realizar un pequeno programa para calcular el area de untriangulo, conocidas las longitudes de sus lados.

El nombre de la funcion que defina puede ser area, y el archivo: area.m.Siguiendo los paso anteriores serıa:

function [A]= area(a,b,c)

%Calcula el area de un triangulo de lados de longitud a, b y c

%Entradas: a,b,c: longitudes de los lados

% Salidas: A: area del triangulo

% Uso: area=area(a,b,c)

s = (a + b + c)/2;

A = sqrt(s ∗ (s− a) ∗ (s− b) ∗ (s− c));

La funcion area puede invocarse desde la ventana de comandos de Mat-lab, como cualquier otra funcion predefinida.

6.2 Control de flujo. Bucles.

En el entorno de trabajo las instrucciones se ejecutan en el orden en el quese van introduciendo.

Dentro de un programa, el orden, el flujo, se pueden alterar utilizandoalgunas instrucciones:

28

Page 29: Matlab Manual Corto

a) Condicionales: Las secuencias de ordenes se ejecutan basandose enalguna condicion.

b) Bucles (instrucciones iterativas): una o un grupo de ordenes que seejecutan varias veces.

6.3 Condicionales.

• Estructura if simple

Su forma es la siguiente:

if condicional

comando

end

El comando se ejecuta si todos los elementos en condicional son ver-daderos.

• Ejemplo:

>>a=3;

if a>2

b=a+5

end

• Estructura if compuesta

if condicional

comando primero

else

comando segundo

end

29

Page 30: Matlab Manual Corto

• Ejemplo:

>>a=n;

if a>5

b= a+5

else

b= a-1

end

• Estructura if-else-if

Se usa cuando hay mas de dos condiciones que puedan cunplirse. Suforma es:

if condicional primero

comando primero

elseif condicional segundo

comando segundo

elseif condicional tercero

comando tercero

......

else

comando final

end

• Ejemplo:

>>b= 1:5;n=5;

if n==1

x=b. 1

elseif n==2

x=b. 2

30

Page 31: Matlab Manual Corto

elseif n==3

x=b. 3

else

x=b

end

• Orden switch

El mismo resultado del ejemplo anterior se podrıa haber obtenido conswitch, de la siguiente forma:

switch(n)

case(1)

x=b. 1

case(2)

x=b. 2

case(3)

x=b. 3

otherwise

x=b

end

6.4 Bucles.

• Bucles for.

Ejecuta una o varias sentencias un numero predeterminado de veces.Su forma general es:

for i=1:n

sentencias

end

31

Page 32: Matlab Manual Corto

• Ejemplo:

for i= 1:10

a(i)= i+2;

end

Produce el vector a= (3,4,5,6,7,8,9,10,11,12)

• Ejercicio:

Crear la matriz de Hilbert. Es decir, una matriz A = (aij)1≤i,j≤n, dondeaij = 1

i+j−1

• Bucles while.

Sirve para ejecutar una sentencia o grupo de sentencias mientras secumpla una condicion. Su forma general es:

while condicional

comando

end

6.5 Lectura y escritura interactiva de variables.

Veremos una forma sencilla de leer variables desde el teclado y escribir men-sajes en la pantalla del PC.

6.5.1 Funcion input

La funcion input permite imprimir un mensaje en la lınea de comandos deMATLAB y recuperar como valor de retorno un valor numerico o el resultadode una expresion tecleada por el usuario. Despues de imprimir el mensaje,el programa espera que el usuario teclee el valor numerico o la expresion.Cualquier expresion valida de MATLAB es aceptada por este comando. Elusuario puede teclear simplemente un vector o una matriz. En cualquier caso,la expresion introducida es evaluada con los valores actuales de las variables

32

Page 33: Matlab Manual Corto

de MATLAB y el resultado se devuelve como valor de retorno. Veamos dosejemplos de uso de esta funcion:

Ejemplo 1:

>> n= input(’Teclee el numero de elmentos’);

Ejemplo 2:

>> direccion= input(’¿Donde vives?’, ’s’);

Observemos el parametro ’s’. En este caso el texto tecleado como re-spuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadenadireccion , Ası pues, en este caso, si se teclea una formula, se almacenacomo texto sin evaluarse.

6.5.2 Funcion disp

La funcion disp permite imprimir en pantalla un mensaje de texto o el valorde una matriz, pero sin imprimir su nombre. En realidad, disp siempre im-prime vectores y/o matrices: las cadenas de caracteres son un caso particularde vectores. Veamos un ejemplo de su uso:

>> disp (’El valor de la matriz es’)

>> disp (A)

6.5.3 Observacion

Cuando se escribe un punto y coma al final de una instruccion, el ordenadorrealiza las operaciones correspondientes y almacena el resultado bajo el nom-bre que le hayamos asignado (para su uso en calculos posteriores) pero nomuestra el resultado del proceso en la pantalla.

33

Page 34: Matlab Manual Corto

Ejercicios

1. Calcular la suma de los n primeros terminos de la sucesion: 1, 2x, 3x2,4x3, ...,

2. Decidir si un no natural es primo.

3. Escribir un no natural en una base dada (menor de 10).

4. Represente la funcion sin(nπx)en el intervalo −1 ≤ x ≤ 1 , paran=1,2,3,...,8.

5. La Sucesion de Fibonnaci empieza con los numeros 0 y 1, y los terminosrestantes son la suma de los dos terminos anteriores:

f1 = 0, f2 = 1, fn = fn−1 + fn−2, n = 3, 4, ...

a) Definir una funcion que determine el enesimo termino de la serie(input: n, output: )

b) Comprobar la hipotesis de que el cociente entre dos terminos suce-sivos de la serie tiende al valor

√5+12 (sugerencia: calcule el cociente

para los primeros 20 terminos).

6. Almacenar en un vector las raıces cuadradas de los primeros 25 numerospares.

7. Almacenar en un vector los productos entre los 10 primeros numerosimpares con los multiplos de 3 positivos menores que 100.

8. Escriba un script que determine si un ano dado es bisiesto (nota: debeser multiplo de 4). El ano debe ser leido desde la pantalla, y el resultadomostrarse en pantalla.

9. Escriba un script tal que determine si πe > eπ , y entonces asigne auna variable b el valor: b =

√a2 − c2 , y b = 0 en caso contrario.

34

Page 35: Matlab Manual Corto

10. Escriba un script tal que, dada una ecuacion cuadratica de la forma:ax2 + bx + c = 0 , calcule las dos raıces reales si el discriminante es nonegativo, y en caso contrario despliegue un mensaje indicando que nohay raıces reales.

11. Escriba un script que lea los coeficientes de las rectas:{

ax + by = cdx + ey = f

y determine si son paralelas, y en caso de no serlo, determine si sonperpendiculares.

12. Escriba un script que lea las coordenadas de 3 puntos en el plano, ydetermine si estan alineados. 14.

13. Defina la funcion area (ver el teorico) y aplıquela para calcular el areade un triangulo de lados de longitudes 10, 15, 20.

14. a) Dado un vector v, escriba una funcion que determine sus coordenadascartesianas (x,y) a partir de sus coordenadas polares (r,θ).

b) Aplique la funcion anterior para determinar las coordenadas carte-sianas para r=5 y θ = π

6 .

15. a) Defina la funcion f(x) = sin(πx)x , donde x puede ser un escalar o un

vector

b) Estime el lımite de la funcion , cuando x → 0. Sugerencia: Observeel comportamiento de f(x) al evaluarla en una secuencia de valores quese aproximan a 0: [0.1,0.01,0.001,0.0001,...etc]. Pruebe a cambiar elformato numerico (de short a long p.e.).

7 Apendice: Algunas funciones utiles paralos ejercicios.

1. Funcion rem (n,i))

35

Page 36: Matlab Manual Corto

Nos da el resto de dividir n entre i.

2. Funcion fix (n/a))

Parte entera del cociente n/a.

36