Sei sulla pagina 1di 45

MATLAB

INTRODUCCIÓN

MATLAB ES UNA DE LAS TANTAS HERRAMIENTAS SOFISTICADAS DE


COMPUTACIÓN DISPONIBLES EN EL MERCADO PARA RESOLVER
PROBLEMAS DE LAS MATEMÁTICAS.

EXISTEN OTRAS HERRAMIENTAS COMO MAPLE, MATHEMATICA, MATH


CAD, Y LENGUAJES DE ALTO NIVEL TALES COMO FORTRAN, C, C++
etc. CON LOS CUALES TAMBIÉN SE PUEDEN RESOLVER PROBLEMAS
DE LAS MATEMÁTICAS Y LA FÍSICA.

ENTONCES,
¿CUÁL ES LA DIFERENCIA?,
¿DÓNDE ESTÁN LAS VENTAJAS DE EMPLEAR UNO U OTRO LENGUAJE
DE PROGRAMACIÓN?

MATLAB ES SUPERIOR EN LOS CÁLCULOS QUE INVOLUCRAN


MATRICES Y REQUIEREN DE REPRESENTACIONES GRÁFICAS.
MAPLE ES SUPERIOR CUANDO SE TRATA DE CÁLCULOS SIMBÓLICOS.

FORTRAN, C++, etc. SON LENGUAJES PARA LA PROGRAMACIÓN DE


PROPÓSITO GENERAL Y SE ELIGEN PARA GRANDES APLICACIONES
TALES COMO SISTEMAS OPERATIVOS O SOFTWARE DE DISEÑO.

NOTA INTERESANTE: MATLAB ES UN PROGRAMA DE APLICACIONES


GRANDES, ORIGINALMENTE FUE ESCRITO EN FORTRÁN, MÁS TARDE
EN LENGUAJE C, PRECURSOR DE C++ !!!

¿QUÉ PASA CON LOS LENGUAJES DE ALTO NIVEL?


GENERALMENTE NO PROPORCIONAN FÁCIL ACCESO A LA
REALIZACIÓN DE GRÁFICOS (SE DICE QUE LOS GRÁFICOS ES EL
1
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
LENGUAJE DEL INGENIERO), MATLAB ES UNA APLICACIÓN QUE
DESTACA POR LA FACILIDAD DE LA REPRESENTACIÓN GRÁFICA.
TANTO MATLAB COMO LOS LENGUAJES DE ALTO NIVEL SON MUY
BUENOS PARA EL PROCESAMIENTO DE GRANDES CANTIDADES DE
DATOS, SIN EMBARGO, LA EJECUCIÓN DEL PROGRAMA ES MÁS
LENTA EN MATLAB, EXCEPTO CUANDO LOS DATOS ESTÁN DADOS EN
FORMA DE MATRICES, DONDE MATLAB SI ESTÁ ESPECIALIZADO.

MATLAB ES PARTICULARMENTE POPULAR PARA APLICACIONES DE


LA INGENIERÍA ELÉCTRICA, PERO SE EMPLEA CON FRECUENCIA EN
OTRAS INGENIERÍAS Y CASI SIEMPRE EN ANÁLISIS NUMÉRICO Y SUS
APLICACIONES, EN EL PROCESAMIENTO DE SEÑALES, DE IMÁGENES,
etc.

POR EJEMPLO, LAS IMÁGENES MÉDICAS SE GUARDAN COMO


ARCHIVOS dicom (estándar DIGITAL IMAGING and COMMUNICATION IN
MEDICINE) CON EXTENSIÓN .dcm

MATH WORKS PROPORCIONA UNA CAJA DE HERRAMIENTAS


(TOOLBOX) PARA IMÁGENES QUE PUEDE LEER ESOS ARCHIVOS E
INCLUYE UN GRAN CONJUNTO DE FUNCIONES PARA EL
PROCESAMIENTO DE IMÁGENES MÉDICAS.

2
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
AMBIENTE MATLAB
OBJETIVOS:
 INICIALIZAR MATLAB,
 IDENTIFICAR Y USAR LAS VENTANAS DE MATLAB,
 NOMBRAR Y USAR VARIABLES,
 COMPRENDER EL USO DE MATRICES,
 DEFINIR MATRICES SIMPLES,
 COMPRENDER EL ORDEN DE OPERACIÓN DE MATLAB,
 DIFERENCIAR ENTRE CÁLCULO ESCALAR, DE ARREGLOS Y
MATRICIAL EN MATLAB,
 EXPRESAR NÚMEROS EN NOTACIÓN CIENTÍFICA Y PUNTO
FLOTANTE,
 GUARDAR EL VALOR DE LAS VARIABLES USADAS EN UNA
SESIÓN DE MATLAB,
 GUARDAR UN NÚMERO DE COMANDOS EN UN ARCHIVO punto m.

DOCUMENTOS PARA EL ESTUDIO DE PROGRAMACIÓN CON MATLAB

 APRENDA MATLAB COMO SI ESTUVIERA EN PRIMERO. ESCUELA


TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES.
UNIVERSIDAD POLITÉCNICA DE MADRID. 2005
 MATLAB STUDENT VERSION. Learning MATLAB

INICIALIZACIÓN DE MATLAB
PARA INICIALIZAR MATLAB SE DEBE HACER CLIC EN EL ICONO DEL
ESCRITORIO. UNA VEZ ABIERTO APARECEN VARIAS VENTANAS DE
INFORMACIÓN Y DE TRABAJO DEL USUARIO.

VENTANAS DE MATLAB
EL AMBIENTE DE MATLAB SE MUESTRA EN LA FIG. 1. EN ELLA SE
MUESTRAN 4 VENTANAS DE MATLAB, LAS MISMAS QUE APARECEN
POR DEFECTO CUANDO SE INICIALIZA MATLAB.

3
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
ESTAS VENTANAS SON, DE IZQUIERDA A DERECHA:
 DIRECTORIO ACTUAL (CURRENT FOLDER WINDOW)
 VENTANA DE COMANDOS (COMMAND WINDOW)
 ESPACIO DE TRABAJO (WORKSPACE WINDOW)
 HISTORIA DE COMANDOS (COMMAND HISTORY WINDOW)

4
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
FIGURA 1 VENTANAS PRINCIPALES DE MATLAB

5
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
FIGURA 2

6
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
FIGURA 3
7
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
CUANDO SEA NECESARIO SE ABREN AUTOMÁTICAMENTE OTRAS
VENTANAS, POR EJEMPLO LA VENTANA DE GRÁFICOS, LA VENTANA
DEL EDITOR DE TEXTO, ETC. LAS QUE APARECEN EN LAS FIGS. 2 Y 3,
RESPECTIVAMENTE. PARA PERSONALIZAR EL ESCRITORIO LAS
VENTANAS PUEDEN SER DIMENSIONADAS POR EL USUARIO. LA
DESTINACIÓN DE LAS VENTANAS PRINCIPALES ES (DE IZQUIERDA A
DERECHA Y DE ARRIBA HACIA ABAJO):

 DIRECTORIO ACTUAL (CURRENT FOLDER WINDOW): LISTA


TODOS LOS ARCHIVOS EN LA CARPETA ACTUAL
(SELECCIONADA) MOSTRADA COMO CURRENT FOLDER.
CUANDO MATLAB INGRESA ARCHIVOS O GUARDA
INFORMACIÓN USA EL DIRECTORIO ACTUAL A MENOS QUE SE
INDIQUE ALGO DIFERENTE. SE PUEDE CAMBIAR DE VARIAS
MANERAS EL DIRECTORIO EMPLEADO POR MATLAB
 VENTANA DE COMANDOS (COMMAND WINDOW): ES UNA
MEMORIA DE TRABAJO AUXILIAR, SE PUEDEN GUARDAR LOS
VALORES CALCULADOS, MÁS NO LOS COMANDOS EMPLEADOS
PARA CALCULARLOS. PARA GUARDAR TALES COMANDOS SE
EMPLEA EL EDITOR DE TEXTOS DE MATLAB, EL QUE SERÁ
OBJETO DE ESTUDIO POSTERIORMENTE.
 VENTANA DEL ÁREA DE TRABAJO (WORKSPACE WINDOW):
MANTIENE INFORMADO AL USUARIO DE LAS VARIABLES QUE SE
DEFINEN CONFORME SE EJECUTAN LAS INSTRUCCIONES O
COMANDOS EN LA VENTANA DE COMANDOS. HACIENDO CLIC
CON EL BOTÓN DERECHO DEL MOUSE SOBRE LA BARRA CON
LAS ETIQUETAS DE LAS COLUMNAS (NAME VALUE CLASS) EL
USUARIO PUEDE SELECCIONAR LA INFORMACIÓN ADICIONAL
DESEADA. EN LA FIG. 4 SE MUESTRA LA INFORMACIÓN POR
DEFECTO Y LA LISTA DE INFORMACIÓN ADICIONAL. MATLAB
CONSIDERA POR DEFECTO QUE TODO NÚMERO ES DE PUNTO
FLOTANTE (NÚMERO CON PUNTO DECIMAL)

8
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
FIGURA

9
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
 HISTORIA DE COMANDOS (COMMAND HISTORY WINDOW)
REGISTRA LOS COMANDOS QUE SE ESCRIBEN EN LA VENTANA DE
COMANDOS. CUANDO SE SALE DE MATLAB O SE ESCRIBE clc SE
LIMPIA LA VENTANA DE COMANDOS PERO LA VENTANA HISTORIA DE
COMANDOS CONSERVA UNA LISTA DE ESTOS COMANDOS. LA
UTILIDAD RADICA EN QUE ELLO SIRVE PARA REVISAR LAS SESIONES
ANTERIORES DE TRABAJO O PARA TRANSFERIR COMANDOS A LA
VENTANA DE COMANDOS

EJERCICOS RESUELTOS
1. EMPLEAR MATLAB COMO CALCULADORA
a) ESCRIBIR EN LA VENTANA DE COMANDOS:
>> 5^2
Y MATLAB RESPONDE>
ans =
25
>>
b) EN LA VENTANA DE COMANDOS ESCRIBIR
>> cos(pi)
Y MATLAB RESPONDE
ans =
-1
>>
EJERCICIOS PROPUESTOS A RESOLVER EN LA CLASE.
>> 5+2
>> 5*2
>> 5/2
>> 3+2*(4+3)
>> 2.54*8/2.6
>> 6.3-2.1045
>> 3.6^2
>> sqrt(9)
>> sqrt(2)

LA IDEA QUE SUBYACE EN ESTOS EJERCICIOS, MUY SIMPLES, ES QUE


SE DEBEN TENER EN CUENTA LAS REGLAS ALGEBRAICAS

10
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
ESTÁNDARES EN EL ORDEN DE LAS OPERACIONES MATEMÁTICAS
CON MATLAB.

USO DE VARIABLES
EN LOS EJERCICIOS ANTERIORES SE REALIZARON DISÍMILES
OPERACIONES, DIRECTAMENTE, EN LA VENTANA DE COMANDOS. SIN
EMBARGO, ES RECOMENDABLE ASIGNAR LOS RESULTADOS DE LAS
OPERACIONES A VARIABLES.
EXISTEN REGLAS PARA EL USO DE VARIABLES EN MATLAB. TAMBIÉN
SE TIENEN CIERTAS RECOMENDACIONES FORMULADAS POR LOS
PROGRAMADORES EXPERIMENTADOS DE MATLAB, ELLAS SE DAN A
CONTINUACIÓN.

1. TODOS LOS NOMBRES DE VARIABLES DEBEN COMENZAR CON


UNA LETRA,
2. LOS NOMBRES PUEDEN TENER CUALQUIER CANTIDAD DE
DÍGITOS. PARA CONOCER LA MAGNITUD MÁXIMA DE CADA
VERSIÓN DE MATLAB EMPLEAR namelengthmax,
3. NO SE RECOMIENDA EL EMPLEO DE NOMBRES LARGOS, ESTO
PUEDE CONDUCIR A ERRORES,
4. EMPLEE NOMBRES QUE PUEDAN SER RECORDADOS
FÁCILMENTE Y QUE SEAN DESCRIPTIVOS DEL SIGNIFICADO DE
LA VARIABLE,
5. EN EL NOMBRE DE VARIABLE SÓLO ESTÁ PERMITIDO USAR
LETRAS, NÚMEROS Y GUIÓN BAJO.
6. PARA LAS variables SE RECOMIENDA EMPLEAR LETRAS
minúsculas Y MAYÚSCULAS PARA LAS CONSTANTES.

PARA COMPROBAR SI UN NOMBRE ES VÁLIDO O NO (VERDADERO=1,


FALSO=0) EMPLEAR LOS COMANDOS:
isvarname, iskeyword, wich

11
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
EJERCICIOS
>> isvarname agua-fria
ans=?
>> isvarname velocidad
ans=?
>> wich sin
ans=?

DECLARACIÓN Y OPERACIONES CON MATRICES SIMPLES


LAS MATRICES EN MATLAB SON EL TIPO DE DATO BÁSICO
EMPLEADO, DONDE:
- UN SOLO VALOR ES UNA MATRIZ DE UNA FILA Y UNA COLUMNA
Y SE INDICA COMO 1x1
- UNA LISTA DE VALORES ORDENADOS EN UNA FILA O EN UNA
COLUMNA ES UNA MATRIZ UNIDIMENSIONAL LLAMADA VECTOR,
- UNA TABLA DE VALORES ES UNA MATRIZ BIDIMENSIONAL.

NOTA: MATLAB PUEDE MANEJAR ARREGLOS DE ORDEN SUPERIOR.

¿CÓMO SE DECLARA UNA MATRIZ?


>> A = [5]
>> B1 = [2 5]
>> B2 = [2; 5]
>> C = [1 2; 5 7]

OPERACIONES CON ESCALARES

LA SINTAXIS PARA LAS OPERACIONES ENTRE DOS ESCALARES ES:


Operación Sintaxis
Suma a+b
Resta a-b
Multiplicación a*b
División a/b
Exponenciación a^b

12
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
EJEMPLO: RESOLVER LA SUMA DE a=3 CON b=5.
SOLUCIÓN:
>> a=3; b=5;%el signo = indica asignación de valor a variable
>> sum=a+b % las variables a, b y sum son localizaciones de memoria en
% la PC
EJEMPLO:
>>x=3; x=x+5 %esto demuestra que una asignación no es una igualdad
ORDEN DE LAS OPERACIONES MATEMÁTICAS
MATLAB SIGUE LAS REGLAS ALGEBRAICAS ESTÁNDARES PARA EL
ORDEN DE OPERACIONES:
- CUANDO HAY PARÉNTESIS, REALIZA LOS CÁLCULOS DE
ADENTRO HACIA AFUERA
- SEGUNDO, REALIZA OPERACIONES DE EXPONENCIACIÓN,
- TERCERO, REALIZA LAS OPERACIONES DE SUMA Y RESTA DE
IZQUIERDA A DERECHA.
EJEMPLO
CALCULAR EL ÁREA DE LA SUPERFICIE DE UN CILÍNDRO CIRCULAR
RECTO COMO EL DADO EN LA FIG. 5, con r=5 y h=10

FIGURA 5
SOLUCIÓN 1
>> radio=5; altura_cil=10;

13
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
>> S_cil=2*pi*radio^2+2*pi*radio*altura_cil
S_cil=
471.2389
SOLUCIÓN 2
>> radio=5; altura_cil=10;
>> S_cil=2*pi*radio*(radio +altura_cil)
S_cil=
471.2389
DISCUTIR EL RESULTADO SI NO SE ESCRIBE EL SIGNO DE
MULTIPLICACIÓN DELANTE DEL PARÉNTESIS.
¿CÓMO TRABAJA MATLAB EN CADA FORMA DE SOLUCIÓN DEL
PROBLEMA?

OPERACIONES CON ARREGLOS


LA FORMA MÁS SIMPLE DE DEFINIR UNA MATRIZ ES USANDO UNA
LISTA DE NÚMEROS, DENOMINADA LISTA EXPLÍCITA.

DECLARACIÓN DE MATRIZ
EJEMPLO. TECLEAR LAS SIGUIENTES MATRICES Y OBSERVAR LOS
RESULTADOS QUE PROPORCIONA MATLAB.
>> X = [1 2 5 7]
>> Y = [1; 2; 3; 4]
>> A = [1 2 3 4; 4 5 6 7; 1 4 8 9]
NOTA: LAS MATRICES CON INTERVALOS REGULARES SE INGRESAN
COMO SIGUE:
>> b= 1:5
Y MATLAB DEVUELVE
b= 1 2 3 4 5
QUE SON NÚMEROS CON INCREMENTO IGUAL A UNO. SI SE DESEA
OTRO INCREMENTO DIFERENTE DE UNO ENTONCES SE INTRODUCE LA
INSTRUCCIÓN SIGUIENTE:
>> b= 1:3:10
Y MATLAB DEVUELVE
14
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
b= 1 4 7 10

SUMA (RESTA) DE ARREGLOS


SEA
>> a = [1 2 3];
LA NUEVA MATRIZ b, FOMADA SUMANDO EL NÚMERO 5 A CADA
ELEMENTO DE a ES:
>> b =a+5
Y MATLAB DEVUELVE
b=
678
IDEM PARA LA RESTA.
LA MULTIPLICACIÓN Y LA DIVISIÓN TENDRÁN SIGNIFICADOS
ESPECÍFICOS:
MULTIPLICACIÓN CLÁSICA DE MATRICES
SEAN
A=[1 2 3];
B=[6 7 8];
ENTONCES PARA MULTIPLICAR ESTAS DOS MATRICES (VECTORES) SE
REQUIERE TRANSPONER EL VECTOR B, ASÍ SE TIENE QUE:
𝟔
𝑨𝑩´ = [𝟏 𝟐 ]
𝟑 [𝟕] = 𝟔 + 𝟏𝟒 + 𝟐𝟒 = 𝟒𝟒
𝟖
LA SINTAXIS DE MATLAB PARA ESTE PRODUCTO DE MATRICES ES:
>> A*B'
ans =
44
>>

MULTIPLICACIÓN PUNTO (ELEMENTO POR ELEMENTO)


SEAN
A=[1 2 3];
B=[6 7 8];

15
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
ENTONCES PARA EFECTUAR LA MULTIPLICACIÓN PUNTO DE ESTAS
DOS MATRICES (VECTORES) SE EMPLEA LA SINTAXIS DE MATLAB
SIGUIENTE:
C= A.*B
DESARROLLANDO TENDREMOS:
C=[1*6 2*7 3*8]= [6 14 24]
IGUAL SINTAXIS SE EMPLEA PARA LA DIVISIÓN PUNTO Y LA
EXPONENCIACIÓN PUNTO:
C= A./B
C= A.^2

NOTACIÓN CIENTÍFICA
SUPÓNGASE QUE SE REQUIERE REALIZAR ALGÚN CÁLCULO QUE
INVOLUCRE EL DIÁMETRO DEL NÚCLEO DE HIERRO, EL CUAL ES
IGUAL A 140 picómetros o dFe= 0.00000000014 m. EN NOTACIÓN
CIENTÍFICA ES d=1.4x10-10
EN MATLAB SE ESCRIBE EMPLEANDO LA LETRA e, DE LA SIGUIENTE
MANERA
d=1.4e-10
OBSÉRVESE QUE NO SE DEJA ESPACIO ENTRE EL NÚMERO, LA LETRA
e Y EL SIGNO MENOS.

GUARDAR EL VALOR DE LAS VARIABLES USADAS EN UNA SESIÓN DE


MATLAB

PARA GUARDAR LAS VARIABLES Y SUS VALORES CONTENIDOS EN LA


VENTANA ESPACIO DE TRABAJO Y OBTENIDOS EN UNA SESIÓN DE
TRABAJO DE MATLAB SE TIENEN LOS ARCHIVOS PUNTO MAT. EL
COMANDO UTILIZADO ES:
save <nombre_achivo>
EL nombre_archivo ES CUALQUIER NOMBRE ELEGIDO POR EL
USUARIO SIEMPRE QUE ESTÉ EN CONFORMIDAD CON LAS

16
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
CONVENCIONES DE NOMENCLATURA PARA LAS VARIABLES DE
MATLAB.
TAMBIÉN SE PUEDE ELEGIR OTRA VÍA, A SABER:
File → Save Workspace As…
DE LA BARRA DE MENÚ INGRESANDO UN NOMBRE PARA EL ARCHIVO
DE DATOS. ESE ARCHIVO SE GUARDA O ALMACENA EN EL
DIRECTORIO ACTUAL.
PARA RESTAURAR UN ÁREA DE TRABAJO SE ESCRIBE:
load<nombre_achivo>

ARCHIVOS punto m
ESTOS ARCHIVOS RECIBEN EL NOMBRE DE GUIONES (MATLAB script).
ES UN ARCHIVO DE TEXTO ASCII, SIMILAR A LOS ARCHIVOS DE
CÓDIGOS FUENTE DE C O FORTRAN. SON PROGRAMAS ESCRITOS CON
CÓDIGOS O INSTRUCCIONES DE MATLAB.

ABRIR EL EDITOR DE TEXTO DE MATLAB.

AL ABRIR EL EDITOR DE TEXTO DE MATLAB APARECE LA VENTANA


MOSTRADA EN LA FIG. 3

RESOLVER EL SIGUIENTE PROBLEMA TÌPICO DE LA ASIGNATURA


FÍSICA I
1) CREAR UN ARCHIVO punto m QUE PERMITA SOLUCIONAR EL
CÁLCULO DE LA FUERZA DE GRAVITACIÓN UNIVERSAL
EMPLEANDO LA LEY DE NEWTON. SEA LA EXPRESIÓN
(FÓRMULA):
𝒎𝟏 ∗ 𝒎𝟐
𝑭=𝑮
𝒓𝟐
DONDE: G=6.673x10-11 Nm^2/kg^2
m1=6x1024 kg, m2=7.4x1022 kg
DISTANCIA PROMEDIO ENTRE LA TIERRA Y LA LUNA 3.9x10 8 m

17
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
SOLUCIÓN
EN LA VENTANA DE TEXTO DE MATLAB SE TECLEAN LAS SIGUIENTES
INSTRUCCIONES Y COMENTARIOS:
%este es un programa para calcular la fuerza %DE
%GRAVITACIÓN UNIVERSAL ENTRE LA TIERRA Y LA LUNA
%empleando la Ley de Gravitación Universal de
Newton
G=6.67e-11;%constante de gravitación universal
m1=6.0e24;%masa de la Tierra
m2=7.4e22;%masa de la Luna
dist=3.9e8;%distancia media / la Tierra y la Luna
F=G*m1*m2/dist^2%magnitud de la fuerza
2) CREAR UN ARCHIVO punto m QUE PERMITA SOLUCIONAR EL
CÁLCULO DE LA FUERZA DE GRAVITACIÓN UNIVERSAL
EMPLEANDO LA LEY DE NEWTON CONSIDERANDO QUE LA
DISTANCIA ENTRE AMBOS CUERPOS CELESTES NO ES
CONSTANTE Y VARÍA ENTRE LOS LÍMITES (3.8 ; 4)x108.
CALCULAR LOS VALORES PARA 20 INTERVALOS IGUALES
DENTRO DEL INTERVALO DE DISTANCIA DADO.
𝒎𝟏 ∗ 𝒎𝟐
𝑭=𝑮
𝒓𝟐
DONDE: G=6.673x10-11 Nm^2/kg^2
m1=6x1024 kg
m2=7.4x1022 kg

SOLUCIÓN
%Programa para calcular la fuerza entre dos masas
%empleando Ley de Gravitación Universal de Newton
%para 20 intervalos de distancia
G=6.67e-11;%constante de gravitación universal
m1=6.0e24;%masa de la Tierra
m2=7.4e22;%masa de la Luna
dmin=3.8e8;%límite inferior de distancia
dmax=4e8;%límite superior de distancia
interv=1.0e6;dist=dmin:interv:dmax;
F=(G*m1*m2)./ dist.^2;%magnitud de la fuerza
18
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
19
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
DEBER 1.
1) OBTENER LOS RESULTADOS DE LAS SIGUIENTES OPERACIONES
EMPLEANDO A MATLAB COMO UNA CALCULADORA DIGITAL.
>> 5+2
>> 5*2
>> 5/2
>> 3+2*(4+3)
>> 2.54*8/2.6
>>6.3-2.1045
>>3.6^2
>>sqrt(9)
>>sqrt(2)
2) RESOLVER MEDIANTE PROGRAMACIÓN MATLAB LA SIGUIENTE
EXPRESIÓN:
𝒍𝒐𝒈(𝒂𝒙𝟐 + 𝒃𝒙 + 𝒄) − 𝒔𝒊𝒏(𝒂𝒙𝟐 + 𝒃𝒙 + 𝒄)
𝒇=
𝟒𝝅𝒙𝟐 + 𝒄𝒐𝒔(𝒙 − 𝟐)(𝒂𝒙𝟐 + 𝒃𝒙 + 𝒄)
SI SE CONOCE QUE a=1, b=3 y c=5. REALIZAR LOS CÁLCULOS EN EL
INTERVALO DE VALORES DE x (4; 10). ELIJA SU INTERVALO.
INVESTIGAR LAS FUNCIONES log; sin y cos DE MATLAB.
3) RESUELVA LOS SIGUIENTES EJERCICIOS:
𝟓+𝟑
𝟗−𝟏
𝟕
𝟓+𝟔∗𝟓−𝟐𝟐
𝟐 𝟒

𝟑 𝟗∗𝟓

4) INVESTIGAR:
- EMPLEO DEL COMANDO linspace
- EMPLEO DEL COMANDO logspace
- CÓMO EMPLEAR EL COMANDO format?

20
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
ACTIVIDAD 2
OBJETIVOS:

1. ENTRADA Y SALIDA DE DATOS CONTROLADAS POR EL


USUARIO (CONTINUACIÓN)
2. FUNCIONES TRIGONOMÉTRICAS Y OTRAS FUNCIONES
PARA EL ANÁLISIS DE DATOS
3. GRÁFICOS TRIDIMENSIONALES
4. EJERCITACIÓN CON FICHEROS scripts

21
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
Tabla de contenido
1 ENTRADA Y SALIDA DE DATOS CONTROLADAS POR EL USUARIO ... 23

2 FUNCIONES TRIGONOMÉTRICAS Y OTRAS FUNCIONES PARA EL


ANÁLISIS DE DATOS ..................................................................................... 24

FUNCIONES QUE ACTÚAN SOBRE VECTORES ..................................... 25

3 GRÁFICOS TRIDIMENSIONALES ............................................................... 26

4 EJERCITACIÓN CON FICHEROS script..................................................... 27

PROBLEMAS DE LA FÍSICA REVISITADOS ............................................. 28

CAIDA LIBRE de un cuerpo REVISITADA ............................................. 28

DEBER 2. EJERCITACIÓN EN GRUPOS AFINES EN CLASE. ..................... 29

PROGRAMA PARA EL CÁLCULO DE LA FUERZA RESULTANTE ......... 29

PROGRAMA PARA EL CÁLCULO DE LA ENERGÍA POTENCIAL


GRAVITACIONAL ASOCIADA CON CUALQUIER PAR DE PARTÍCULAS
...................................................................................................................... 31

PROGRAMA PARA EL CÁLCULO DE LA FUERZA GRAVITACIONAL


RESULTANTE .............................................................................................. 32

22
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
1 ENTRADA Y SALIDA DE DATOS CONTROLADAS POR EL USUARIO

FUNCTION disp(x); Display – despliega o muestra en pantalla

Ejemplo:

x=1:10; disp(x)

SE EMPLEA PARA MOSTRAR UNA RESPUESTA O


RESULTADO OBTENIDO EN UN PROGRAMA.

x=1:10; disp('Los valores de la matriz son: '); disp(x)

SALIDA CON FORMATO


LA FUNCTION fprintf(' ') PROPORCIONA MAYOR
CONTROL SOBRE LAS SALIDAS QUE OFRECE MATLAB.
EJEMPLOS:

vacas=5;fprintf('Hay %f vacas en el pastizal ',vacas )

%- ES EL MARCADOR DEL LUGAR DONDE SE VA A


INTRODUCIR EL VALOR DE LA VARIABLE vacas

f- INDICA UN TIPO DE FORMATO DE SALIDA

TIPO DE FORMATO
%f Notación decimal
%e Notación exponencial(científica)
%g Como sea más corto
%c Información tipo carácter
%s Cadena de caracteres

FORMATO ESPECIAL
\n Salto de línea

EJEMPLO DE USO:

x=1:5;fprintf('%8.2f \n',x);

23
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
2 FUNCIONES TRIGONOMÉTRICAS Y OTRAS FUNCIONES PARA EL
ANÁLISIS DE DATOS

sin(x) seno
cos(x) coseno
tan(x) tangente
asin(x) arco seno
acos(x) arco coseno
atan(x) arco tangente (devuelve un ángulo entre -
π/2 y +π/2)
atan2(x) arco tangente (devuelve un ángulo entre -
π y +π);

sinh(x) seno hiperbólico


cosh(x) coseno hiperbólico
tanh(x) tangente hiperbólica
asinh(x) arco seno hiperbólico
acosh(x) arco coseno hiperbólico
atanh(x) arco tangente hiperbólica

log(x) logaritmo natural


log10(x) logaritmo base 10
exp(x) función exponencial
sqrt(x) raíz cuadrada
sign(x) devuelve -1 si <0, 0 si =0 y 1 si >0.
Aplicada a un número complejo, devuelve un vector
unitario en la misma dirección
rem(x,y) resto de la división (2 argumentos que no
tienen que ser enteros)

round(x) redondeo hacia el entero más próximo


fix(x) redondea hacia el entero más próximo a 0
floor(x) valor entero más próximo hacia -∞
ceil(x) valor entero más próximo hacia +∞
gcd(x) máximo común divisor
lcm(x) mínimo común múltiplo
real(x) partes reales
24
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
imag(x) partes imaginarias
abs(x) valores absolutos
angle(x) ángulos de fase

FUNCIONES QUE ACTÚAN SOBRE VECTORES

LAS SIGUIENTES FUNCIONES SÓLO ACTÚAN SOBRE


VECTORES (NO SOBRE MATRICES, NI SOBRE ESCALARES):

max MÁXIMO ELEMENTO DE UN VECTOR. DEVUELVE EL


VALOR MÁXIMO XM Y LA POSICIÓN QUE OCUPA EN EL
VECTOR DADA EN LA VARIABLE IM
Sintaxis: [xm,im]=max(x)

min MÍNIMO ELEMENTO DE UN VECTOR. DEVUELVE EL


VALOR MÍNIMO Y LA POSICIÓN QUE OCUPA
Sintaxis: min(x)

sum SUMA DE LOS ELEMENTOS DE UN VECTOR


Sintaxis: sum(x)

cumsum DEVUELVE EL VECTOR SUMA ACUMULATIVA DE


LOS ELEMENTOS DE UN VECTOR (CADA ELEMENTO DEL
RESULTADO ES UNA SUMA DE ELEMENTOS DEL ORIGINAL)
Sintaxis: cumsum(x)

mean VALOR MEDIO DE LOS ELEMENTOS DE UN VECTOR


Sintaxis: mean(x)

std DESVIACIÓN ESTÁNDAR


std(x)

prod PRODUCTO DE LOS ELEMENTOS DE UN VECTOR


prod(x)

cumprod DEVUELVE EL VECTOR PRODUCTO ACUMULATIVO


DE LOS ELEMENTOS DE UN VECTOR cumprod(x)

sort ORDENACIÓN DE MENOR A MAYOR DE LOS


ELEMENTOS DE UN VECTOR X. DEVUELVE EL
25
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
VECTOR ORDENADO Y, Y UN VECTOR I CON LAS
POSICIONES INICIALES EN X DE LOS ELEMENTOS EN EL
VECTOR ORDENADO Y.
[y,i]=sort(x)

EN REALIDAD ESTAS FUNCIONES SE PUEDEN APLICAR


TAMBIÉN A MATRICES, PERO EN ESE CASO SE APLICAN POR
SEPARADO A CADA COLUMNA DE LA MATRIZ, DANDO COMO
VALOR DE RETORNO UN VECTOR RESULTADO DE APLICAR
LA FUNCIÓN A CADA COLUMNA DE LA MATRIZ,
CONSIDERADA COMO VECTOR. SI ESTAS FUNCIONES SE
QUIEREN APLICAR A LAS FILAS DE LA MATRIZ BASTA
APLICAR DICHAS FUNCIONES A LA MATRIZ TRANSPUESTA

3 GRÁFICOS TRIDIMENSIONALES

MATLAB TIENE POSIBILIDADES DE REALIZAR VARIOS TIPOS


DE GRÁFICOS 3D.
LA PRIMERA FORMA DE GRÁFICO 3D ES LA FUNCIÓN plot3,
QUE ES EL ANÁLOGO TRIDIMENSIONAL DE LA FUNCIÓN plot.

ESTA FUNCIÓN DIBUJA PUNTOS CUYAS COORDENADAS


ESTÁN CONTENIDAS EN 3 VECTORES, DIBUJA UNA LÍNEA
QUE UNE LOS PUNTOS (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc.
BIEN UNIÉNDOLOS MEDIANTE UNA LÍNEA CONTINUA
(DEFECTO), BIEN MEDIANTE MARCADORES Y LA PROYECTA
SOBRE UN PLANO PARA PODERLA REPRESENTAR EN LA
PANTALLA. ASEGÚRESE DE QUE NO HAY NINGUNA
VENTANA GRÁFICA ABIERTA Y EJECUTE EL SIGUIENTE
COMANDO:
26
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
>> fi=[0:pi/20:6*pi]; plot3(cos(fi),sin(fi),fi,'r''LineWidth',2), grid

¿CÓMO SE PUEDE DIBUJAR UNA FUNCIÓN DE DOS


VARIABLES (z=f(x, y)) SOBRE UN DOMINIO RECTANGULAR?
SEAN x e y DOS VECTORES QUE CONTIENEN LAS
COORDENADAS EN UNA Y OTRA DIRECCIÓN DE LA
RETÍCULA (grid) SOBRE LA QUE SE VA A DIBUJAR LA
FUNCIÓN.

DESPUÉS HAY QUE CREAR DOS MATRICES X (CUYAS FILAS


SON COPIAS DE x) e Y (CUYAS COLUMNAS SON COPIAS DE
y). ESTAS MATRICES SE CREAN CON LA FUNCIÓN meshgrid.
ESTAS MATRICES REPRESENTAN RESPECTIVAMENTE LAS
COORDENADAS X E Y DE TODOS LOS PUNTOS DE LA
RETÍCULA. LA MATRIZ DE VALORES Z SE CALCULA A
PARTIR DE LAS MATRICES DE COORDENADAS X e Y.
FINALMENTE HAY QUE DIBUJAR ESTA MATRIZ Z.
LA FUNCIÓN mesh, CUYOS ELEMENTOS SON FUNCIÓN
ELEMENTO A ELEMENTO DE LOS ELEMENTOS DE X E Y ES
LA FUNCIÓN QUE SE EMPLEA PARA ESTOS FINES.

4 EJERCITACIÓN CON FICHEROS script

CREAR EL FICHERO sombrero.m


%programa para demostrar el uso de mech
close all
u=-8:0.5:8; v=u;
[U,V]=meshgrid(u,v);
R=sqrt(U.^2+V.^2)+eps;
W=sin(R)./R;
27
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
mesh(W)
%pause(5)
%surf(W)
PROBLEMAS DE LA FÍSICA REVISITADOS

CAIDA LIBRE de un cuerpo REVISITADA

ANALIZAR EL COMPORTAMIENTO DE UN OBJETO EN CAÍDA LIBRE

Figura 1
%solución de problemas de la Física
clear, clc
%======================================================
%solicitar del usuario entrada por teclado
g=input('Ingrese valor aceleración de la gravedad ');
start=input('Tiempo de inicio del análisis ');
fin=input('Tiempo final del análisis ');
incr=input('¿Qué incremento de tiempo desea aplicar? ');
t=start:incr:fin;
d=0.5*g*t.^2;
plot(t,d)
title('Variación de la distancia en caída libre')
xlabel('Tiempo caida libre [s]')
ylabel('distancia, [m]')
final_dist=max(d)
%=======================================================
%=======================================================
%crea matriz datos de salida
tabla=[t;d];
%=======================================================
%muestra la tabla en la ventana de comandos
fprintf('Para la aceleración de la gravedad de %5.1f
segundos\n se calcularon los siguientes datos\n',g)
28
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
disp('Distancia recorrida en caída libre')
disp('tiempo, s, distancia, m')
fprintf('%8.0f %10.2f\n',tabla)
[a,b]=ginput
%=======================================================

DEBER 2. EJERCITACIÓN EN GRUPOS AFINES EN CLASE.


PROGRAMA PARA EL CÁLCULO DE LA FUERZA RESULTANTE

1) ANALIZAR EL COMPORTAMIENTO DE UN GLOBO SOMETIDO A


LAS FUERZAS DE LA ACELERACIÓN DE LA GRAVEDAD, DE
SUSTENTACIÓN Y DEL VIENTO. LAS FUERZAS VALEN:
P=mg=100N; Y=200N; Fv=50N; 
PROPORCIONAR LA RESPUESTA EN FORMA DE TABLA EN LA
PRIMERA COLUMNA EL ÁNGULO DE LA FUERZA RESULTANTE EN
GRADOS, EN LA SEGUNDA EL VALOR DE LA FUERZA EN
NEWTONS.

Figura 2

DESARROLLO DEL NÚCLEO DEL PROGRAMA


29
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
EL DIAGRAMA DEL CUERPO LIBRE SE TIENE EN LA FIGURA 3.
DESCOMPONIENDO LA FUERZA DEL VIENTO EN LAS DIRECCIONES DE
LOS EJES VERTICAL (y) Y HORIZONTAL (x) SE TIENEN LAS FUERZAS
EN LOS EJES DE COORDENADAS CARTESIANOS.
𝑭𝒙 = 𝑭𝒗 ∗ 𝒄𝒐𝒔(𝜽)

𝑭𝒚 = 𝒀 + 𝑭𝒗 ∗ 𝒔𝒊𝒏(𝜽) − 𝑷

Figura 3
EL VALOR DE LA FUERZA RESULTANTE ES ENTONCES:
𝟐
𝑭𝑹 = √(𝑭𝒙 )𝟐 + (𝑭𝒚 )

EL VALOR DEL ÁNGULO QUE DEFINE LA DIRECCIÓN DE LA FUERZA ES:


𝑭𝒚
𝜶 = 𝒂𝒕𝒂𝒏 (𝑭 )
𝒙

ASÍ, EL NÚCLEO DEL PROGRAMA DEBE COMPONERSE DE LAS


INSTRUCCIONES PARA EL CÁLCULO DE LA FUERZA RESULTANTE Y
DEL ÁNGULO EN GRADOS.
conv1=pi/180;
conv2=180/pi;
cosenos=cos(conv*theta);
senos=sin(conv*theta);
Frx=Fv.*cosenos;
Fry=Y+Fv.*senos-P;
Fr=sqrt(Frx.^2+Fry.^2);
alfa_rad=atan(Fry./Frx);
alfa=conv2*alfa_rad;

30
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
LA PRESENTACIÓN DE LOS DATOS EN FORMA DE TABLA SE
ENCUENTRA RESUELTA EN EL ÚLTIMO BLOQUE DE INSTRUCCIONES
DEL PROGRAMA PARA RESOLVER LOS DATOS DE UN CUERPO EN
CAÍDA LIBRE (página 8).

PROGRAMA PARA EL CÁLCULO DE LA ENERGÍA POTENCIAL GRAVITACIONAL


ASOCIADA CON CUALQUIER PAR DE PARTÍCULAS

LA ENERGÍA POTENCIAL GRAVITACIONAL ASOCIADA CON CUALQUIER


PAR DE PARTÍCULAS DE MASAS M1 Y M2 SEPARADAS UNA DISTANCIA
R ES
𝒎𝟏 𝒎𝟐
𝑼 = −𝑮
𝒓
CUANDO DOS PARTÍCULAS ESTÁN EN REPOSO Y SEPARADAS POR
UNA DISTANCIA R, UN AGENTE EXTERNO TIENE QUE SUMINISTRAR
UNA ENERGÍA AL MENOS IGUAL A
𝒎𝟏 𝒎𝟐
𝑮
𝒓
PARA SEPARAR LAS PARTÍCULAS A UNA DISTANCIA INFINITA.

ES POSIBLE EXTENDER ESTE CONCEPTO A TRES O MÁS PARTÍCULAS.

Figura
LA FÓRMULA PARA EL CÁLCULO DE DICHA ENERGÍA POTENCIAL
GRAVITACIONAL ES:
𝒎𝟏 𝒎𝟐 𝒎𝟏 𝒎𝟑 𝒎𝟐 𝒎𝟑
𝑼𝑻𝑶𝑻𝑨𝑳 = −𝑮 ( + + )
𝒓𝟏𝟐 𝒓𝟏𝟑 𝒓𝟐𝟑

31
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
2) HAGA UN PROGRAMA INTERACTIVO CON EL USUARIO DE
MANERA QUE SE PUEDA CALCULAR LA ENERGÍA POTENCIAL
GRAVITACIONAL PARA CUALQUIER VALOR DE LAS MASAS DE
LAS PARTÍCULAS Y DISTANCIAS ENTRE ELLAS.

IDEAS PARA DESARROLLAR EL NÚCLEO DEL PROGRAMA:


a) LA INTERACCIÓN CON EL USUARIO SE LOGRA EMPLEANDO LA
FUNCIÓN DE ENTRADA INPUT EN CUYO ARGUMENTO SE
SOLICITA INTRODUCIR LOS DATOS. SE EMPLEAN TANTAS
INSTRUCCIONES DE ENTRADA COMO DATOS REQUIERA LA
SOLUCIÓN DEL PROBLEMA, (esto es: tres valores de masas, tres
valores de distancias y un valor para la constante gravitacional)
b) SE DESARROLLA LA FÓRMULA EN LA SINTAXIS DE MATLAB
c) SE EMPLEA UNA FUNCIÓN DE SALIDA POR DISPLAY QUE EL
PROGRAMADOR DEBE ESCOGER DE MANERA TAL QUE EL
USUARIO FINAL TENGA LA MAYOR INFORMACIÓN POSIBLE

PROGRAMA PARA EL CÁLCULO DE LA FUERZA GRAVITACIONAL RESULTANTE

3) TRES ESFERAS UNIFORMES DE 2.00 kg, 4.00 kg Y 6.00 kg DE


MASA SE COLOCAN EN LAS ESQUINAS DE UN TRIÁNGULO
RECTÁNGULO COMO SE MUESTRA EN LA FIGURA.

HAGA UN PROGRAMA INTERACTIVO CON EL USUARIO PARA EL


CÁLCULO DE LA FUERZA GRAVITACIONAL RESULTANTE SOBRE

32
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
EL OBJETO DE 4.00 kg, SI SUPONE QUE LAS ESFERAS ESTÁN
AISLADAS DEL RESTO DEL UNIVERSO.

IDEAS PARA DESARROLLAR EL NÚCLEO DEL PROGRAMA:

a) EL PROGRAMA INTERACTIVO CON EL USUARIO PARA EL


CÁLCULO DE LA FUERZA GRAVITACIONAL RESULTANTE SOBRE
EL OBJETO DE 4.00 kg DEBE FUNDAMENTARSE EN EL TRABAJO
DE MESA INICIAL, DONDE SE DETERMINARÁN LOS PASOS
NECESARIOS PARA CALCULAR EL VALOR Y LA DIRECCIÓN DE
LA FUERZA POR SER ÉSTA UN VECTOR.
b) EL ANÁLISIS ES SIMILAR AL EFECTUADO PARA EL PRIMER
PROBLEMA.
PROBLEMAS
1) SEAN LOS VALORES EN GRADOS: grad=[10 15 20 30 45 60 90].
OBTENGA UNA TABLA DE VALORES EN RADIANES.
(SUGERENCIA: PARA TABULAR EMPLEE LA VARIABLE tabla Y
ASÍGNELE LOS VALORES DE UNA MATRIZ DE DOS COLUMNAS
CON 7 FILAS CADA COLUMNA)
2) LA ECUACIÓN GENERAL PARA LA DISTANCIA QUE RECORRE UN
CUERPO EN CAÍDA LIBRE (SE IGNORA LA FRICCIÓN DEL AIRE)
𝟏
ES 𝒚 = 𝟐 𝒈𝒕𝟐 . SI g=9.8 m/s2, GENERE UNA TABLA DE TIEMPO

CONTRA DISTANCIA RECORRIDA PARA VALORES DE TIEMPO DE


0 HASTA 100 SEGUNDOS. ELIJA UN INCREMENTO ADECUADO
PARA LA VARIABLE TIEMPO.

33
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
PROGRAMACIÓN CON MATLAB

34
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
Tabla de contenido
FUNCIONES DEFINIDAS POR EL USUARIO ................................................ 36

CREAR Y USAR SUS PROPIAS FUNCIONES MATLAB CON ENTRADAS Y


SALIDAS SIMPLES Y MÚLTIPLES ................................................................ 36

PARTES BÁSICAS DE UN ARCHIVO function ...................................... 37

LÍNEA DE DECLARACIÓN DE FUNCIÓN .................................................. 40

LA AYUDA DE LAS FUNCIONES DEL USUARIO ..................................... 42

RECOMENDACIONES GENERALES DE PROGRAMACIÓN ........................ 43

35
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
FUNCIONES DEFINIDAS POR EL USUARIO

OBJETIVOS

 CREAR Y USAR SUS PROPIAS FUNCIONES MATLAB CON


ENTRADAS Y SALIDAS SIMPLES Y MÚLTIPLES,
 LLAMAR A FUNCIONES DESDE FUNCIONES.

CREAR Y USAR SUS PROPIAS FUNCIONES MATLAB CON ENTRADAS


Y SALIDAS SIMPLES Y MÚLTIPLES
EL SOFTWARE MATLAB PROPORCIONA UN LENGUAJE COMPLETO DE
PROGRAMACIÓN QUE LE PERMITE ESCRIBIR UNA SERIE DE
INSTRUCCIONES DE MATLAB EN UN ARCHIVO Y LUEGO LO EJECUTA
CON UN SOLO COMANDO. USTED ESCRIBE SU PROGRAMA EN UN
ARCHIVO DE TEXTO NORMAL, DANDO UN NOMBRE AL ARCHIVO
DIGAMOS nombre_archivo.m.
EL TÉRMINO QUE SE UTILIZA COMO EL NOMBRE DE ARCHIVO SE
CONVIERTE EN EL NUEVO COMANDO QUE SE ASOCIA CON EL
PROGRAMA MATLAB.
LA EXTENSIÓN DE ARCHIVO *.m LO CONVIERTE EN UN ARCHIVO DE
PROGRAMA MATLAB.
LAS FUNCIONES DEFINIDAS POR EL USUARIO TAMBIÉN SE CREAN EN
ARCHIVOS punto m (*.m)
LA DIFERENCIA ENTRE LOS ARCHIVOS TIPO GUIONES (script) Y LAS
FUNCIONES DEL USUARIO (user functions) SON:
GUIONES (SCRIPTS) DE MATLAB:
• SON ÚTILES PARA AUTOMATIZAR UNA SERIE DE PASOS QUE SERÁN
REPETIDOS MUCHAS VECES, O SEA SON PROGRAMAS REUSABLES
PARA LA SOLUCIÓN DE PROBLEMAS QUE SE PRESENTARÁN
REITERADAMENTE EN LAS LABORES DEL USUARIO.
36
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
• NO ACEPTAN ARGUMENTOS DE ENTRADA.
• ALMACENAN LAS VARIABLES EN EL ESPACIO DE TRABAJO, LAS
CUALES SE COMPARTEN CON OTROS GUIONES DE COMANDOS Y CON
LA INTERFAZ DE LÍNEA DE COMANDOS DE MATLAB.
FUNCIONES DE MATLAB (user functions):
• SON ÚTILES PARA EXTENDER EL LENGUAJE MATLAB PARA SU
APLICACIÓN.
• PUEDE ACEPTAR ARGUMENTOS DE ENTRADA Y DEVOLVER
ARGUMENTOS DE SALIDA.
• ALMACENA LAS VARIABLES EN UN ESPACIO DE TRABAJO INTERNO
DE LA FUNCIÓN.
PARTES BÁSICAS DE UN ARCHIVO function
ESTA SIMPLE FUNCIÓN MUESTRA LAS PARTES BÁSICAS DE UN
ARCHIVO DE PROGRAMA. CUALQUIER LÍNEA QUE COMIENZA CON EL
SIGNO DE (%)NO SE EJECUTA.

function f = calcula_factorial(n) Línea de declaración de


función
% Compute a factorial value Línea H1
% returns the factorial of n,
% usually denoted by n! Texto de ayuda
% simply, is prod(1:n). Comentario
f = prod(1:n); Cuerpo de la Función

37
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
Figura
LA INSTRUCCIÓN QUE ACABAMOS DE DISCUTIR ES LA PRIMERA LÍNEA
DENTRO DEL script TIPO function DEFINIDA POR EL USUARIO.

COMO SE OBSERVA SE REQUIERE UNO O VARIOS ARGUMENTOS DE


ENTRADA PARA QUE LA function EJECUTE LAS INSTRUCCIONES
PROGRAMADAS EN EL SCRIPT Y DEVUELVA LOS VALORES
CALCULADOS EN EL CUERPO DE LA FUNCIÓN Y LOS ASIGNE A LA
VARIABLE DE SALIDA, QUE EN ESTE CASO SE DENOMINA salida.

ESTA TABLA DESCRIBE CADA PARTE DEL PROGRAMA. AMBOS


PROGRAMAS, LA FUNCIÓN Y EL GUIÓN PUEDEN TENER TODAS LAS
PARTES, EXCEPTO QUE EL GUIÓN NO TIENE LA LÍNEA DE
DECLARACIÓN DE FUNCIÓN.

Elementos del archivo Descripción


Línea de definición de función Define el nombre, el número y el orden
(solo para la función) de los argumentos de entrada y salida
La primera línea describe brevemente
Línea H1 el programa, y aparece cuando se
solicita la ayuda del archivo o cuando
se utiliza lookfor
Una descripción más detallada del
Texto de ayuda programa, desplegada junto con la
línea H1 cuando se solicita la ayuda
38
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
Elementos del archivo Descripción
sobre una función específica.
Código del programa que realiza el
Cuerpo de la función o del cálculo y asigna los valores a cualquier
guión argumento de salida

Texto en el cuerpo del programa que


Comentarios explica el trabajo interno del programa.

CADA FUNCIÓN DEBE COMENZAR CON:


 LA PALABRA function,
 A CONTINUACIÓN UNA O VARIAS VARIABLES QUE DEFINAN LA
SALIDA DE LA FUNCIÓN,
 EL SIGNO DE ASIGNACIÓN,
 EL NOMBRE DE LA function
 LAS VARIABLES DE ENTRADA EN EL ARGUMENTO DE LA
function

SEA ENTONCES LA SIGUIENTE FUNCIÓN:

function valor=eval_polinomio(x);
%Esta función calcula el valor de un polinomio
%dado el vector x
%eval_polinomio(x) evalúa un polinomio de tercer
%orden en los puntos
%dados por el vector x
valor=3*x.^3+5*x.^2-2*x+1;

EL NOMBRE DE LA FUNCIÓN ES eval_polinomio, EL ARGUMENTO DE


ENTRADA ES EL VECTOR x Y LA VARIABLE DE SALIDA ES valor
ANTES DE PODER USAR ESTA FUNCIÓN SE DEBE GUARDAR EN EL
DIRECTORIO ACTUAL. EL NOMBRE DEL ARCHIVO ES EL MISMO QUE EL
NOMBRE DE LA FUNCIÓN, eval_polinomio.
LA LLAMADA A FUNCIÓN PUEDE OCURRIR:
 DENTRO DE UN PROGRAMA DEL USUARIO
 DIRECTAMENTE DESDE LA VENTANA DE COMANDOS

LA FUNCIÓN eval_polinomio SERÁ LLAMADA DESDE UN ARCHIVO O


GUIÓN punto m QUE LLAMAREMOS llamada_funcion.m
39
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
%programa para llamar a una function
a_ini=input('ingrese valor inicial del vector x ');
a_fin=input('ingrese valor final del vector x ');
incr=input('ingrese valor del incremento de x ');
a=a_ini:incr:a_fin;
y=eval_polinomio(a);
plot(a,y)
grid
xlabel('Valor de x')
ylabel('Valor del polinomio y')

LÍNEA DE DECLARACIÓN DE FUNCIÓN


ESTA LÍNEA INFORMA A MATLAB QUE EL ARCHIVO CONTIENE UNA
FUNCIÓN Y ESPECIFICA EL ARGUMENTO QUE LLAMA LA SECUENCIA
DE LA FUNCIÓN. ELLA CONTIENE LA PALABRA CLAVE function Y
SIEMPRE DEBE SER LA PRIMERA LÍNEA DEL ARCHIVO, A EXCEPCIÓN
DE LAS LÍNEAS QUE SON COMENTARIOS NO EJECUTABLES. EL
ARGUMENTO PUEDE SER UN ESCALAR O UN VECTOR.

DESDE LA VENTANA DE COMANDOS:


eval_polinomio
eval_polinomio(5.87)
x=4;
eval_polinomio(x)

OTROS EJEMPLOS
EN EL EDITOR DE MATLAB ESCRIBIR LOS GUIONES (SCRIPTS):
function conv1=grad2rad(a)
conv1=a*pi/180;
function conv2=rad2grad(a)
conv2=a*180/pi;
Y GUARDARLOS.
AHORA, EN LA VENTANA DE COMANDOS LLAMAR A LAS FUNCIONES
GUARDADAS COMO SE INDICA A CONTINUACIÓN:
>> rad2grad(1.57079)
40
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
ans =
89.9996
>> grad2rad(89.9996)
ans =
1.5708

LOS VALORES DE RETORNO VAN, (SIEMPRE QUE HAYA MÁS DE UNO),


ENTRE CORCHETES Y SEPARADOS POR COMAS
LOS ARGUMENTOS DE ENTRADA, (SIEMPRE QUE HAYA MÁS DE UNO),
TAMBIÉN VAN ENTRE PARÉNTESIS y SEPARADOS POR COMAS.
function [x, y, z]=sphere(theta, phi, rho)

PUEDE HABER FUNCIONES SIN VALOR DE RETORNO Y TAMBIÉN SIN


ARGUMENTOS.

function printresults(x)
function [] = printresults(x)

EJEMPLO

%programa para llamar a una function


a_ini=input('ingrese valor inicial del vector x
');
a_fin=input('ingrese valor final del vector x ');
incr=input('ingrese valor del incremento de x ');
a=a_ini:incr:a_fin;
y=eval_polinomio(a);
printresults(a,y);

SIENDO

function []=printresults(x,valor)
%grafica los resultados de la evaluación de un
%polinomio
plot(x,valor)
grid
xlabel('Valor de x')
41
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
ylabel('Valor del polinomio y')

ENTONCES:

 SI NO HAY VALORES DE RETORNO SE OMITEN LOS CORCHETES Y EL


SIGNO DE ASIGNACIÓN (=);
 SI SÓLO HAY UN VALOR DE RETORNO NO HACE FALTA PONER
CORCHETES.
 TAMPOCO HACE FALTA PONER PARÉNTESIS SI NO HAY
ARGUMENTOS.
 LAS VARIABLES QUE SE PASAN A LA function NO TIENEN QUE TENER
EL MISMO NOMBRE QUE TIENEN EN LA DECLARACIÓN DE FUNCIÓN.
 LOS ARGUMENTOS SON LOS DATOS DE LA FUNCIÓN Y LOS VALORES
DE RETORNO SUS RESULTADOS.

LAS VARIABLES DEFINIDAS DENTRO DE UNA FUNCIÓN SON VARIABLES


LOCALES, EN EL SENTIDO DE QUE SON INACCESIBLES DESDE OTRAS
PARTES DEL PROGRAMA Y EN EL DE QUE NO INTERFIEREN CON
VARIABLES DEL MISMO NOMBRE DEFINIDAS EN OTRAS FUNCIONES O
PARTES DEL PROGRAMA. SE PUEDE DECIR QUE PERTENECEN AL
PROPIO ESPACIO DE TRABAJO DE LA FUNCIÓN Y NO SON VISTAS
DESDE OTROS ESPACIOS DE TRABAJO.

LA EJECUCIÓN DE UNA FUNCIÓN TERMINA CUANDO SE LLEGA A SU


ÚLTIMA SENTENCIA EJECUTABLE. SI SE QUIERE FORZAR EL QUE UNA
FUNCIÓN TERMINE DE EJECUTARSE SE PUEDE UTILIZAR LA
SENTENCIA return, QUE DEVUELVE INMEDIATAMENTE EL CONTROL AL
ENTORNO DE LLAMADA.

LA AYUDA DE LAS FUNCIONES DEL USUARIO


TAMBIÉN LAS FUNCIONES CREADAS POR EL USUARIO PUEDEN TENER
SU help, ANÁLOGO AL QUE TIENEN LAS PROPIAS FUNCIONES DE
MATLAB. ESTO SE CONSIGUE DE LA SIGUIENTE FORMA:
42
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
LAS PRIMERAS LÍNEAS DE COMENTARIOS DE CADA FICHERO DE
FUNCIÓN SON MUY IMPORTANTES, PUES PERMITEN CONSTRUIR UN
help SOBRE ESA FUNCIÓN.

EN OTRAS PALABRAS, CUANDO SE TECLEA EN LA VENTANA DE


COMANDOS DE MATLAB:
>> help eval_polinomio

EL PROGRAMA RESPONDE ESCRIBIENDO LAS PRIMERAS LÍNEAS DEL


FICHERO eval_polinomio.m QUE COMIENZAN POR EL CARÁCTER (%),
ES DECIR, QUE SON COMENTARIOS.
DE ESTAS LÍNEAS, TIENE UNA IMPORTANCIA PARTICULAR LA PRIMERA
LÍNEA DE COMENTARIOS (LLAMADA EN OCASIONES LÍNEA H1).

EN ELLA HAY QUE INTENTAR PONER LA INFORMACIÓN MÁS


RELEVANTE SOBRE ESA FUNCIÓN. LA RAZÓN ES QUE EXISTE UNA
FUNCIÓN, LLAMADA lookfor QUE BUSCA UNA DETERMINADA PALABRA
EN CADA PRIMERA LÍNEA DE COMENTARIO DE TODAS LAS FUNCIONES
*.m.

>> help eval_polinomio


Esta función calcula el valor de un polinomio dado el vector x
eval_polinomio(x) evalua un polinomio de tercer orden en los puntos
dados por el vector x

RECOMENDACIONES GENERALES DE PROGRAMACIÓN


 LAS FUNCIONES VECTORIALES DE MATLAB SON MUCHO MÁS

RÁPIDAS QUE SUS CONTRAPARTIDAS ESCALARES.

 VECTORIZAR LOS ALGORITMOS DE CÁLCULO, ES DECIR,

REALIZARLOS CON VECTORES Y MATRICES, Y NO CON

VARIABLES ESCALARES DENTRO DE BUCLES.


43
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
 ES MUCHO MÁS RÁPIDO RESERVARLES TODA LA MEMORIA

NECESARIA AL COMIENZO DEL PROGRAMA. SE PUEDE UTILIZAR

PARA ELLO LA FUNCIÓN zeros. ADEMÁS, DE ESTE MODO LA

MEMORIA RESERVADA ES CONTIGUA.

 CONVIENE DESARROLLAR LOS PROGRAMAS

INCREMENTALMENTE, COMPROBANDO CADA FUNCIÓN O

COMPONENTE QUE SE AÑADE.

 DE ESTA FORMA SIEMPRE SE CONSTRUYE SOBRE ALGO QUE YA

HA SIDO COMPROBADO Y QUE FUNCIONA: SI APARECE ALGÚN

ERROR, LO MÁS PROBABLE ES QUE SE DEBA A LO ÚLTIMO QUE

SE HA AÑADIDO, Y DE ESTA MANERA LA BÚSQUEDA DE

ERRORES ESTÁ ACOTADA Y ES MUCHO MÁS SENCILLA.

 EL TIEMPO DE CORRECCIÓN DE ERRORES EN UN PROGRAMA

PUEDE SER 4 Ó 5 VECES SUPERIOR AL TIEMPO DE

PROGRAMACIÓN.

 PENSAR BIEN LAS COSAS AL PROGRAMAR (SOBRE UNA HOJA

DE PAPEL EN BLANCO, MEJOR QUE SOBRE LA PANTALLA DEL

PC) SIEMPRE ES RENTABLE, PORQUE SE DISMINUYE MÁS QUE

PROPORCIONALMENTE EL TIEMPO DE DEPURACIÓN Y

ELIMINACIÓN DE ERRORES.

 OTRO OBJETIVO DE LA PROGRAMACIÓN DEBE SER MANTENER

EL CÓDIGO LO MÁS SENCILLO Y ORDENADO POSIBLE. ES

CONVENIENTE PENSAR SIEMPRE PRIMERO EN LA SOLUCIÓN

MÁS SENCILLA, Y LUEGO PLANTEARSE OTRAS CUESTIONES

COMO LA EFICIENCIA.
44
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015
 FINALMENTE, EL CÓDIGO DEBE SER ESCRITO DE UNA MANERA

CLARA Y ORDENADA, INTRODUCIENDO COMENTARIOS,

UTILIZANDO LÍNEAS EN BLANCO PARA SEPARAR LAS DISTINTAS

PARTES DEL PROGRAMA, SANGRANDO LAS LÍNEAS PARA VER

CLARAMENTE EL RANGO DE LAS BIFURCACIONES Y LAZOS,

UTILIZANDO NOMBRES DE VARIABLES QUE RECUERDEN AL

SIGNIFICADO DE LA MAGNITUD FÍSICA CORRESPONDIENTES,

ETC.

 LA MEJOR FORMA (Y LA ÚNICA) DE APRENDER A

PROGRAMAR ES … PROGRAMANDO .

45
Ms. C. ARÍSTIDES REYES BACARDÍ
MILAGRO ABRIL 2015

Potrebbero piacerti anche