You are on page 1of 15

Taller: Métodos numéricos con MATLAB. SESIÓN # 1.

SESIÓN # 1: Programación en MATLAB.

MATLAB® es un ambiente de programación que permite realizar aplicaciones de diverso índole


matemático y de ingeniería, orientado al desarrollo de algoritmos, análisis de datos, visualización
y cálculos numéricos. Fue desarrollado por la compañía MathWorks y es utilizado como
herramienta de investigación y desarrollo en diversas áreas del ámbito académico e industrial,
tales como automotriz, aeroespacial, comunicaciones, electrónica, automatización, entre otras.

1.1 Ventana de comandos.

La ventana de comandos es el área principal de trabajo de MATLAB. Por medio de ella se


pueden realizar cálculos y/o ejecutar programas de MATLAB.

a) El símbolo >> es el indicador de que la ventana de comandos está lista para ejecutar el
trabajo requerido.
b) Si se asigna una variable o se ejecuta una función y no se quiere desplegar el resultado se
utiliza el símbolo punto-y-coma (;) al final de la línea.
c) Para limpiar la pantalla se utiliza el comando clc.

1.2 Operaciones matemáticas.

Una gran ventaja de MATLAB es que puede realizar desde cálculos aritméticos sencillos hasta
operaciones avanzadas, tanto de valores escalares como vectoriales, además de que contiene un
gran número de funciones ya programadas para la implementación de cálculos o despliegue de
gráficas relacionadas con procedimientos y/o aplicaciones tanto de matemáticas como de
ingeniería en general.

A continuación se muestran los operadores aritméticos para MATLAB:

+ Suma.
- Resta.
* Multiplicación.
/ División.
^ Operador de potencia.

No perder de vista que los operadores matemáticos tienen una prioridad asignada
automáticamente, y que si se quiere controlar el orden en que se realicen las operaciones se deben
utilizar símbolos de agrupación. Para MATLAB el símbolo de agrupación son los paréntesis: ( ).

Enrique René Bastidas Puga. Página 1 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
Ejemplo 1.2.1. Realiza la siguiente operación en MATLAB:

1+4
=
2+3
>> x = (1 + 4)/(2 + 3)

x =

Para realizar la operación del Ejemplo 1.2.1 es mandatorio el uso de los paréntesis para definir
que primero se realicen las operaciones de suma tanto en el numerador como en el denominador
y posteriormente la división. De lo contrario el resultado no será de acuerdo a la operación
deseada precisamente por la prioridad de los operadores, ya que la división tiene una prioridad
más alta que la suma. En caso de omitir los paréntesis se tendría el siguiente resultado:
>> x = 1 + 4 / 2 + 3

x =

MATLAB tiene predefinidos algunos valores que son muy utilizados para cálculos matemáticos,
tales como:

i : −1 .

j : −1 .

pi : π.

También se cuenta con un gran número de funciones que realizan cálculos predeterminados.
Algunas de las funciones más utilizadas son:
abs( ) cos( ) exp( ) log( ) log10( )
log2( ) sin( ) sqrt( ) tan( )

Ejemplo 1.2.2. Realiza las siguientes operaciones en MATLAB:

a) = |−10|.
b) = cos .
c) = .
d) = ln 1 .
e) = √25.

Enrique René Bastidas Puga. Página 2 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
>> x1 = abs(-10)

x1 =

10

>> x2 = cos(pi)

x2 =

-1

>> x3 = exp(0)

x3 =

>> x4 = log(1)

x4 =

>> x5 = sqrt(25)

x5 =

1.3 Ayuda del sistema.

La documentación de ayuda contenida en el programa de MATLAB es la herramienta más


poderosa con la que se cuenta para conocer el funcionamiento básico de los comandos y la forma
de utilizarlos (sintaxis). El comando help se utiliza para desplegar la ayuda básica de las
funciones escritas en MATLAB.

Ejemplo 1.3.1. con la siguiente instrucción se obtiene la ayuda de la función sqrt( ):

>> help sqrt


sqrt Square root.
sqrt(X) is the square root of the elements of X. Complex
results are produced if X is not positive.

Enrique René Bastidas Puga. Página 3 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
1.4 Programación en MATLAB.

Los programas escritos para MATLAB se conocen como archivos-M, ya que se graban con
extensión “.m”. MATLAB cuenta con un editor local que permite crear o modificar archivos-M.

Antes de ejecutar o desarrollar un programa en MATLAB se debe indicar el directorio donde se


van a buscar/grabar los archivos. Esto se hace en la barra de herramientas de la ventana principal,
en el campo “Current Folder:”.

Las funciones son programas que además de contener comandos de MATLAB, regresan uno o
varios valores como resultado y también permiten recibir parámetros de entrada.

El encabezado de una función (primera línea) especifica la(s) variables(s) de los resultados de
salida, el nombre de la función y los parámetros de entrada, los cuales son opcionales. Cuando se
graba el archivo-M de una función se recomienda utilizar el nombre de la función como nombre
del archivo.

Una práctica de programación que se recomienda utilizar, es incluir comentarios aclaratorios, así
como una descripción del uso de la función después del encabezado del programa, lo cual servirá
para utilizarse con el comando help. Para ello se utiliza el símbolo %.

Ejemplo 1.4.1: Escribe una función que calcule el error relativo entre dos valores calculados de
manera iterada, considerando un valor nuevo (vn) y un valor anterior (va):

! − "
ER = x 100 %
!

La función debe recibir como parámetros de entrada los valores va y vn.


Nombra “errRel.m” al archivo de la función.
Regresa el valor del error relativo en la variable ER.
Realiza la descripción de la función después del encabezado para que se pueda utilizar el
comando help.
a) Ejecuta la función para los siguientes valores: vn = 1 y vn = 0.5.
b) Ejecuta la función para los siguientes valores: vn = 1 y vn = 1.01.

Enrique René Bastidas Puga. Página 4 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
Para empezar a escribir una función en MATLAB se abre el editor local siguiendo el menú:

File → New → Function.

Una vez abierto el editor de MATLAB se escribe el programa y se graba con el nombre indicado
en el folder de trabajo deseado.
function [ER] = errRel(vn, va)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Función que calcula el error relativo con la fórmula:
% | vn - va|
% ER = |--------| * 100 %
% | vn |
%USO:
% ER = errRel(vn, va)
%donde:
% ER - Error relativo
% vn - Valor Nuevo
% va - Valor Anterior
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ER = abs( (vn - va) / vn ) * 100;

end

Ejecución del inciso a):


>> [ER] = errRel(1, 0.5)

ER =

50

Ejecución del inciso b):


>> [ER] = errRel(1, 1.01)

ER =

1.0000

Enrique René Bastidas Puga. Página 5 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
1.5 Vectores y matrices.

El uso de MATLAB se basa en arreglos de vectores y matrices, de hecho un número escalar es


considerado como una matriz de 1x1.

La creación de vectores en MATLAB se puede realizar de dos formas:

a) De manera explícita para elementos arbitrarios.


>> A = [1, -2, 3, 0, 5]; %Genera el vector A = [1, -2, 3, 0, 5]

b) De manera implícita para valores equivalentes entre elementos:


>> A = [0 : 2 : 8]; %Genera el vector A = [0, 2, 4, 6, 8]

Para generar matrices se utiliza el símbolo ; como delimitador entre renglones.

Ejemplo 1.5.1. genera en MATLAB la siguiente matriz:

1 1 1
% = &−2 −2 −2'
0 2 4
>> B = [1, 1, 1; -2, -2, -2; 0, 2, 4];

Los índices de vectores o matrices nos permiten recuperar o modificar uno o varios elementos del
vector o matriz.
>> c = A(4) %Asigna a la variable c el valor del 4to elemento del vector A.

>> A(3) = 5 %Asigna el valor 5 al 3er elemento del vector A.

A continuación se enlistan algunas funciones de MATLAB relacionadas con vectores y matrices.


Con el comando help puedes conocer su funcionamiento:

length( ) max( ) mean( ) min( ) size( )


std( ) sum( )

MATLAB maneja las operaciones entre vectores y matrices de la misma manera en que maneja
operaciones entre números escalares. En este sentido corresponde al usuario seguir las reglas de
operaciones para vectores y matrices.

Por ejemplo: si se suman 2 vectores, estos deben ser del mismo tamaño, o si se multiplican dos
matrices, el número de columnas de la primera matriz debe ser igual al número de renglones de la
segunda.

Enrique René Bastidas Puga. Página 6 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
MATLAB además proporciona operadores de multiplicación, división y potencia de elemento a
elemento entre vectores y matrices. Algo similar como la suma de vectores, que es una suma de
elemento a elemento:

.* Multiplica dos vectores o matrices elemento a elemento.

./ Divide dos vectores o matrices elemento a elemento.

.^ Eleva un vector o matriz a cierta potencia elemento por elemento.

Ejemplo 1.5.2. Considera las siguientes matrices y resuelve las operaciones indicadas:

( = )2, 0, 1+ % = )3, −2, 5+

2 −1 4
,=- .
0 2 3

1 −1
/ = &1 −1'
1 −1
a) Calcula A + B.
b) Calcula C * D.
c) Multiplica A y B elemento por elemento.
d) Eleva cada uno de los elementos de la matriz C al cuadrado.
e) Calcula la suma de los valores del vector B.
f) Calcula la longitud del vector A.
g) Agrega el número 99 al final del vector A.

>> A = [2, 0, 1] %Primero se definen los vectores y las matrices.

A =

2 0 1

>> B = [3, -2, 5]

B =

3 -2 5

>> C = [2, -1, 4; 0, 2, 3]

C =

2 -1 4
0 2 3

>> D = [1, -1; 1, -1; 1, -1]

Enrique René Bastidas Puga. Página 7 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.

D =

1 -1
1 -1
1 -1

Ahora se realizan los cálculos:


>> a = A + B

a =

5 -2 6

>> b = C * D

b =

5 -5
5 -5

>> c = A .* B

c =

6 0 5

>> d = C.^2

d =

4 1 16
0 4 9

>> e = sum(B)

e =

>> f = length(A)

f =

>> A(4) = 99

A =

2 0 1 99

Enrique René Bastidas Puga. Página 8 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
1.6 Despliegue de mensajes/resultados personalizados en pantalla.

La instrucción disp( ) permite mandar mensajes a la pantalla. Por ejemplo:

>> disp('Mensaje personalizado:')


Mensaje personalizado:

La función sprintf( ) permite dar formato a cadenas de caracteres y puede utilizarse en


conjunto con la función disp( ) para que el despliegue de resultado en pantalla tenga algún
formato en particular.

Ejemplo 1.6.1. Despliega una tabla en la que el primer renglón sean encabezados pi, 2pi, 3pi y
4pi. En el segundo renglón desplegar los valores de π, 2π, 3π y 4π con 6 cifras decimales en
un espacio de 12 caracteres totales.
function tabla
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Función ejemplo para desplegar valores en forma de tabla.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clc

disp(sprintf('%12s','pi','2pi','3pi','4pi')) %Se despliegan las etiquetas


%de la tabla como una cadena
%de caracteres de 12 espacios.
disp(sprintf('%12.6f',pi,2*pi,3*pi,4*pi)) %Se despliegan los valores
%deseados con 6 cifras decimales
%en un espacio total de 12
%caracteres.

end

Al ejecutar las función se despliega en pantalla lo siguiente:


pi 2pi 3pi 4pi
3.141593 6.283185 9.424778 12.566371

1.7 Enunciados de control y ciclos.

El enunciado if/elseif/else ejecuta una o varias instrucciones siempre y cuando una


condición se cumpla:

if condición01
instrucciones
elseif condición02
instrucciones
else
instrucciones
end

Enrique René Bastidas Puga. Página 9 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
La siguiente tabla muestra los operadores de comparación para MATLAB:

Operador Descripción
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
== Igual que
~= Diferente que

El ciclo for realiza una cantidad determinada de iteraciones de una o varias instrucciones.

for k = 1 : num
instrucciones
end

El ciclo while ejecuta una o varias instrucciones mientras una condición se cumpla:

while condición
instrucciones
end

Ejemplo 1.7.1: Realiza una función que determine el n-ésimo término de la sucesión de
Fibonacci:

0! = 0!1 + 0!1 ; para n = 2, 3, 4, …

(f0 = 0 y f1 = 1).

La función debe recibir como parámetro de entrada el valor de n = k deseado. Utilizar la


variable k.
Si el parámetro k no es un entero positivo abortar la ejecución y desplegar un mensaje de
error.
El parámetro de salida de la función que sea la variable fn.
Nombra “fibonacci.m” al archivo de la función.
Realiza la descripción de la función después del encabezado para que se pueda utilizar el
comando help.
Desplegar una tabla con los valores de la sucesión desde n = 0, 1, …, k.
Ejecutar para los valores de n = 4 y 20.

Enrique René Bastidas Puga. Página 10 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
function [fn] = fibonacci(k)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Función que calcula el n-ésimo término de la sucesión de Fibonacci:
% fn = fn-1 + fn-2, para n = 2, 3, 4, ...
% f0 = 0, f(1) = 1.
% USO:
% [fn] = fibonacci(k)
% donde:
% fn : n-ésimo término de la sucesión de Fibonacci.
% k : valor de término solicitado.
%
% Escrito por René Bastidas.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clc %Se limpia la pantalla.


close all %Se cierran las ventanas que estuvieran abiertas.

if ( k <= 0 ) %Si "k" es negativo o cero se aborta la función.


disp('Valor de "k" inválido') %Se despliega mensaje de error.
fn = []; %Se asigna un valor nulo al parámetro de salida.
return %Instrucción para abortar la función.
elseif ( rem(k,1) ~= 0 ) %Si "k" no es entero se aborta la función.
disp('Valor de "k" inválido') %Se despliega mensaje de error.
fn = []; %Se asigna un valor nulo al parámetro de salida.
return %Instrucción para abortar la función.
end

%Se definen los valores iniciales de la sucesión:


fn0 = 0;
fn(1) = 1;
fn(2) = fn(1) + fn0;

disp(sprintf('%25s','n','fn')) %Se despliega el encabezado para la tabla.


disp(sprintf('%25.0f',0,fn0)) %Se despliega fn para n = 0.
disp(sprintf('%25.0f',1,fn(1)')) %Se despliega fn para n = 1.
disp(sprintf('%25.0f',2,fn(2)')) %Se despliega fn para n = 2.

for n = 3 : k %Se calculan los términos de la sucesión desde n = 3.


fn(n) = fn(n-1) + fn(n-2);
disp(sprintf('%25.0f',n,fn(n))) %Se despliega fn.
end

fn = fn(k); %Se regresa sólo el último valor calculado.

end

Enrique René Bastidas Puga. Página 11 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
Las ejecuciones para n = 4, 7 y 20 se muestran a continuación.
n = 4:
>>[fn] = fibonacci(4)
n fn
0 0
1 1
2 1
3 2
4 3

fn =

n = 20:
>>[fn] = fibonacci(20)
n fn
0 0
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34
10 55
11 89
12 144
13 233
14 377
15 610
16 987
17 1597
18 2584
19 4181
20 6765

fn =

6765

Enrique René Bastidas Puga. Página 12 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
ACTIVIDADES.

Ejercicio 1.1: Escribe una nueva función que determine el n-ésimo término de la sucesión de
Fibonacci tomando como base el programa escrito para el Ejemplo 1.7.1, pero utiliza un ciclo
while en lugar del ciclo for.

0! = 0!1 + 0!1 ; para n = 2, 3, 4, …

(f0 = 0 y f1 = 1).

La función debe recibir como parámetro de entrada el valor de n = k deseado. Utilizar la


variable k.
Si el parámetro k no es un entero positivo abortar la ejecución y desplegar un mensaje de
error.
El parámetro de salida de la función que sea la variable fn.
Nombra “fibonacci2.m” al archivo de la función.
Realiza la descripción de la función después del encabezado para que se pueda utilizar el
comando help.
Desplegar una tabla con los valores de la sucesión desde n = 0, 1, …, k.
Ejecutar para los valores de n = 4 y 20.
Utiliza el siguiente encabezado:
function [fn] = fibonacci2(k)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Función que calcula el n-ésimo término de la sucesión de Fibonacci:
% fn = fn-1 + fn-2, para n = 2, 3, 4, ...
% f0 = 0, f(1) = 1.
% USO:
% [fn] = fibonacci2(k)
% donde:
% fn : n-ésimo término de la sucesión de Fibonacci.
% k : valor de término solicitado.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Enrique René Bastidas Puga. Página 13 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
Ejercicio 1.2: Realizar una función que resuelva una ecuación cuadrática aplicando la fórmula
general: 2 + 3 + 4 = 0.

La función debe recibir como parámetros de entrada los valores de los coeficientes a, b
y c.
Nombra “formulaGral.m” al archivo de la función.
Utiliza el siguiente encabezado:
function [x1 x2] = formulaGral(a, b, c)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Función que resuelve una ecuación cuadrática de la forma:
% ax^2 + bx + c = 0
% aplicando la fórmula general.
%
% USO:
% [x1 x2] = formulaGral(a, b, c )
% donde:
% [x1 x2] : parámetros de salida donde se regresan los valores
% calculados.
% a, b, c : coeficientes de la ecuación cuadrática.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

a) Ejecuta la función para resolver la ecuación: − 2 = 0.


b) Ejecuta la función para resolver la ecuación: 2 − 8 − 42 = 0.

Enrique René Bastidas Puga. Página 14 de 15


Taller: Métodos numéricos con MATLAB. SESIÓN # 1.
Ejercicio 1.3: Realiza una función que calcule el valor de la hipotenusa de un triángulo
rectángulo utilizando el Teorema de Pitágoras.

La función debe recibir como entrada el valor de los catetos.


Nombra “hipotenusa.m” al archivo de la función.
Realiza la descripción de la función después del encabezado para que se pueda utilizar el
comando help.

function [c] = hipotenusa(b, c)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Función que la hipotenusa de un triángulo rectángulo aplicando el
% Teorema de Pitágoras.
%
% USO:
% [c] = hipotenusa(b, c )
% donde:
% c : hipotenusa del triángulo rectángulo.
% a, b : catetos del triángulo rectángulo.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

a) Ejecuta la función para valores de catetos 3 y 4.


b) Ejecuta la función para valores de catetos 5 y 12.

Referencias.

[1] Documentación de ayuda incluida en el software.

Enrique René Bastidas Puga. Página 15 de 15

You might also like