Está en la página 1de 96

Introducción

a Matlab
PROGRAMACIÓN NUMÉRICA
Agenda

Introducción Tipos de datos Acceso a elementos y Operaciones Matrices especiales


nativos: matrices, submatrices de una aritméticas
vectores y escalares matriz

Estructuras Estructuras iterativas Algunas funciones Funciones definidas Graficación de datos


condicionales comunes por el usuario y funciones
Introducción
Un modelo matemático puede ser definido como una
ecuación que expresa las características esenciales de un
Sistema físico o procesos en términos matemáticos.

Un modelo puede ser representado por una relación


funcional entre variables dependientes, independientes,
parámetros y funciones de esfuerzo.

3
Modelo
𝑦 = 𝑓 𝑡, 𝑝𝑎𝑟á𝑚𝑒𝑡𝑟𝑜𝑠, 𝑓𝑢𝑛𝑐𝑖𝑜𝑛𝑒𝑠 𝑓𝑜𝑟𝑧𝑎𝑛𝑡𝑒
Variable Dependiente (y) es una característica que usualmente refleja el
comportamiento o estado del Sistema.

Variable independiente (t), dimensiones, como el tiempo y el espacio, a lo largo de


las cuales se determina el comportamiento del sistema.

Parámetros: constantes que reflejan las propiedades o la composición del sistema.

Funciones forzantes: influencias externas que actúan sobre el sistema.

4
Ejemplo
Suponiendo que un saltador de bungee está en pleno vuelo, un modelo
analítico para la velocidad del saltador, teniendo en cuenta la
resistencia, es

𝑔𝑚 𝑔𝑐𝑑
𝑣 𝑡 = 𝑡𝑎𝑛ℎ 𝑡
𝑐𝑑 𝑚

La variable dependiente es la velocidad 𝑣, la variable independiente es


el tiempo 𝑡, los parámetros son la masa 𝑚 y el coeficiente de resistencia
𝑐𝑑 , la función forzante es la aceleración gravitacional 𝑔

Access the text alternative for slide images.


5
Resultados del Modelo
El modelo puede utilizarse para
generar una representación gráfica
del sistema.
Por ejemplo, el gráfico siguiente
representa la velocidad de un
saltador de 68.1 kilogramos,
suponiendo un coeficiente de
resistencia de 0.25 kilogramos por
metro

6
Modelado Numérico
Algunos modelos de sistemas se presentan como funciones implícitas o
como ecuaciones diferenciales que pueden resolverse mediante métodos
analíticos o numéricos.
Ejemplo: la ecuación de velocidad del saltador de bungee es la solución
analítica de la ecuación diferencial:
𝑑𝑣 𝑐𝑑 2
=𝑔− 𝑣
𝑑𝑡 𝑚
donde el cambio de velocidad viene determinado por las fuerzas gravitatorias
que actúan sobre el saltador frente a la fuerza de resistencia.

7
Métodos Numéricos
Para resolver el problema utilizando
un método numérico, observe que la
tasa de cambio de velocidad en el
tiempo puede aproximarse como:
𝑑𝑣 ∆𝑣 𝑣 𝑡𝑖+1 − 𝑣 𝑡𝑖
≈ =
𝑑𝑡 ∆𝑡 𝑡𝑖+1 − 𝑡𝑖

Access the text alternative for slide images.


8
Método de Euler
Sustituyendo la diferencia finita en la ecuación diferencial se
obtiene
𝑑𝑣 𝑐𝑑 2 𝑣 𝑡𝑖+1 −𝑣 𝑡𝑖 𝑐𝑑 2
=𝑔− 𝑣 , donde =g− 𝑣 𝑡𝑖
𝑑𝑡 𝑚 𝑡𝑖+1 −𝑡𝑖 𝑚

Resolviendo para
𝑐𝑑 2
𝑣 𝑡𝑖+1 = 𝑣 𝑡𝑖 + g − 𝑣 𝑡𝑖 𝑡𝑖+1 − 𝑡𝑖
𝑚
new = old + slope × step
9
Resultado Numérico
La siguiente gráfica se obtiene
al aplicar el método de Euler en
intervalos de 2 segundos.
¿Como podemos mejorar la
solución?

Pasos más pequeños

10
Bases para los modelos
numéricos
Las leyes de conservación constituyen la base de muchos
modelos. Diferentes campos de la ingeniería y la ciencia aplican
estas leyes a diferentes paradigmas dentro del campo. Entre
estas leyes se encuentran:
◦ Conservación de la masa.
◦ Conservación del momento.
◦ Conservación de la carga.
◦ Conservación de la energía.

11
Métodos Numéricos

12
Introducción a Matlab
Programación Numérica
MATLAB
Matlab (Matrix laboratory) es un sistema interactivo de software para
computo numérico y graficación. Como su nombre lo sugiere, Matlab
es especialmente diseñado para computo matricial.
Matlab cuenta con una gran variedad de capacidades gráficas y
puede ser extendido a través de programas escritos en su propio
lenguaje de programación.
Matlab está diseñado para resolver problemas numéricos, es decir
aritmética de precisión finita.

FACULTAD DE CIENCIAS Propedeutico 2008 14


MATLAB
MATLAB utiliza tres ventanas principales:
◦ Ventana de comandos: se utiliza para introducir comandos y datos.
◦ Ventana(s) gráfica(s) - se utiliza(n) para mostrar diagramas y gráficos.
◦ Ventana de edición: se utiliza para crear y editar archivos M
(programas).
Dependiendo de la plataforma de su ordenador y de la versión de
MATLAB utilizada, estas ventanas pueden tener diferentes aspectos.

15
Modo calculadora
La ventana de comandos de MATLAB puede utilizarse como una
calculadora en la que se pueden escribir comandos línea a línea.
Cada vez que se realice un cálculo, MATLAB asignará el resultado a
la variable incorporada ans
Ejemplo:
>> 55 - 16
ans =
39

16
Variables
Aunque utilizar la variable ans puede ser útil para realizar cálculos
rápidos, su naturaleza transitoria la hace menos útil para la
programación.
MATLAB permite asignar valores a los nombres de las variables.
MATLAB puede almacenar valores individuales, así como matrices;
puede almacenar datos numéricos y texto.
MATLAB no requiere que usted pre-inicialice una variable; si no existe,
MATLAB la creará.

17
Escalares
Para asignar un único valor a una variable, basta con escribir
el nombre de la variable, el signo = y el valor:
>> a = 4
a =
4
Los nombres de las variables deben empezar con una letra,
pueden contener letras, números y el símbolo de subrayado
(_)

18
Convención de nombres de
variables
Los nombres de variables deben iniciar con una letra y no deben contener espacios en blanco, o
caracteres especiales. Matlab es sensible a las mayúsculas por lo que las siguientes variables
son distintas:
» suma = 25;
» SUMA = 30;

En el curso se usará la convención de nombres conocida como Camelcase, donde las palabras se
delimitan por mayúsculas a excepción de la letra inicial, ejemplo:
◦ primerRaiz
◦ sumaTotal
◦ nuevoValor
Escalares
MATLAB no muestra el resultado de un cálculo si añades el
punto y coma (;) al final de una línea. El cálculo se realiza,
pero no se muestra el resultado en pantalla.
Puede pedir a MATLAB que informe del valor almacenado en
una variable escribiendo su nombre:
>> a
a =
4

20
Escalares
Puede utilizar la variable compleja i (o j) para representar el número
imaginario unitario.
Puede decirle a MATLAB que le devuelva los valores con varios formatos
diferentes utilizando el comando format. Algunos ejemplos son:
short - formato de punto fijo escalado con 5 dígitos.
long - formato de punto fijo escalado con 15 dígitos para doble y 7 dígitos
para simple.
short eng - formato de ingeniería con al menos 5 dígitos y una potencia
que es múltiplo de 3 (útil para prefijos SI).

21
Ejemplos
>> format short; pi
ans =
3.1416
>> format long; pi
ans =
3.14159265358979
>> format short eng; pi
ans =
3.1416e+000
>> pi*10000
ans =
31.4159e+003
Nota - el formato sigue siendo el mismo a menos que se emita otro comando
de formato.

22
Matrices, vectores y arreglos
MATLAB puede manejar automáticamente matrices rectangulares
de datos: las matrices unidimensionales se denominan arreglos y
las bidimensionales matrices.
En MATLAB, las matrices se separan mediante paréntesis
cuadrados [ y ].Las entradas dentro de una fila se separan
mediante espacios o comas.
Las filas se separan con punto y coma

23
Arreglos
>> a = [1 2 3 4 5 ]
a =
1 2 3 4 5
>> b = [2;4;6;8;10]
b =
2
4
6
8
10

MATLAB no muestra los corchetes. Sí utiliza una fuente monoespaciada,


como Courier, los valores mostrados deberían alinearse correctamente

24
Matrices
Una matriz bidimensional de datos se introduce fila por fila, con
espacios (o comas) separando las entradas dentro de la fila y
punto y coma separando las filas:
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
25
Ejercicio
Define las siguientes matrices o vectores

1 4 𝑏 = 10 −10 21
𝐴= 2 5
3 6
0
𝑐= 1
0
Comandos de arreglos útiles
El operador de transposición (apóstrofo) puede utilizarse para
transponer una matriz. Por ejemplo,
◦ Sí b es un vector fila, b' es un vector columna.
◦ Sí b es complejo, b' contiene el conjugado complejo de b.
El comando who le informará de los nombres de las variables
utilizadas; whos también le dará el tamaño, la memoria y los tipos
de datos de las matrices.

27
Accediendo elementos de un
arreglo
Las entradas individuales de una matriz pueden leerse y establecerse
utilizando el índice de la posición en la matriz o el renglón y la columna.
El valor del índice comienza con 1 para la entrada en la esquina superior
izquierda de una matriz y aumenta hacia abajo una columna - lo siguiente
muestra los índices para una matriz de 4 renglones, 3 columnas:

1 5 9
2 6 10
3 7 11
4 8 12

28
Accediendo arreglos
C =
2 4 9
3 3 16
3 0 8
10 13 17 Los elementos pueden también
C(2) reportara 3 accederse por renglón y columna:
C(2,1) reportara 3
C(4) reportara 10
C(3,2) reportara 0
C(13) reportara un error C(5,1) reportara un error

29
Creando Arreglos
zeros(r,c) creará una matriz de ceros de r filas por c columnas.
zeros(n) creará una matriz n por n de ceros.
ones(r,c) creará una matriz de unos de r filas por c columnas.
ones(n) creará una matriz n por n de unos.
help elmat tiene, entre otras cosas, una lista de las matrices
elementales

30
Ejercicio
Reporta el resultado de las siguientes instrucciones:

A = ones(5,5); D = [1,2;3,4];
B = 25*A; I = [1,0;0,1];
B(5) C = D-I;
C(2,2) = 25;
C
Creando Arreglos
El operador dos puntos : es útil en varios contextos. Puede utilizarse para
crear una matriz de puntos linealmente espaciados utilizando la notación
inicio:difval:límite donde inicio es el primer valor de la matriz,
difval es la diferencia entre valores sucesivos de la matriz y límite es el
límite del último valor (el último valor es menor o igual a límite).
>>1:0.6:3
ans =
1.0000 1.6000 2.2000 2.8000

32
Operador dos puntos :
Si diffval se omite, el valor default es 1:
>>3:6
ans =
3 4 5 6
Para crear una serie decreciente, diffval debe ser negativo:
>> 5:-1.2:2
ans =
5.0000 3.8000 2.6000
Si start+diffval>limit para una serie creciente o start+diffval<limit para una serie
decreciente, resulta en un arreglo vacío. Por ejemplo:
>>5:2
ans =
Empty matrix: 1-by-0
Para crear una columna, aplica la transpuesta al arreglo resultante. Ejemplo, (3:6)′ no 3:6′

33
Creando Arreglos - linspace
Para crear un vector de renglones con un número específico de puntos
linealmente espaciados entre dos números, utilice el comando linspace.
linspace(x1, x2, n) creará una matriz linealmente espaciada de n
puntos entre x1 y x2
>>linspace(0, 1, 6)
ans = 0 0.2000 0.4000 0.6000 0.8000 1.0000
Si se omite n, se crean 100 puntos. Para generar una columna, transponga
la salida del comando linspace.

34
Creando Arreglos - logspace
Para crear un vector renglón con un número especifico de puntos espaciados
logarítmicamente entre dos números use logspace.
logspace(x1, x2, n) crea un arreglo logarítmicamente espaciad de n puntos
entre 10𝑥1 y 10𝑥2
>>logspace(-1, 2, 4)
ans =
0.1000 1.0000 10.0000 100.0000

Si n es omitida, se crean 100 puntos. Para generar una columna, transponda la


salida de logspace.

35
Ejercicio 1
Genera un arreglo de que contenga los valores del 0 al 20 en pasos de 0.5

A=0:0.5:20
Genera un arreglo de 10 a 0 en pasos de 0.5

B=10:-0.5:0
Genera un arreglo de 50 elementos que inicie en -100 y termine en 100

c=linspace(-100,100,50)
Genera un arreglo 100 elementos de -45 hasta 45

c=linspace(-45,45,100)
Números Complejos
Todas las operaciones anteriores pueden utilizarse con cantidades complejas
(es decir, valores que contienen una parte imaginaria introducidos mediante
i o j y visualizados mediante i)
>> x = 2+i*4; (or 2+4i, or 2+j*4, or 2+4j)
>> y = 16;
>> 3 * x
ans =
6.0000 +12.0000i
>> x+y
ans =
18.0000 + 4.0000i
>> x'
ans =
2.0000 - 4.0000i
37
Operaciones Matemáticas
Las operaciones matemáticas en MATLAB pueden realizarse tanto en escalares
como en matrices. Dentro de cada nivel de precedencia, los operadores se
evalúan de izquierda a derecha. Los operadores comunes, por orden de
prioridad, son:
∧ Exponenciación 4∧2= 8
− Negación (operador unario) −8 = −8
∗ Multiplicación y División 2 ∗ pi = 6.2832
∕ pi/4 = 0.7854
∖ División izquierda 6\2 = 0.3333
+ Suma y resta 3+5=8
− 3 − 5 = −2

38
Orden de operaciones
El orden de las operaciones se establece por su precedencia, siendo los
paréntesis los de más alta precedencia, y posteriormente de izquierda a
derecha:
◦ y = −4 ^ 2 resulta en y = −16

ya que la exponenciación ocurre primero debido a su mayor prioridad por


defecto, pero
◦ y = (−4) ^ 2 resulta en y = 16

ya que la operación de negación del 4 tiene lugar primero debido al


paréntesis
39
Orden de operaciones
◦ y = 8/2*6 resulta en y = 24

ya que la regla de izquierda a derecha ejecuta primero la división para dar


4 y luego la multiplicación para dar 4*6 y obtener 24

40
Cálculos vectoriales y matriciales
El operador * para matrices se define como el producto exterior o lo que comúnmente se
llama "multiplicación de matrices".

El número de columnas de la primera matriz debe coincidir con el número de renglones de la


segunda matriz. El tamaño del resultado tendrá tantos renglones como la primera matriz y
tantas columnas como la segunda matriz.

La excepción es la multiplicación por una matriz de 1 por 1, que en realidad es una


operación de matriz. El operador ^ para matrices hace que la matriz se multiplique por sí
misma un número especificado de veces.

Nota: en este caso, la matriz debe ser cuadrada.

41
Cálculos elemento por elemento
Matlab puede realizar cálculos elemento por elemento en una matriz o
vector. MATLAB define .* y ./ (observe los puntos) como los operadores de
multiplicación y división de elemento a elemento.
Para las operaciones de matriz, ambas matrices deben tener el mismo
tamaño o una de las matrices debe ser 1 por 1 (es decir, un escalar).
La exponenciación de matrices (elevar cada elemento a la potencia
correspondiente en otra matriz) se realiza con .^.De nuevo, para las
operaciones de matrices, ambas matrices deben ser del mismo tamaño o
una de las matrices debe ser de 1 por 1.

42
Ejercicio 2
Utilizando los arreglos anteriormente creados obtén el resultado
de las siguientes operaciones:
𝑝 𝑥 = 25𝑥 2 + 𝑥 − 15, 0 al 20 en pasos de 0.5
𝑞 𝑥 = 1Τ𝑥 2 , de 10 a 0 en pasos de 0.5
𝑟 𝑥 = 𝑥 5 − 12𝑥 3 + 25𝑥 2 + 6𝑥 − 1, arreglo de 50 elementos que
inicie en -100 y termine en 100
Funciones Integradas
Existen varias funciones integradas para crear y manipular datos. La función
de ayuda incorporada puede darle información tanto sobre lo que existe
como sobre cómo se utilizan esas funciones:
◦ help elmat enumerará las funciones elementales de creación y manipulación de
matrices, incluidas las funciones para obtener información sobre matrices.
◦ help elfun enumerará las funciones matemáticas elementales, incluidas las
funciones trigonométricas, exponenciales, complejas, de redondeo y de resto.

La función lookfor buscará texto en los archivos de ayuda y puede ser útil
si conoce el propósito de una función, pero no su nombre.

44
Archivos-M
Mientras que los comandos se pueden introducir directamente en
la ventana de comandos, MATLAB también le permite poner
comandos en archivos de texto llamados archivos-M.
Los archivos M se llaman así porque se almacenan con una
extensión .m, existen dos tipos principales de archivos:
◦ Scripts (guion)
◦ Funciones

45
Script
Un archivo de script es simplemente un conjunto de comandos de MATLAB que se
guardan en un archivo - cuando MATLAB ejecuta un archivo de script, es como si se
introdujeras los comandos almacenados en el archivo en la ventana de comandos.
Los scripts pueden ejecutarse escribiendo su nombre (sin extensión .m) en la
ventana de comandos, seleccionando el comando Depurar, Ejecutar (o Guardar y
Ejecutar) en la ventana de edición, o pulsando la tecla F5 mientras se está en la
ventana de edición.
Las dos últimas opciones guardarán cualquier edición que haya realizado, mientras
que la primera ejecutará el archivo tal y como existe en la unidad.

46
Gráficas
MATLAB dispone de un potente conjunto de funciones gráficas
integradas.
Dos de las funciones principales son:
◦ plot (para trazar datos bidimensionales) y
◦ plot3 (para trazar datos tridimensionales).

Además de los comandos de trazado, MATLAB le permite etiquetar y


anotar sus gráficos utilizando los comandos title, xlabel, ylabel
y legend.

47
Gráficación
hold on indica a MATLAB que mantenga los datos actuales trazados y
añada los resultados de cualquier otro comando de trazado al gráfico. Esto
continúa hasta el comando hold off, que indica a MATLAB que borre el
gráfico y comience de nuevo si se da otro comando de trazado. hold on
debe utilizarse después de realizar el primer trazado de una serie.
subplot(m, n, p)
◦ Subplot, divide la ventana de la figura en una matriz m×n de ejes. Nota - el
primer subplot está arriba a la izquierda, luego la numeración continúa a través
del renglón.

48
Ejemplo
t = [0:2:20]’;
g = 9.81; m = 68.1; cd =
0.25;
v = sqrt(g*m/cd) *
tanh(sqrt(g*cd/m)*t);
plot(t, v)

Access the text alternative for slide images.


49
Ejemplo
t = [0:2:20]’;
g = 9.81; m = 68.1; cd = 0.25;
v = sqrt(g*m/cd) *
tanh(sqrt(g*cd/m)*t);
plot(t, v)

title('Plot of v versus t')


xlabel('Values of t')
ylabel('Values of v')
grid
50
Usando subplot
t = 0:50;
y = cos(0.1*pi*t-pi/2);
w = zeros(1,51);
w(1:11)=1;
subplot(3,1,1);plot(t,y);
subplot(3,1,2);plot(t,w,'r');
subplot(3,1,3);plot(t,w.*y,'g');
Graficación
%Script para graficar la función sin(t)
%generando el arreglo del tiempo
t = linspace(0,2*pi,50);
f = sin(t); %evaluando el seno
plot(t,f); %graficando la función
title('Sin(t)');
xlabel('t');ylabel('sin(t)');
Ejercicio 3
Grafica las siguientes funciones en los intervalos solicitados:
𝑓 𝑥 = 𝑒 2𝑥+1 , 0 ≤ 𝑥 ≤ 15
9.81
𝑔 𝑡 = 𝑡𝑎𝑛ℎ 𝑡 , 0 ≤ 𝑡 ≤ 20 x = 0:0.5:20;
0.25
p=25*(x.^2)+x-15;
25−𝑡 2 −𝑡 plot(x,p)
ℎ 𝑡 = , 10 ≤ 𝑡 ≤ 100
𝑙𝑛 𝑡

𝑝 𝑥 = 25𝑥 3 − 10𝑥 2 + 𝑥 − 5, −10 ≤ 𝑥 ≤ 10


Opciones de trazado
MATLAB puede utilizar varios colores, estilos de punto y estilos de
línea. Estos se especifican en la función plot.
El caso por defecto para un único conjunto de datos es crear una
línea azul sin puntos.
Ejemplos de especificadores de trazado:
◦ ‘ro:’ - línea de puntos roja con círculos en los puntos.
◦ ‘gd’ - rombos verdes en los puntos sin línea.
◦ ‘m--’ - línea discontinua magenta sin símbolos de puntos.

54
Estilos de línea
Estilo de línea Descripción Línea resultante
"-" Línea continua
"--" Línea discontinua
":" Línea de puntos
Línea de puntos y
"-."
rayas
Marcador
Marcador Descripción
resultante
"o" Círculo
"+" Signo más
"*" Asterisco
"." Punto
"x" Cruz
Marcadores "_"
"|"
Línea horizontal
Línea vertical
"square" Cuadrado
"diamond" Rombo
Triángulo hacia
"^"
arriba
Triángulo hacia
"v"
abajo
Triángulo hacia la
">"
derecha
Triángulo hacia la
"<"
izquierda
"pentagram" Pentagrama
"hexagram" Hexagrama
Colores
Código de color
Nombre del color Nombre corto Triplete RGB Apariencia
hexadecimal
"red" "r" [1 0 0] "#FF0000"
"green" "g" [0 1 0] "#00FF00"
"blue" "b" [0 0 1] "#0000FF"
"cyan" "c" [0 1 1] "#00FFFF"
"magenta" "m" [1 0 1] "#FF00FF"
"yellow" "y" [1 1 0] "#FFFF00"
"black" "k" [0 0 0] "#000000"
"white" "w" [1 1 1] "#FFFFFF"
Cadenas
Constantes alfanuméricas se encierran entre apostrofes (‘)
>> f = 'Miles ';
>> s = 'Davis’
Las cadenas pueden ser unidad (concatenadas) de la siguiente manera
>> x = [f s]
x =
Miles Davis
Elipsis (...): Se utiliza para continuar líneas largas
>> a = [1 2 3 4 5 ...
6 7 8]
a =
1 2 3 4 5 6 7 8

58
Cadenas
No puede utilizar una elipsis entre comillas simples para continuar una
cadena. Pero puede unir cadenas más cortas con elipsis
>> quote = ['Any fool can make a rule,' ...
' and any fool will mind it']
quote =
Any fool can make a rule, and any fool will mind it

59
Algunas funciones útiles de los
caracteres
Función Descripción
n = length(s) Numero de caracteres, n, en una cadena, s.
Compara dos cadenas, s1 and s2; si son iguales regresa verdadero (b
b = strcmp(s1,s2)
= 1). Si no son iguales regresa falso (b = 0).
n = str2num(s) Convierte una cadena, s, en un número, n.
s = num2str(n) Convierte un número, n, en una cadena, s.
s2 = strrep(s1,c1,c2) Reemplaza caracteres en una cadena
Regresa el índice de inicio de cualquiera ocurrencia de la cadena s2 en
i = strfind(s1,s2)
la cadena s1
S = upper(s) Convierte una cadena a mayúsculas
s = lower(S) Convierte una cadena a minúsculas

60
Salida
La forma más sencilla de mostrar el valor de una matriz es
escribir su nombre, pero eso no funcionará en archivos de función
o script. En su lugar, utilice la función disp.

disp(value)

Para desplegar una cadena, encierra la frase en comillas simples.


Por ejemplo, disp('Yes’) imprimirá Yes

61
disp
disp(X) muestra el valor de la variable X name = 'Alice';
sin imprimir el nombre de la variable. Otra
age = 12;
forma de mostrar una variable es escribir su
nombre, que muestra X = delante del X = [name,' will be ',num2str(age),'
valor. this year.'];
Si una variable contiene un arreglo vacío, disp(X)
disp no muestra nada.
Entrada
La forma más fácil de obtener un valor del usuario es a través de
la función input:
◦ n = input('promptstring’)
En la Ventana de comandos aparecera los caracteres promptstring, y
cualquier valor que sea escrito se almacenara en n. Por ejemplo, si
escribes pi, n tendra el valor 3.1416…
◦ n = input('promptstring', 's’)
El valor que escribas se almacenara como una cadena. Por ejemplo, si
escribes pi, n tendrá las letras p y i en un arreglo de caracteres de 21.

63
input
x = input(prompt) muestra el texto en prompt y espera a que el usuario introduzca un valor
y termine con la tecla Return. El usuario puede introducir expresiones, como pi/4 o rand(3), y
utilizar variables en el área de trabajo.

Si el usuario presiona la tecla Return sin introducir nada, input devuelve una matriz vacía.

Si el usuario introduce una expresión no válida en la línea de comandos, MATLAB muestra el


mensaje de error correspondiente y, después, vuelve a mostrar la línea de comandos.

prompt = ‘Proporciona un valor? ‘;


x = input(prompt)
y = x*10
Ejemplo
%Mostrando un scrip para graficar x^3-2x^2+x
disp('Este programa grafica x^3-2x^2+x en el
intervalo establecido por el usuario');
low = input('Proporciona el limite inferior: ')
high = input('Proporciona el limite superior: ')
n = input('Cuantos puntos deseas considerar? ')
x = linspace(low, high, n);
p = x.^3-2*x.^2+x;
plot(x,p);
title('p(x) = x^3-2x^2+x');
xlabel('x');ylabel('p(x)');grid
Ejercicio 4
Crea el script para realizar las gráficas del ejercicio anterior, pero en los intervalos
especificados por el usuario:

𝑓 𝑥 = 𝑒 2𝑥+1
9.81
𝑔 𝑡 = 𝑡𝑎𝑛ℎ 𝑡
0.25

25−𝑡 2 −𝑡
ℎ 𝑡 =
𝑙𝑛 𝑡

𝑝 𝑥 = 25𝑥 3 − 10𝑥 2 + 𝑥 − 5
Operadores Relacionales
Ejemplo Operador Relación
x == 0 == Igual
unit ~= ‘m’ ~= Diferente
a < 0 < Menor que
s > t > Mayor que
3.9 <= a/3 <= Menor o igual que
r >= 0 >= Mayor o igual que

67
Operadores Lógicos
~x (Not): verdadero si x es falso (o cero); falso de otra
manera.

x & y (And): verdadero si tanto x como y son verdaderas (o


distintas de cero)

x || y (Or): verdadero si x o y es verdadera (o distinta de


cero)
68
Orden de Operaciones
Los paréntesis tienen la más alta prioridad. En seguida las expresiones
matemáticas tienen la siguiente prioridad, seguidas de los operadores
relacionales, y posteriormente los operadores lógicos. En igualdad de
condiciones, las expresiones se ejecutan de izquierda a derecha.
Not es el operador lógico de mayor prioridad, seguido de And y, por último, Or.
Si x=5, 3<x<4 matemáticamente debería ser falso, pero se calcula como
una expresión en MATLAB como:
3<5<4, lo que lleva a true<4 se convierte en 1, y 1<4 por lo que es
verdadero.
Para corregir esta expresión utilice los paréntesis: (3<x)&(x<4)

69
Estructuras de Decisión
Las decisiones se toman en MATLAB utilizando estructuras if, que también
pueden incluir varias ramas elseif y posiblemente una rama else.
La decisión de qué rama se ejecuta se basa en el resultado de condiciones
que son verdaderas o falsas. Si un árbol if llega a una condición verdadera,
esa rama (y sólo esa rama) se ejecuta, entonces el árbol termina.
Si un árbol if llega a una condición else sin ejecutar ninguna rama
anterior, se ejecutará esa rama. Si la condición es una matriz, se considera
verdadera si y sólo si todas las entradas son verdaderas (o distintas de cero).

70
Ejemplo
if expression If (x > y)

statements fprintf('%8.4f es mayor que %8.4f\n', x, y)

elseif expression elseif (x < y)

statements fprintf('%8.4f es menor que %8.4f\n', x, y)

else else

statements fprintf('%8.4f es igual que %8.4f\n', x, y)

end end
Ejemplo
%Mostrando un scrip para graficar x^3-2x^2+x
disp('Este programa grafica x^3-2x^2+x en el intervalo establecido por el
usuario');
low = input('Proporciona el limite inferior: ')
high = input('Proporciona el limite superior: ')
n = input('Cuantos puntos deseas considerar? ')
if(low > high)
temp = low;
low = high;
high = temp;
end
x = linspace(low, high, n);
p = x.^3-2*x.^2+x;
plot(x,p);
title('p(x) = x^3-2x^2+x');
xlabel('x');ylabel('p(x)');grid
Salida formateada
Para darle formato a los datos de salida puedes utilizer la función
fprintf :
fprintf('format', x, y,...)
donde format es una cadena que especifica como quieres que
el valor de la viarables x, y, se muestren en pantalla, puedes
incluir frases que deseas que se muestren en pantalla.
Los valores de las variables se mostraron de acuerdo al formato
especificado.
73
Formatos y Código de Control
Los siguientes formatos especifican como deseas que se muestren los datos:
%d – formato entero
%e - formato científico con e minúscula
%E - formato científico con E mayúscula
%f – formato decimal
%g – versión corta %e o %f
\n – inicia una nueva línea
\t - tabulador
\\ - imprime el carácter \
Ejemplo
fprintf('The value of pi is %8.4f \n',pi)

The value of pi is 3.1416

74
Tipo de valor Conversión Detalles
Entero, con
%d o %i Base 10
signo
%u Base 10
Entero, sin %o Base 8 (octal)
signo %x Base 16 (hexadecimal), letras minúsculas a–f
%X Igual que %x, letras mayúsculas A–F
Notación de punto fijo (use un operador de precisión
%f para especificar el número de dígitos después del

fprintf punto decimal).


Notación exponencial, como 3.141593e+00 (use un
%e operador de precisión para especificar el número de
dígitos después del punto decimal).
fprintf(formatspec,var) da formato Igual que %e, pero en mayúsculas, como
Número de
a var como se especifica en punto %E
3.141593E+00 (use un operador de precisión para
formatSpec. especificar el número de dígitos después del punto
flotante
decimal).
El más compacto de %e o %f, sin ceros finales (use un
fprintf('Hello'); %g operador de precisión para especificar el número de
dígitos significativos).
El más compacto de %E o %f, sin ceros finales (use un
myvar = 'a' %G operador de precisión para especificar el número de
fprintf('hello = %d',myvar); dígitos significativos).
%c Carácter único
Caracteres o
Vector de caracteres o arreglo de cadenas. El tipo del
cadenas %s
texto de salida es el mismo que el tipo de formatSpec.
Ejemplo
if r == c if x >= 0 && y >= 0
A(r,c) = 2; disp('primer cuadrante')
elseif x >= 0 && y < 0
elseif abs(r-c) == 1
disp('cuarto cuadrante')
A(r,c) = -1; elseif x < 0 && y < 0
else disp('segundo cuadrante')
A(r,c) = 0; else
end disp('tercer cuadrante')
end
Ejemplo
if x >= 0
if y >= 0
if(A ~= 0)
disp('primer cuadrante') if(A < B)
else
disp('cuarto cuadrante’) C = A-B
end
else
else
if y >= 0 C = A-B
disp('segundo cuadrante')
else end
disp('tercer cuadrante’) else
end
end C = 0
end
Ejercicio 5
Calcula las coordenadas polares 𝑟, 𝜃, a partir de las coordenadas cartesianas utilizando las
siguientes ecuaciones:
x y 𝜃
𝑟= 𝑥2 + 𝑦2 <0 >0 𝑡𝑎𝑛−1 𝑦Τ𝑥 + 𝜋
<0 <0 𝑡𝑎𝑛−1 𝑦Τ𝑥 − 𝜋
<0 =0 𝜋
=0 >0 𝜋Τ2
=0 <0 −𝜋Τ2
=0 =0 0
>0 >0 || <0 || =0 𝑡𝑎𝑛−1 𝑦Τ𝑥
Seleccion
Las selecciones se realizan en MATLAB utilizando estructuras switch, que
pueden incluir una elección por default con la palabra reservada
otherwise.
La decisión de qué rama se ejecuta se basa en comparar el valor de alguna
expresión de prueba con los valores adjuntos a los diferentes casos.
Si la expresión de prueba coincide con el valor asociado a un caso, se
ejecutará la rama de ese caso. Si ningún caso coincide y hay una sentencia
otherwise, se ejecutará esa rama.

79
Selección
switch switch_expression n = input('Enter a number: ');
switch n
case case_expression case -1
statements disp('negative one')
case case_expression case 0
disp('zero')
statements case 1
... disp('positive one')
otherwise
otherwise
disp('other value')
statements end
end
Ejemplo
x = [12 64 24];
plottype = 'pie3';
switch plottype
case 'bar'
bar(x)
title('Bar Graph')
case {'pie','pie3'}
pie3(x)
title('Pie Chart')
otherwise
warning('Unexpected plot type. No plot created.')
end
Ejercicio 6
Realiza un script que permite elegir el intervalo de graficación, y la función a graficar. El script
deberá solicitar el rango de graficación [low, high] y deberá desplegar el siguiente menú:

Especifica que función deseas graficar:

1. 2𝑥 2 + 𝑥 − 5

2. log 2𝑥 2 + 1

3. sinh 𝜋𝑡 + 𝜋Τ2

4. cos 2𝜋𝑡 − 𝜋Τ2

Utiliza una estructura switch para elegir la función a graficar.


Ciclos
Otra estructura de programación son los ciclos, en los que
las mismas líneas de código se ejecutan varias veces.
Existen dos tipos de ciclos:
◦ for termina después de un número determinado de
repeticiones establecido por una variable índice.
◦ while finaliza en función de una condición lógica.

83
for
for index = start:step:finish
statements
end

Donde la variable index toma valores sucesivos en


vector creado usando el operador : (dos puntos).

84
Vectorizacion
A veces, es más eficiente hacer que MATLAB realice cálculos en
un arreglo entero en lugar de procesar un arreglo elemento por
elemento. Esto se puede hacer a través de la vectorización.
for Vectorización
i = 0; t = 0:0.02:50;
for t = 0:0.02:50 y = cos(t);
i = i + 1;
y(i) = cos(t);
end

85
Ejemplo
s=10;
H = zeros(s);
for c = 1:s
for r = 1:s
H(r,c) = 1/(r+c-1);
end
end
Ejercicio
Desarrolla la versión vectorizada del siguiente código:

tstart=0; tend=20; ni=8;


t(1)=tstart;
y(1)=12 + 6*cos(2*pi*t(1)/(tend-tstart));
for i=2:ni+1
t(i)=t(i-1)+(tend-tstart)/ni;
y(i)=10 + 5*cos(2*pi*t(i)/(tend-tstart));
end
Ejercicio 7
Utilizando un ciclo for, varia los parámetros a y b de la siguiente
función:
𝑓 𝑥 = 𝐴 cos 𝑡 + 𝑏𝜋

Crea un vector t de 0 a 2𝜇, crea una gráfica que muestre como


cambia la función con valores de A de 1 a 5 en pasos de 1 y b=0.
Crea una segunda gráfica donde se muestre como cambia la
función A=1, y variando b de 0 a 2 en pasos de 0.5.
while
Un ciclo while se ejecuta un mientras la condición sea
verdadera, por lo que se ejecuta un número indeterminado de
veces. La sintaxis general es
while condition
statements
end
Donde la condition es una expresión lógica. Si la condition
es verdadera, se ejecutan los comandos statements hasta
terminar, entonces la condition se volverá a comprobar.

89
Terminación temprana
A veces será útil salir antes de tiempo de un ciclo for o while - esto puede
hacerse utilizando una sentencia break, generalmente junto con una
estructura if. Ejemplo :
x = 24
while (1)
x = x − 5
if x < 0, break, end
end
Produce los valores 24, 19, 14, 9, 4, y -1, entonces se detiene.

90
Corrección
x = 24 x = 24
while (1) while ( x >= 0)
x = x − 5
x = x − 5
if x < 0
end
break
end
end
continue
La sentencia continue salta hasta el final del ciclo end y regresa a la sentencia inicial (for o
while) permitiendo que el ciclo continue hasta que el ciclo termine. Ejemplo:

for i = 1:100
if mod (i, 17)~=0
continue
end
disp([num2str(i) ' is evenly divisible by 17'])
end

Muestra todos los números menores o iguales a 100 que son múltiplos del 17.

92
Corrección
for i = 1:100
if mod (i, 17)~=0
continue
end
disp([num2str(i) ' is evenly divisible by 17'])
end
for i = 1:100
if mod (i, 17)==0
disp([num2str(i) ' is evenly divisible by 17’])
end
end
Ejercicio 8
Solicite al usuario un numero 𝑥. Utilice un ciclo while para mostrar
todos los múltiplos de x que son menores a 100.
Por ejemplo:
Si x=10, el script deberá mostrar 10, 20, 30, 40, 50, 60, 70, 80
Si x= 8, el script deberá mostrar 8, 16, 24, 32, 40, 48, 56, 64, 72,
80, 88, 96
Ejercicio 9
Calcule la siguiente sumatoria utilizando un ciclo while

𝑠 = ෍ 𝑥𝑖
𝑖

Los números que serán sumados deberán ser solicitados al usuario. Indique que,
para terminar la lectura de datos, el usuario deberá ingresar un valor negativo.
Asegúrese de no incluir el numero negativo en la sumatoria.
Por ejemplo: El usuario proporciona los valores 7,5,3,9,2,-1, el programa termina y el
resultado es 26
Ejercicio 10
Una forma de aproximar la raíz cuadrada de un numero 𝑎 es utilizando iterativamente la siguiente
ecuación:
𝑥𝑜𝑙𝑑 + 𝑎Τ𝑥𝑜𝑙𝑑
𝑥𝑛𝑒𝑤 =
2
𝑥𝑜𝑙𝑑 es el valor inicial de la aproximación a la raíz cuadrad que debe ser inicializada a algún valor, por
ejemplo: 𝑥𝑜𝑙𝑑 = 𝑎. El error de la aproximación se calcula con la siguiente ecuación:
𝑥𝑛𝑒𝑤 − 𝑥𝑜𝑙𝑑
𝜀=
𝑥𝑛𝑒𝑤
Cuando se alcanzado un valor menor a una tolerancia especificada por el usuario, por ejemplo 0.001,
se ha alcanzado el valor de la raíz cuadrada de a. Implementa este método utilizando un ciclo while.
Nota: Recuerda que el valor de 𝑎 debe ser positivo, de lo contrario esta aproximación es invalida.

También podría gustarte