Está en la página 1de 33

CM3207 - METODOS NUMERICOS PARA INGENIERIA

INTRODUCCION A MATLAB
¿Qué es Matlab?
• 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.
Entorno de trabajo

Acá se pueden
ingresar paso a Acá se obsesrvan
paso cálculos, las variables
información de declaradas y sus
variables, valores, datos
instrucciones, etc. creados por las
funciones, etc.
Acá se observan los archivos
que son accesados por el
programa
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.
Comandos básicos
* = multiplica pi = 3.14….
/ = divide sin(x): función seno, igual para
+ = suma cos(x), tan(x), atan(x), etc.
- = resta log(x) = ln(x)
x = b asigna a x el valor de b. log10(x) = logaritmo base 10
Ej: x=2 exp(x): e^x
clear all – borra todas las sqrt(x): raíz cuadrada de x
variables almacenadas abs(x): valor absoluto de x
x^b – eleva x al valor de b Ctrl + C: finaliza ejecución de
De igual manera: script
power(x,b): x^b. Ej: tic…..toc: calcula tiempo
power(2,3)=8 transcurrido entre el tic y el
toc (no usar cputime)
https://www.mathworks.com/help/
matlab/ref/cputime.html
Vectores y matrices
• 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]
Variables simbólicas
• 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 en Octave
• 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.
Gráficos
• 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 25

f = x^2: plot(x,x.^2). El punto 20

Indica que se eleva cada elemento 15

de x al cuadrado y no el vector
10

como tal.
5

0
-5 -4 -3 -2 -1 0 1 2 3 4 5
• 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)
Scripts o funciones de Matlab
• 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
• 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
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.
Condicionales y ciclos - IF
• 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
Ejemplo 1
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.
Condicionales y ciclos – IF ELSE
• 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
Ejemplo 2
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.
Condicionales y ciclos – IF ELSE anidados
• 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 – WHILE
• 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á
Ejemplo 3
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
Condicionales y ciclos – FOR
• 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
Ejemplo 4
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 5
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 6
• 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 7
• 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)
Variables auxiliares o temporales
• 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
• 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
Funciones simbólicas en los scripts
• 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)
Errores de redondeo
• 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
• 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.18f\n',0.1)
b=sprintf('%20.18f\n',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”
Clear all
• 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
Respecto a las programaciones del curso
• 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.

También podría gustarte