Está en la página 1de 76

Métodos Numéricos para Ingenierı́a

Introducción a MatLab u Octave

M.Sc. Rebeca Solı́s Ortega

1
Matlab

Matlab es un programa matemático que puede ser utilizado en computación


matemática, modelando y simulando, análisis y procesamiento de datos,
visualización y representación de gráficos, ası́ como para el desarrollo de algoritmos.

2
GNU Octave

GNU Octave es una alternativa gratuita a MatLab. Es un lenguaje interpretado de


alto nivel, destinado principalmente a cálculos numéricos.

3
Command Window (Ventana de Comandos)

Es la ventana principal, y es acá donde se introducen las variables y comandos que


se desean ejecutar.

Algunas puntuaciones para trabajar en esta ventana son:

• Después del sı́mbolo  se insertan los comandos a ejecutar y al presionar la


tecla Intro se ejecutará y mostrará el resultado del mismo.

4
Command Window (Ventana de Comandos)

• Si se escribe el sı́mbolo ; después de un comando al presionar Intro el


comando se ejecutará pero no se mostrará en pantalla.

• Si se desea escribir un comentario se debe colocar el sı́mbolo % antes del


mismo.

• Si se desea borrar la ventana de comandos debe escribirse el comando clc.

5
Command History Window (Ventana del histórico de
Comandos)

En esta ventana se almacenan y visualizan los comandos que se introducen en la


ventana de comandos.

Si se desea volver a introducir un dato escrito con anterioridad basta con darle
doble clic al comando es esta ventana o basta con presiona la tecla de la flecha
hacia arriba.

6
Workspace Window

Proporciona información sobre las variables utilizadas

7
Operaciones básicas con escalares

En Matlab se puedes realizar todas las operaciones básicas. Los sı́mbolos


correspondientes son:
Operación Sı́mbolo
Suma +
Resta −
Multiplicación ∗
División /
División izquierda* \
Potenciación ∧

∗ Se refiere a expresar la división de manera contraria, por ejemplo 5 \ 3 = 3/5

8
Visualización de números

En Matlab se puede controlar la cantidad de decimales que se presenta en un


resultado, ajustando ası́ la precisión y exactitud de un cálculo. Ası́ tenemos los
comandos:
Comando Descripción
format short Punto fijo con 4 dı́gitos decimales
format long Punto fijo con 14 dı́gitos decimales
format short e Notación cientı́fica con 4 dı́gitos decimales
format long e Notación cientı́fica con 14 dı́gitos decimales
format bank 2 dı́gitos decimales
Format rat Fracción

9
Definición de variables

Una variable es un nombre compuesto por una letra o combinación de las mismas
al cuál se le asigna un valor numérico. Una vez asignado un valor a la variable, ésta
puede ser utilizada en expresiones matemáticas, funciones y cualquier otro tipo de
comando MATLAB.

Para definir una variable utilizamos la instrucción:


syms x y z

10
Definición de variables

En MATLAB el sı́mbolo = se lama operador de asignación. Este operador asigna


un valor a una variable. Por ejemplo:

 x = 20 * sqrt (3)

En ocasiones es necesario reasignar un nuevo valor a la variable, por ejemplo:

 x = x + 6

11
Reglas para definir variables

• Pueden tener una longitud máxima de 63 caracteres.

• Pueden contener letras, dı́gitos y el carácter de subrayado.

• Deben empezar con una letra.

• El programa distingue entre letras mayúsculas y minúsculas.

• Se debe evitar poner a las variables el nombre de funciones del sistema.

12
Comandos al usar variables

Algunos comandos útiles al hacer uso de las variables son:

• Clear: Borra todas las variables de la memoria.


• Clear x y z: Borra las variables x, y, z de la memoria.
• Clear all: Borra todas las variables de la memoria.
• Who: Muestra un listado de las variables almacenadas en memoria.
• Whos: Muestra un listado de las variables almacenadas en memoria y su
tamaño, junto con la información sobre su clase y longitud.

13
Operadores relacionales

Un operador relacional compara dos números determinando si el enunciado de


la comparación es verdadero o falso. Los operadores relacionales se utilizan en
mayor medida junto con otros comandos de MATLAB (en ciclos y decisiones) para
controlar el flujo de un programa.

14
Operadores relacionales

Los operadores relacionales de MATLAB son:


Sı́mbolo Descripción
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
== Igual a
∼= Distinto a

15
Operadores lógicos

Un operador lógico es utilizado por la lógica proposicional para admitir o rechazar


proposiciones. Los operadores lógicos de MATLAB son:
Sı́mbolo Descripción
|| O
& Y
∼ Negación

16
Matrices

Inicializando matrices

Para crear un vector o una matriz fila o columna utilizamos los siguientes comandos:
• Fila: b=[a1 a2 ... an ];
• Columna: b=[a1; a2; ...; an ];
Ası́ para crear una matriz utilizamos el comando:
A=[f1 ; f2 ; f3 ;...; fn ];
o bien
A=[f1
f2
f3
...
fn ];
Donde los f k son filas.

17
Matrices

Ejemplo

Digite la siguiente matriz en Matlab:


 
2 1 5 1 5
 1 1
 −3 −4 −1 

 3 6 −2 1 8 
2 2 2 −3 2

18
Matrices

Solución

Para conseguir la matriz anterior digitamos:


A=[2 1 5 1 5 ; 1 1 -3 -4 -1 ; 3 6 -2 1 8 ; 2 2 2 -2 2 ];

O bien

A=[2 1 5 1 5
1 1 -3 -4 -1
3 6 -2 1 8
2 2 2 -2 2 ];

19
Matrices

Comandos especiales para Matrices

• Tamaño de la matriz A size(A)


• Matriz de 1’s de tamaño m × n ones(m,n)
• Matriz de 1’s de orden n ones(n)
• Matriz Identidad de orden n eye(n)
• Matriz nula de orden n zeros(n)
• Matriz triangular inferior triu(A)

20
Matrices

Comandos especiales con Matrices

• Matriz triangular superior tril(A)


• Matriz aleatoria de tamaño m × n rand(n,m)
• Determina el elemento i,j de la matriz A A(i,j)
• Extrae todas las filas de la columna m A(:,m)
• Extrae todas las columnas de la fila m A(n,:)
• Extrae las filas de la i a la j de las columnas de la m a la n A(i:j,m:n)

21
Matrices

Operaciones con Matrices

• Transpuesta A’
• Inversa inv(A)
• Eleva una matriz a la n A∧n
• Eleva cada término de la matriz a la n A.∧n
• Multiplica dos matrices A*B

22
Matrices

Operaciones con Matrices

• Multiplica las entradas i,j de una matriz con las i,j de otra matrices A.*B
• Divide las entradas i,j de una matriz con las i,j de otra matrices A./B
• Divide las entradas i,j de una matriz por n A./c
• Divide n por las entradas i,j de una matriz A.\c
• Determinante de A det(A)

23
Scripts y funciones

Diferencia entre scripts y funciones

Tanto los scripts como las funciones permiten realizar secuencias de comandos
almacenándolos en archivos de programa. Los scripts son el tipo de programación
más simple, ya que almacenan comandos exactamente como se escribirı́an en la
lı́nea de comandos. Sin embargo, las funciones son más flexibles.

La mayor diferencia entre los scripts y las funciones es que las funciones tienen
parámetros de entrada y salida. Esto hace a las funciones más flexibles y adecuados
para tareas de propósito general que se aplicarán a diferentes datos. Los scripts
son útiles para tareas que no cambian. También son una forma de documentar una
secuencia especı́fica de acciones, por ejemplo, una llamada a función con valores de
parámetros especiales, que pueden ser difı́ciles de recordar.

24
Scripts y funciones

Creación de Scripts

El script es un archivo .m que contiene una serie de comandos que se ejecutarán al


ejecutar dicho archivo en MatLab.

Para crear un script se debe hacer clic en File-New-Script. De inmediato se abrirá


una nueva ventana en la que se escribirán los comandos que se desean ejecutar.

Para ejecutar un script desde Matlab solamente se escribe su nombre, o bien dentro
del script con el botón Save-Run.

25
Scripts y funciones

Comandos especiales

• input(’ ’): permite solicitar datos al usuario.


• disp(’ ’): permite mostrar mensajes al usuario.
• num2str(): convierte números a texto.
• mod(x,y): calcula el residuo de dividir x entre y.

26
Scripts y funciones

Ejercicio

Cree un script que le solicite al usuario el precio de un producto y se le devuelve el


monto final con el i.v.a incluido.

27
Scripts y funciones

Solución

costo=input(’Ingrese un monto: ’);

monto=costo*1.13;

disp([’El monto final es de: ’,num2str(monto)]);

28
Scripts y funciones

Creación de funciones

Una función es un archivo .m que contiene una serie de comandos que se ejecutarán
al llamar dicha función en MatLab.

Para crear una función se debe hacer clic en File-New-Funtion.

Nota: Debe guardar el archivo .m con el mismo nombre con la que llama a la
función.

29
Scripts y funciones

Creación de funciones

Las funciones tienen el siguiente formato:

function [ output args ] = untitled( input args )


end

Donde:
• output args corresponde a los nombres de las variables a retornar.
• untitled corresponde al nombre de la función.
• input args corresponde a los nombres de las variables que recibe.

30
Scripts y funciones

Ejercicio

Cree una función que recibe como parámetro de entrada un valor que equivale al
precio de un producto y devuelve un valor que corresponde al precio final con el
i.v.a incluido.

31
Scripts y funciones

Solución

function [monto] = Iva (precio)

monto=precio*1.13;

end

32
Construcción de Objetos Simbólicos

Construcción de Objetos Simbólicos

Para definir variable simbólica utilizamos el comando syms. Por ejemplo:

syms x
f = x ∧ 2 + 3 ∗ x − 2;

De esta forma, tanto x como f son variables simbólicas del sistema.

33
Construcción de Objetos Simbólicos

Sustitución simbólica

Si en una expresión simbólica queremos sustituir una variable por otra o por una
constante para calcular su valor en un punto, utilizamos la orden:
subs(f,x,n)
En esta estructura tenemos:
Variable Significado
f La variable que almacena la función
x La variable que deseo sustituir
n El valor a evaluar (numérico o nueva variable)

34
Construcción de Objetos Simbólicos

Evaluar

En ocasiones, es conveniente visualizar un valor de forma aproximada. Para esto


puede utilizar cualquiera de las siguientes expresiones:

double(expresión) eval(expresión)

35
Construcción de Objetos Simbólicos

Ejercicio

Escriba los comandos que permiten definir la función f = cos(x + 2) − sen(x).


Evalúe la función en los siguientes valores:
• x = −3
• x = [1, 4]
Para una mejor visualización, aproxime los valores dados.

36
Construcción de Objetos Simbólicos

Solución

syms x
f=cos(x+2)-sin(x)

subs(f,x,-3)
subs(f,x,[1,4])

double(subs(f,x,-3))
eval(subs(f,x,[1,4]))

37
Construcción de Objetos Simbólicos

Calculando derivadas

Para derivar una expresión simbólica f, disponemos de las instrucciones diff, que
actúan como se indica en el siguiente cuadro:
Función Significado
diff(f) Deriva con respecto a la variable dominante (symvar)
diff(f,i) Deriva a F con respecto a i
diff(f,n) Realiza la enésima derivada de f
diff(f,i,n) Realiza la enésima derivada de f con respecto a i

38
Construcción de Objetos Simbólicos

Calculando integrales

Para integrar una expresión simbólica f, disponemos de las instrucciones int, que
actúan como se indica en el siguiente cuadro:
Función Significado
int(f) Integra con respecto a la variable dominante (symvar)
int(f,i) Integra a g con respecto a i
int(f,a,b) Calcula la integral definida de f con limites a y b
int(f,i,a,b) Calcula la integral definida de f con limites a y b con respecto a i

39
Construcción de Objetos Simbólicos

Ejercicio

Cree una función llamada EjerDifInt que recibe:


• f: es una función en términos de x.
• a, b: dos números.

Y que devuelve:
• dfab: la a-ésima derivada de f evaluada en b.
• ifab: la integral de f desde a hasta b.
Las evaluaciones deben visualizarse de forma aproximada.

40
Construcción de Objetos Simbólicos

Solución

function [dfa,ifab] = EjerDifInt (f,a,b)

dfa=double(subs(diff(f,x,a),x,b));
ifab=double(int(f,a,b));

end

41
Graficación

Graficación por conjunto de puntos

Para realizar gráficos por conjunto de puntos, se puede usar la instrucción plot(x,y),
donde x y y son los conjuntos a graficar.

Se pueden definir conjuntos de puntos con las instrucciones:


• linspace(a,b,n): Crea n puntos igualmente espaciados desde a hasta b

• [a:h:b]: Crea un vector de puntos desde a hasta b con un distanciamiento


de h

42
Graficación

Ejercicio

Escriba los comandos que permiten graficar la función f (x) = cos(x) en el intervalo
de [−1, 1], usando 1000 puntos.

43
Graficación

Solución

syms x;

f=cos(x);

a=linspace(-1,1,1000);
b=subs(f,x,a);

plot(a,b)

44
Graficación

Graficación de funciones simbólicas

Si se desea graficar una función simbólica, puede resultar más sencillo usar algunas
de las siguientes opciones:

• Para Matlab fplot(f,[a,b])

• Para Octave ezplot(f,[a,b])

Donde f es una función simbólica y a, b números que delimitan el espacio de


graficación.

45
Graficación

Ejercicio

Escriba los comandos que permiten graficar la función f (x) = cos(x) en el intervalo
de [−1, 1], usando 1000 puntos.

46
Graficación

Solución

syms x;

f=cos(x);

fplot(f,[a,b]) %o bien ezplot(f,[a,b])

47
Graficación

Graficando...

A continuación se presentan varias opciones para modificar los gráficos, se usa la


opción plot como ejemplo, pero se puede generalizar su uso para las instrucciones
fplot y ezplot.

Puede graficar varias funciones al mismo tiempo con solo agregar la instrucción:

hold on

Puede dar color y forma a cada gráfica agregando el código entre comilla simple.

plot(x,y,’b-o’)

48
Graficación

Graficando...

Otra opción para graficar varias funciones al mismo tiempo es usando las
instrucciones:

figure(1), plot(x, y)
figure(2), plot(x, y)

O bien:

subplot(m,n,i),plot(x,y)
Donde se dibuja una matriz de m × n gráficos y ubica el deseado en la posición i.

49
Graficación

Otras opciones...

Otras opciones para mejorar el aspecto de los gráficos son:


• LineWidth Modifica el ancho del gráfico. Ejm:
plot(x,y, ’LineWidth’, 1.5)
• title(’tı́tulo’ Añade el tı́tulo a la gráfica.
• xlabel(’eje x’) Añade una etiqueta al eje X.
• ylabel(’eje y’) Añade una etiqueta al eje Y.
• text(x,y,’texto’) Añade el texto deseado en la posición (x,y).
• gtext(’texto’) Añade el texto deseado la posición donde se realice el primer
clic sobre la gráfica.

50
If

Condicional If
El condicional if ejecuta ciertas instrucciones si y sólo si se cumple una cierta
condición. Si la condición es falsa, no se hace nada.

Falso
Condición

Verdadero

Instrucciones

51
If

If en Matlab

if (P)
Instrucciones a realizar si P es verdadero
end

52
If-Else

Condicional If - else

El condicional if-else decide qué instrucciones ejecutar dependiendo si una condición


es verdadera o falsa.

Verdadero Falso
Condición

Instrucciones Instrucciones

53
If-Else

If - else Matlab

if (P)
Instrucciones a realizar si P es verdadero
else
Instrucciones a realizar si P es falso
end

54
Else if

Condicional Else if
Consiste en un if - else anidado, osea permite el uso de condicionales dentro de ellos
mismos.

Verdadero Falso
Condición

Instrucciones Verdadero Falso


Condición

...
...

Instrucciones Verdadero Falso


Condición

Instrucciones Instrucciones

55
Else if

Elseif en Matlab

if (P)
Instrucciones a realizar si P es verdadero
elseif (Q)
Instrucciones a realizar si Q es verdadero
...
...
...
else (opcional)
Instrucciones a realizar si no se cumple ninguna condición
end

56
Else if

Ejercicio

Cree un script que recibe un número e indica si es positivo o negativo, además de


si es par o impar.

Recuerde que la función mod(x,n) devuelve el residuo de dividir x entre n.

57
Else if

Solución

syms x;
x=input(’Ingrese un número: ’)
if (x > 0 && mod(x,2)==0)
disp(’Es un número positivo par’)
elseif (x > 0 && mod(x,2) =0)
disp(’Es un número positivo impar’)
elseif (x < 0 && mod(x,2)==0)
disp(’Es un número negativo par’)
elseif (x < 0 && mod(x,2) =0)
disp(’Es un número negativo impar’)
else
disp(’Es un cero’)
end

58
Else if

Ejercicio

Cree una función que recibe tres números y devuelve un vector con los números
ordenados de menor a mayor.

59
Switch...case

Condicional Switch ... case

Consiste en una manera abreviada de escribir varios if’s uno después del otro. Ası́
se ejecutan ciertas instrucciones dependiendo del valor de una expresión.

Verdadero
Condición 1 Instrucciones

Falso

Verdadero
Condición 2 Instrucciones

Falso
...
...

Verdadero
Condición n Instrucciones

Falso

Instrucción
por defecto

60
Switch...case

Switch ... case en Matlab

switch (x)
case c1 ,
Instrucciones a realizar si x == c1 ;
case c2 ,
Instrucciones a realizar si x == c2 ;
...
case cn ,
Instrucciones a realizar si x == cn ;
otherwise,
Instrucciones a realizar si no se cumple ninguna condición
end

61
Switch...case

Ejercicio

Cree un script que recibe una letra e indica si es vocal o consonante.

62
For

For ... end


Consiste en un bucle o ciclo en donde se ejecutan una o varias instrucciones un
número fijo de veces.

Inicialización
ciclo

Falso
Condición

Verdadero
Incremento

Instrucciones

63
For

For en Matlab

for k=f:s:t
Instrucciones a realizar
end

En esta estructura tenemos:


Variable Significado
k Variable ı́ndice del bucle
f Valor inicial de k
s El incremento de k
t Último valor que puede tomar k
Se debe tener en cuenta que k no debe ser redefinido dentro del propio bucle. Si se
hace, el bucle podrı́a no funcionar como se esperaba.

64
For

Ejercicio

Cree una función que reciba un número entero positivo n y calcule


n
X (−1)k ∗ k
2k
k=0

65
For

Solución

function [ suma ] = EjercicioSuma(n)


suma=0;
if (n>0)
for k=0:1:n
suma=suma+((-1)∧k*k) / (2∧k);
end
end
end

66
For

Ejercicio

Cree una función que recibe dos vectores de números y calcula el error relativo entre
cada par de ellos.

67
For

Solución

function [ errores ] = ErrorRelativo( a,b)


m=size(a);
n=size(b);
if (m(1)==n(1) && m(2)==n(2))
errores=zeros(m(1),m(2));
for i=1:1:m(2)
errores(i)=abs(b(i)-a(i))/abs(b(i));
end
else
errores=0;
end
end

68
While

While ... end

En este tipo de ciclo o bucle se repiten las instrucciones deseadas mientras que una
condición booleana sea verdadera, en caso contrario, se detiene el ciclo.

Falso
Condición

Verdadero

Instrucciones

69
While

While en Matlab

Tiene la siguiente estructura

...

while (P)

Instrucciones a realizar

end

...

70
While

Ejercicio

Realice un script que recibe un número y divida un número a la mitad, hasta que
la diferencia del valor anterior y el actual sea menor a 0,0004

71
While

Solución

x=input(’Ingrese un número: ’);


x1=x/2;
n=1;
error=abs(x-x1);
while error>0.0004;
x=x1;
x1=x/2;
error=abs(x-x1);
n=n+1;
end
disp([’Se realizaron ’ num2str(n) ’ divisiones’])

72
While

Serie de Taylor

Realice una función en Matlab que recibe:


• f: una función matemática.
• c: el valor en que se centra el polinomio.
• n: la cantidad de términos que se quieren usar.
• val: el valor de la función que se quiere.
El programa devuelve la aproximación de la serie de Taylor en el valor deseado.

73
While

Solución

function [aproxTaylor] = Taylor(f,c,n,val)}

syms x;
aproxTaylor=0
for i=0:n
df=diff(f,i)
termino=double(subs(df,x,c))*(val-c)^i/factorial(i);
aproxTaylor=aproxTaylor+termino;
end

end

74
While

Ejercicio

Modifique la función anterior de manera que:


Reciba:
• f: una función matemática.
• c: el valor en que se centra el polinomio.
• val: el valor de la función que se quiere.
• tol: la tolerancia permitida (en cuanto al error relativo).
• n: la cantidad máxima de términos a utilizar.

Retorne: Una matriz con cuatro columnas: la primera indica el número del grado
del polinomio, la segunda el valor del término asociado, la tercera la aproximación
y la cuarta el error relativo.

75
While

Solución
function [mPol] = TaylorPol2(f,c,val,tol,n)
syms x;
error=1;
i=0;
Pol=0;
while error>tol
if (i>n)
break
end
mPol(i+1,1)=i;
df=diff(f,i);
term=double(subs(df,x,c))/factorial(i)*(val-c)^i;
mPol(i+1,2)=term;
Pol=Pol+term;
mPol(i+1,3)=Pol;
if i>1
error=abs(mPol(i+1,3)-mPol(i,3))/abs(mPol(i+1,3));
end
mPol(i+1,4)=error;
i=i+1;
end
end

76

También podría gustarte