2. • Es un software de amplio uso en ingeniería.
• Permite realizar funciones desde las más básicas
como operaciones aritméticas hasta
programaciones que realicen una combinación de
operaciones específicas (conocidas también como
“scripts”).
• Permite graficar, crear y manipular vectores y
matrices, abrir, crear y modificar archivos externos,
etc.
¿Qué es Matlab?
3. Entorno de trabajo
Acá se pueden
ingresar paso a
paso cálculos,
información de
variables,
instrucciones, etc.
Acá se observan los archivos
que son accesados por el
programa
Acá se obsesrvan
las variables
declaradas y sus
valores, datos
creados por las
funciones, etc.
4. En la pestaña “Home” se puede hacer “click” en el botón
“New Script” y aparecerá el Editor. Es acá en donde se pueden
crear funciones específicas que desee el usuario.
5. * = multiplica
/ = divide
+ = suma
- = resta
x = b asigna a x el valor de b.
Ej: x=2
clear all – borra todas las
variables almacenadas
x^b – eleva x al valor de b
De igual manera:
power(x,b): x^b. Ej:
power(2,3)=8
pi = 3.14….
sin(x): función seno, igual para
cos(x), tan(x), atan(x), etc.
log(x) = ln(x)
log10(x) = logaritmo base 10
exp(x): e^x
sqrt(x): raíz cuadrada de x
abs(x): valor absoluto de x
Ctrl + C: finaliza ejecución de
script
tic…..toc: calcula tiempo
transcurrido entre el tic y el
toc (no usar cputime)
Comandos básicos
https://www.mathworks.com/help/
matlab/ref/cputime.html
6. • Vectores se declaran con una serie de números: v = [2
7 6], siempre con paréntesis cuadrados.
• Matrices se separan en filas con “;”: M = [1 5 9; 4 3 7; 6
6 1]
• Se puede solicitar o asignar un elemento específico de
un vector o matriz:
u = v(2) devuelve u = 7, v = M(3,2) devuelve v = 6
v(1) = 3 cambia el primer elemento de v a “3”, y
devuelve que ahora v = [3 7 6]
Vectores y matrices
7. • Se pueden declarar variables simbólicas para evaluar
funciones o para calcular derivadas. Por ejemplo: syms
x declara a x como variable.
• Luego se puede declarar una función de x, por ejemplo:
f = 3*x^2 (OJO: es necesario el signo de multiplicación)
• Se puede calcular la derivada: c=diff(f,x,1), el uno indica
que es la 1ra derivada. Resultado: c = 6*x
• Se puede evaluar la función: g=subs(f,x,4), evaluar f con
x = 4. Resultado: g = 48
• Se puede evaluar una función simbólica con todos los
valores de un vector y el resultado también será un
vector. Ej: g = subs(f,x,v) devuelve g = [ 243, 147, 108].
Variables simbólicas
8. • Igual se pueden declarar variables simbólicas, antes de
hacerlo se debe correr la siguiente línea: pkg load
symbolic.
• Octave no permite mezclar escalares y simbólicas en un
mismo vector, gráfico, etc. Hay dos soluciones:
1) Convertir la simbólica a escalar con el comando
double, que la convierte a un escalar almacenado con
doble precisión (queda sujeto a errores de redondeo,
mientras las simbólicas son exactas), también funciona si
Octave tarda demasiado resolviendo el problema o se
queda sin memoria.
2) En un número, se puede evaluar la función en
cualquier número: g=subs(f,x,4), multiplicar por cero y
sumarle el número de interés, que queda almacenado
como simbólica.
Variables simbólicas en Octave
9. • Para crear un gráfico, se necesitan vectores con los
valores a graficar. Ej: plot(x,y)
• Se puede crear un vector de números separados
regularmente: x = -5:1:5 crea x = (-5 -4 -3 -2 -1 0 1 2
3 4 5)
• Se puede graficar la función
f = x^2: plot(x,x.^2). El punto
Indica que se eleva cada elemento
de x al cuadrado y no el vector
como tal.
Gráficos
-5 -4 -3 -2 -1 0 1 2 3 4 5
0
5
10
15
20
25
10. • Otra forma de hacerlo:
clear all (para borrar lo almacenado hasta ahora)
u = -5:1:5 (crea u = [-5 -4 -3 -2 -1 0 1 2 3 4 5])
syms x
f = x^2
y = subs(f,x,u) (crea y = [ 25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25])
plot(u,y)
11. • Permiten generar una serie de instrucciones
enlazadas mediante condiciones y/o ciclos, de
manera que no deban ser ingresadas manualmente
por el usuario.
• Los scripts se crean y se corren con el botón “Run”
• Las funciones se declaran como tal y se pueden
correr desde la ventana de comandos:
function[variables a devolver]=nombre(información solicitada al usuario)
Instrucciones
end
Scripts o funciones de Matlab
12. • Las funciones se guardan en un archivo cuyo nombre
debe ser igual al nombre de la función, y no debe
contener espacios ni llamarse igual que otras
funciones de Matlab
• La información al usuario se puede solicitar también
mediante un “input” y se dejan los paréntesis
derechos vacíos. Ej: a = input('digite el valor de a: ')
• Se puede utilizar el signo “%” para escribir
comentarios o marcar líneas que temporalmente van
a ser ignoradas (También se puede hacer/deshacer
en bloque con el botón en el Editor)
• Un “;” al final de una línea evita que el resultado de
esa operación se muestre en la ventana de
comandos al ejecutar la función o script
13. Las funciones se corren de varias maneras:
• En el Command Window escribiendo toda la línea
inicial incluyendo los paréntesis cuadrados:
[variables a devolver]=nombre(información solicitada
al usuario)
• Esto es importante pues le indica que los valores
entre los paréntesis cuadrados deben ser
almacenados en el “Workspace” para uso futuro en
cálculos o funciones posteriores.
• Si se corren desde el botón “Run” Matlab no
reconoce que debe almacenar esas variables.
• Una manera de evitar el uso de los []’s, es el
comando assignin('base','variable',valor), este le
indica a Matlab que guarde el valor en la variable
indicada en el “workspace” llamado 'base' que es el
que se ve en la ventana de Matlab.
14. • Es el condicional más sencillo, ejecuta instrucciones
si se cumple una condición específica:
if (acá se indica la condición)
Instrucciones a ejecutarse si se cumple la condición;
end
Condicionales y ciclos - IF
15. x = input('Digite el valor de x: ');
d = mod(x,2); %calcula el residuo de dividir x por 2
if d==0; %si el residuo es cero
disp('El valor es par’)
end
Es decir, si se ingresa un valor par (ej: 4) va a
devolver el mensaje de que es par, de lo contrario, si
se ingresa un valor impar no devuelve mensaje.
Ejemplo 1
16. • Ejecuta una instrucción adicional si no se cumple la
condición especificada:
if (acá se indica la condición)
Instrucciones a ejecutarse si se cumple la condición;
else
Instrucciones a ejecutarse si no se cumple la condición;
end
Condicionales y ciclos – IF ELSE
17. x = input('Digite el valor de x: ');
d = mod(x,2); %calcula el residuo de dividir x por 2
if d==0; %si el residuo es igual a cero
disp('El valor es par')
else
disp('El valor es impar')
end
Es decir, va a devolver un mensaje ya sea indicando que
es par, o de lo contrario, devuelve un mensaje indicando
que es impar.
Ejemplo 2
18. • Permite añadir varias condiciones y además ejecuta una
instrucción adicional si no se cumple ninguna de ellas:
if (acá se indica la condición)
Instrucciones a ejecutarse si se cumple la condición;
elseif (acá se indica la condición 2)
Instrucciones a ejecutarse si se cumple la condición 2;
elseif (acá se indica la condición 3)
Instrucciones a ejecutarse si se cumple la condición 3;
else
Instrucciones a ejecutarse si no se cumple ninguna condición;
end
Condicionales y ciclos – IF ELSE anidados
19. • Ejecuta repetidamente una serie de instrucciones
siempre que se cumpla una condición específica:
while (acá se indica la condición)
Instrucciones a ejecutarse si se cumple la condición;
end
• Normalmente se debe incluir una instrucción previa de
manera que la condición se cumpla y el programa entre
al ciclo. Por ejemplo, si la condición es que x sea menor
a 10, se debe asegurar primero que x sea al menos 9, de
lo contrario el ciclo no se ejecutará
Condicionales y ciclos – WHILE
20. x = input('Digite un valor menor a 10: ')
while x<10 %mientras sea menor a 10 ejecutará la instrucción
x = x + 1
end
Observe que no se puso un punto y coma al final de la
instrucción, por lo que el resultado de la suma se mostrará en
la ventana de comando cada ves que se repita el ciclo.
Debería llegar hasta x=10, pues en el momento en que x=9,
aún ingresará al ciclo y le sumará 1, mostrando x=10, luego no
ingresará al ciclo de nuevo
Ejemplo 3
21. • Ejecuta una serie de instrucciones utilizando una
variable que toma valores indicados en el rango de la
condición, con un incremento específico entre cada
uno:
for (acá se indica el rango de valores y el incremento)
Instrucciones a ejecutarse a cada valor;
end
• Se utiliza cuando ya se conoce la cantidad de veces que
se debe repetir la instrucción o cuando conozco el
rango completo que debo utilizar
Condicionales y ciclos – FOR
22. a = input('Digite el valor valor inicial: ');
b = input('Digite el valor valor final: ');
for (y = a:b) %aplicar a valores desde x hasta y
x = y
end
De nuevo, no se puso un punto y coma al final de la
instrucción, por lo que el resultado se mostrará en la ventana
de comando cada vez que se repita el ciclo. Debería iniciar en
x=a y llegar hasta x=b, aumentado de uno en uno pues no se
indicó el incremento.
Ejemplo 4
23. También se puede indicar el incremento a utilizar entre los
valores del rango:
a = input('Digite el valor valor inicial: ');
b = input('Digite el valor valor final: ');
for (y=a:0.5:b) %aplicar a valores desde x hasta y, con un
incremento de 0.5
x = y
end
El resultado se mostrará en la ventana de comando cada vez
que se repita el ciclo. Debería iniciar en x=a y llegar hasta x=b
con un aumento entre valores de 0.5.
Ejemplo 5
24. • Tanto el FOR como el WHILE pueden ser utilizados para generar
el gráfico de x^2:
a = input('Digite el valor valor inicial: ');
b = input('Digite el valor valor final: ');
c = input('Digite el valor del incremento para el eje x: ');
n = 1; %en este caso debemos utilizar un contador que vaya
aumentando para indicar la posición en los vectores
for (d = a:c:b)
x(n) = d;
y(n) = d^2;
n = n + 1;
end
plot(x,y)
Ejemplo 6
25. • Tanto el FOR como el WHILE pueden ser utilizados para generar
el gráfico de x^2:
a = input('Digite el valor valor inicial: ');
b = input('Digite el valor valor final: ');
c = input('Digite el valor del incremento para el eje x: ‘);
n = 1;
while a<b %NOTA: no va a graficar el punto b
x(n) = a;
y(n) = a^2;
a = a + c;
n = n + 1;
end
plot(x,y)
Ejemplo 7
26. • Normalmente durante un ciclo se recalcula el valor
de la variable de interés.
• En algunos casos se requiere comparar el valor
anterior con el valor nuevo, por ejemplo en el
cálculo del error de métodos iterativos.
• Se acostumbra crear una variable que almacene el
valor anterior, por ejemplo, xant almacena el valor
anterior de x, y de esa manera puedo calcular en
cuanto aumentó el valor de un ciclo al otro:
diferencia = x - xant
Variables auxiliares o temporales
27. • Otra forma de hacerlo es almacenar los valores de x
en un vector durante el ciclo, la diferencia luego se
calcula entre una posición del vector y la anterior:
Ejemplo, si se creó el vector u = [x1 , x2, x3] tengo
que u(3) – u(2) = x3 – x2
28. • A la hora de solicitar funciones como información al
usuario dentro de un script, se deben realizar algunos
cambios para que Matlab reconozca la función:
syms x
f=input('Ingrese f(x)= ')
f=symfun(f,x); %=> para que Matlab la reconozca como
función con x como variable
• A la hora de realizar operaciones como evaluar o
derivar la función, la variable debe ir entre comilla:
ej: fa=subs(f,'x',a)
Funciones simbólicas en los scripts
29. • Matlab, como cualquier programa, puede sufrir por
errores de redondeo, por ejemplo, el siguiente
script falla en entrar al ciclo si x = 0.1 debido a estos
problemas:
x=0
dx=0.01
while x<=0.1
x=x+dx;
if x==0.1
disp('Todo bien')
end
end
Errores de redondeo
30. • En este script “mejorado” se puede observar porqué:
x=0
dx=0.01
while x<=0.1
x=x+dx;
if round(x,10)==0.1
a=sprintf('%20.18fn',0.1)
b=sprintf('%20.18fn',x)
disp('Todo bien')
end
end
• En ves del redondeo, se puede usar una tolerancia al
comparar números
• Otro ejemplo: correr el ejemplo 6 con intervalo de [1,
10] y c = 0.3, quitar el “;” de la 1ra línea del “for”
31. • El comando clear all es muy importante
• Al darse algún error durante la ejecución de un script,
alguna variable puede quedar almacenada
• Aún al corregir el error y correr de nuevo la función, en
ocasiones Matlab falla en recalcular o almacenar las
variables, por lo que se puede presentar un nuevo error
• Por esta razón, de ser posible siempre se debe incluir el
comando en los scripts de ser posible (Cuidado en
funciones anidadas o subprogramas)
• Ejemplo: correr dos veces el Ejemplo 6 sin usar clear all
en medio, cambiando el rango de las variables
Clear all
32. • Las programaciones deben hacerse siguiendo el
procedimiento que se especifica.
• Matlab hace muchas de las cosas que vemos en el
curso (p.e: tiene programada una solución de
Taylor o puede resolver sistemas de ecuaciones
mediante división de matrices).
• Sin embargo, la idea general es programarlas de
una manera que permita entender lo que el
software realiza para obtener esas soluciones y
anticiparse a posibles problemas.
Respecto a las programaciones del curso