Documente Academic
Documente Profesional
Documente Cultură
1.1. Variables
Matlab es un lenguaje débilmente tipado, esto significa que no se requiere definir previamente
el tipo de variable que se utilizará en cálculos posteriores. Para mostrar esto, ejecute en el
Command Window (CW) la sigiuente sentencia
a = 15
observará que en el Workspace queda guardada la variable. Posteriormente al ingresar
a = ’Hola’
la variable a le cae encima al valor anterior cambiando por completo el tipo de variable.
En un lenguaje fuertemente tipado como C++, esto no hubiera sido posible. Esto es una
gran ventaja, ya que la elaboración de programas es mucho más rápido en comparación a
lenguajes fuertemente tipados.
1
Universidad de Costa Rica Escuela de Ingenierı́a Mecánica
1.2. Variables II
Como pudo notar al ingresar los valores de a, estos se imprimen en pantalla una vez ingresa-
dos. Una manera de no imprimir por pantalla cada variable que se ingrese consiste en añadir
un punto y coma ’;’ al final de cada sentencia. Si ejecuta en el Command Window
A = 10;
podrá observar que ahora la variable no se imprimió en el Command Window pero sı́ aparece
en el Workspace. Por otro lado, habrá notado que Matlab hace distinción entre mayúsculas
y minúsculas por lo que debe poner atención a la hora de definir las variables en sus progra-
mas. Una buena práctica en programación consiste en asignarle nombres significativos a las
variables. Ejecute en el Command Window lo siguiente
velocidad = 50;
posicionAvion= 40;
esfuerzoBarra = 100e8;
En algunos casos, asignarle a las variables este tipo de nombres puede tornar algunas expre-
siones muy largas. Una forma de mitigar eso consiste en asignar nombres de variables que de
pocos carácteres que cuenten ya con Por último, podrá constatar que conforme va definiendo
variables, estas quedan almacenadas en el Workspace.
a = 10;
a = a + 15;
A muchas personas que inician en programación les parece muy confuso la sentencia anterior
ya que parece irrespetar las reglas más básicas del álgebra. Sin embargo, en lenguajes de
computación las asignaciones de cada variable debe leerse de derecha a izquierda. En este
caso, debe interpretarse que el valor de la variable a más 15 debe ser asignada a la variable
a.
1.5. Arreglos I
Un arreglo es una colección de datos ubicados en memoria de manera continua. Existen varias
formas de definir un arreglo. Digite en el Command Window las siguientes expresiones.
a = [4 3 5 1];
b = (0:1:3);
c = linspace(0,10,4);
d = [9 7 6 5]’;
Lo primero que debe observar es que al inicializar cada uno de los arreglos, estos aparecerán
en el Workspace, indicando el nombre de la variable y el valor asociado. La primera forma
de definir un arreglo se hace mediante paréntesis cuadrados y se debe especificar cada una
de las entradas. El segundo tipo genera un arreglo que comienza en 0 y termina en 3 con
incrementos de 1. Posteriormente, la función linspace genera un arreglo de 4 elementos que
va desde 0 hasta 10. Por último, el vector d se asemeja al primer caso con la diferencia que
tiene un ’ al final. Esto devuelve la transpuesta del vector. Los arreglos a, b y c corresponden
a arreglos 1 x 4 (1 fila y 4 columnas), mientras que el arreglo d corresponde a uno 4 x 1 (4
filas y 1 columna).
1.6. Arreglos II
Para poder sumar arreglos estos deben tener las mismas dimensiones. Al definir las siguientes
variables
a = (0:1:10);
b = linspace(1,20,5);
c = a + b
Aparecerá el error Matrix dimensions must agree indicando que los arreglos no tienen las
mismas dimensiones. Al redefinir b como
b = linspace(1,20,10)
a = 10;
b = [1 2 3 4 5];
c = a*b;
En este caso, la constante multiplicará cada uno de los elementos que compone el arreglo.
arregloUno = [2 3 4 5];
arregloDos = [6 7 8 9];
Aparecerá un error en el Command Window indicando que las dimensiones de las matrices
no concuerdan. Esto porque está tratando de multiplicar dos vectores cuyas dimensiones son
1 x 4. Por otro lado, si se ejecuta lo siguiente
arregloTres = arregloUno*arregloDos’;
el resultado es válido porque está multiplicando arregloUno por la traspuesta del arregloDos.
Si lo que se quiere es multiplicar elemento por elemento de cada arreglo entonces lo que se
debe hacer es ejecutar lo siguiente
arregloTres = arregloUno.*arregloDos;
Observe que la diferencia es que en lugar de un ’*’ se emplea ’.*’. De forma semejante
ocurre al tratar de elevar a la segunda potencia cada elemento del arreglo
resultado = arregloUno.^2 ;
1.8. Arreglos IV
Una vez definido un arreglo es posible querer un valor en particular de él. Considere por
ejemplo
theta = (0:1:180);
theta(5)
Al hacer esto, retornará el valor asociado a la quinta posición que corresponde a 4. También
es posible obtener diferentes valores de distintas maneras.
theta(:)
theta(end)
theta(5:end)
En el primer caso, el operador : hace referencia a todos los elementos del arreglo. En el
segundo caso, end hace referencia al último elemento del arreglo y por último la expresión
5:end hace referencia a todos los elementos desde la posición 5 hasta el final.
1.9. Matrices I
Las matrices en Matlab se definen de la siguiente manera
matrizUno = [1 4 5; 3 4 5; 1 2 0];
La matriz anterior corresponde a una 3 x 3. Observe que cada fila se define luego de un ’;’.
Al igual que en los arreglos, hay diferentes maneras de leer valores de una matriz.
matrizUno(2,1)
matrizUno(:,1)
matrizUno(2,:)
matrizA = [3 2 1; 8 2 1; 9 7 6];
matrizB = [5 7 2; 9 0 6; 1 1 2];
matrizC = matrizA*matrizB;
En este caso, las matrices matrizA y matrizB son matrices 3x3 por lo que la matriz resultante
también es 3x3.
2. Uso de scripts
Hasta este punto todo se ha llevado a cabo en el Command Window. Una manera más
ordenada y apropiada de llevar a cabo cálculos (sobretodo si se necesitan ser repetidos con
frecuencia) es el uso de scripts. Estos son un conjunto de instrucciones que están guardados
en un archivo con terminación .m y que se pueden ejecutar en cualquier momento. Para crear
un script solo se necesita acceder al Editor de Matlab. Esto se puede hacer presionando ctrl
+ n y se creará un nuevo archivo .m. Los siguientes problemas realicelos en scripts separados.
2.1. Graficación
Una de los aspectos más importantes en la divulgación de resultados cientı́ficos es la apro-
piada elaboración de gráficos y figuras. En este aspecto, Matlab cuenta con un amplia gama
de opciones para realizar y editar gráficos. En los siguientes ejercicios se mostrará algunas
de las opciones que ofrece este entorno de programación.
Código Matlab
σ = P
A
sin2 θ
(2)
P
τ = A
sin θ cos θ
Coloque descripciones en los ejes x y y y aumente su tamaño de letra. Para hacer esto
puede hacer ylabel(’Esfuerzo (Pa)’,’Fontsize’,13).
Código Matlab
4
5
6 cita = (0:1:90); % Arreglo de ngulos en grados.
7 citaRad = cita*pi/180; % Convierte grados en radianes
8 P = 1000; % Fuerza aplicada a la barra
9 A = 0.01; % rea de s e c c i n transversal
10
11 sigma = P/A * (sin(citaRad)).ˆ2; % Esfuerzo normal
12 tau = P/A * sin(citaRad).*cos(citaRad); % Esfuerzo cortante
13
14 plot(cita, sigma,'r-','Linewidth',3)
15 xlabel(' ngulo ( )','Fontsize',14)
16 ylabel('Esfuerzo (Pa)','Fontsize',14)
17 hold on
18 plot(cita, tau, 'b-','Linewidth',3)
19 legend('\sigma','\tau')
20 set(gca,'Fontsize',14)
21 set(gca,'xLim',[0 90])
22 saveas(gcf,'Ejercicio222','png')
23 saveas(gcf,'Ejercicio222','epsc')
3. Funciones
A diferencia de los scripts, las funciones en Matlab reciben parámetros de entrada (aunque
también puede no recibir ninguno) y devuelve un resultado (aunque, nuevamente, puede no
devolver un resultado). El nombre del archivo que contiene la función debe llamarse
igual que la función. Además, se recomienda como buena práctica de programación que los
nombres de las funciones tengan la forma [verboInfinitivo]+[sustantivo]. Ası́, nombres
tı́picos de funciones son leerArchivo, calcularCoeficiente, etc.
r’ = Rr (3)
Donde r es el vector definido con respecto al sistema XY, r’ es el vector representado en el
marco X’Y’ y R es la matriz de rotación, definida como
cos θ − sin θ
R= (4)
sin θ cos θ
Desarrolle una función que permita determinar las componentes de un vector en un sistema
X’Y’ a partir de las componentes del vector en el marco XY y el ángulo de rotación θ. Como
prueba, utilice un vector r = 10î + 5ĵ y un ángulo θ = 20°.
Código Matlab
ejercicio31.m
calcularComponentesMarcoRotado.m
5 componentesVectorNuevoMarco = matrizRotacion*componentesVector';
6
7 end
ri2 pi ro2
σt = ro2 −ri2
1+ r2
ri2 pi
ro2
(5)
σr = ro2 −ri2
1− r 2
Desarrolle una función que devuelva los esfuerzos en cilindro al recibir como parámetros de
entrada el radio interno ri , el radio externo ro , la presión interna p y la distancia radial r
donde se quiere evaluar los esfuerzos. Como prueba, tome ro = 0,3 m, ri = 0,15 m, p = 1000
Pa y r = 0,20 m.
Script ejercicio32.m
Funcion calcularEsfuerzosCilindros.m
4. Todo junto
Se puede estudiar y graficar los esfuerzos a cierta distancia radial de un cilindro presurisado
empleando distintos radios externos, mediante el uso de scripts y funciones. Grafique los
esfuerzos tangenciales y radiales a lo largo de toda la distancia radial para un cilindro que
tiene un radio interno ri = 0,15 m, sujeto a una presión p = 50000 Pa y para diferentes
valores del radio externo ro = que va variando de 0.3 hasta 0.45 m, en incrementos de
0.05 m. Utilice subplots para graficar los esfuerzos tangenciales y radiales para cada radio
externo diferente.
Código Matlab
esfuerzosCilindro.m
21 esfuerzoTangencial(j) = Esfuerzos.tangencial;
22 esfuerzoRadial(j) = Esfuerzos.radial;
23 end
24
25 subplot(2,2,i)
26 plot(r,esfuerzoTangencial,'b-')
27 hold on
28 plot(r,esfuerzoRadial,'r-')
29 xlabel('Distancia radial (m)')
30 ylabel('Esfuerzo (Pa)')
31 set(gca,'xLim',[ri, ro(i)])
32
33 end