Kitabı oku: «Modelamiento y simulación de sistemas con Simulink», sayfa 5
1.7.12 Funciones stem y stem3
La aplicación de las funciones stem y stem3 es precisa si fuese necesario resaltar la ubicación de los datos en secuencias discretas de cualquier gráfico bidimensional o tridimensional, respectivamente. Dichas funciones se muestran en el siguiente ejemplo, cuya resultante es la figura 1.17:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 figure (1) % <enter > Creación de figura
3 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
4 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
5 X1 = linspace (0 ,5*pi ,100) ; % <enter > Creación del vector X1
6 Y1 = cos(X1); % <enter > Creación del vector Y1
7 stem (X1 ,Y1) % <enter > Uso de la función stem bidimensional
8 ax = gca; % <enter >
9 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
10 grid on % <enter > Inserción de rejillas en el gráfico
11 figure (2) % <enter > Creación de figura
12 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
13 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
14 X1 = linspace (0 ,5*pi ,100) ; % <enter > Creación del vector X1
15 Y1 = ( cos(X1)); % <enter > Creación del vector Y1
16 stem (X1 ,Y1 , ' LineStyle ' , ' -. ' , ' MarkerFaceColor ' , ' r ' , ' MarkerEdgeColor ' , ' g ' ) % <enter > Uso de la función stem bidimensional
17 ax = gca; % <enter >
18 ax. GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
19 grid on % <enter > Inserción de rejillas en el gráfico
20 figure (3) % <enter > Creación de figura
21 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
22 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
23 theta = linspace (0 ,2*pi); % <enter > Creación del vector theta
24 X1 = cos( theta ); % <enter > Creación del vector X1
25 Y1 = sin( theta ); % <enter > Creación del vector Y1
26 Z1 = theta ; % <enter > Creación del vector Z1
27 stem3 (X1 ,Y1 ,Z1 , ' :*m ' ) % <enter > Uso de la función stem3 tridimensional
28 grid on % <enter > Inserción de rejillas en el gráfico
29 ax = gca; % <enter >
30 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
31 figure (4) % <enter > Creación de figura
32 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
33 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
34 X1 = linspace (-pi ,pi ,40) ; % <enter > Creación del vector X1
35 Z1 = cos(X1); % <enter > Creación del vector Z1
36 stem3 (Z1 , ' Marker ' , ' s ' , ' MarkerEdgeColor ' , ' m ' , ' MarkerFaceColor ' , ' g ' ) % <enter > Uso de la función stem3 tridimensional
37 grid on % <enter > Inserción de rejillas en el gráfico
38 ax = gca; % <enter >
39 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
Figura 1.17. Gráficas obtenidas mediante el uso de las funciones stem y stem3
1.7.13 Función plot3
Para la creación de trazos de líneas en tres dimensiones se utiliza la función plot3, cuyas coordenadas de ingreso pueden ser vectores o matrices. Un ejemplo demostrativo se presenta a continuación y tiene por resultante la figura 1.18:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
3 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
4 z1 = 0: pi /50:10*pi; % <enter > Creación del vector z1
5 x1 = sin(z1); % <enter > Creación del vector x1
6 y1 = cos(z1); % <enter > Creación del vector y1
7 plot3 (x1 ,y1 ,z1 , ' b ' ) % <enter > Uso de la función plot3
8 grid on % <enter > Inserción de rejillas en el gráfico
9 ax = gca; % <enter >
10 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
Figura 1.18. Gráficos obtenidos mediante el uso de la función plot3
1.7.14 Funciones comet y comet3
La función comet sirve para crear gráficos animados a partir de un círculo que describe la trayectoria de los datos considerados. Las funciones comet y comet3 se aplican para gráficos en dos y tres dimensiones, respectivamente. A continuación se presenta un ejemplo para elaborar un gráfico bidimensional y para otro tridimensional, mediante el uso de dichas funciones:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 figure (1) % <enter > Creación de figura
3 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
4 xx = 0:0.01:5*pi; % <enter > Creación del vector xx
5 yy = sin (2*xx); % <enter > Creación del vector yy
6 comet (xx ,yy) % <enter > Uso de la función comet bidimensional
7 grid on % <enter > Inserción de rejillas en el gráfico
8 ax = gca; % <enter >
9 ax.GridAlpha = 0.40; % <enter > Oscurecimiento de grillas
10 figure (2) % <enter > Creación de figura
11 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
12 z1 = 0: pi /50:10* pi; % <enter > Creación del vector z1
13 x1= sin(z1); % <enter > Creación del vector x1
14 y1= cos(z1); % <enter > Creación del vector y1
15 comet3 (x1 ,y1 ,z1) % <enter > Uso de la función comet3 tridimensional
16 grid on % <enter > Inserción de rejillas en el gráfico
17 set(gca , ' GridAlpha ' ,0.40) % <enter > Oscurecimiento de grillas

Figura 1.19. Gráficos obtenidos gracias al uso de las funciones comet y comet3
1.8 PROGRAMACIÓN EN MATLAB
Un programa se define como una secuencia de instrucciones almacenadas en un script que mayormente contienen una serie de cálculos precedentes, pero en otras ocasiones no. Matlab cuenta, como en todo lenguaje de programación, con operadores, estructuras, funciones, entre otros elementos adecuados para definir la correcta secuencia de un programa.
1.8.1 Operadores relacionales
Los operadores relacionales efectúan comparaciones entre matrices de igual tamaño y sirven como operadores aritméticos en expresiones matemáticas. Por un lado, si la comparación entre matrices es falsa el resultado del cálculo será 0, por otro lado, si la comparación entre matrices es verdadera el resultado del cálculo será 1 o cualquier otro número distinto a cero. Los operadores relacionales se muestran en la tabla 1.3:
Tabla 1.3 Operadores relacionales
Operador relacional | Descripción |
< | Menor que |
> | Mayor que |
<= | Menor o igual que |
>= | Mayor o igual que |
== | Igual a |
~= | Distinto de |
El siguiente ejemplo presenta aplicaciones con los operadores relacionales:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 5 > 8 % <enter > Comparaciones
3 A = 5 < 10 % <enter > Comparaciones
4 y = (6 < 10) + (7 > 8) + (5*5 = = 60/4) % <enter > Comparaciones
5 b = [15 6 9 4 11 7 14]; c = [8 20 9 2 19 7 10]; % <enter > vectores
6 d = c > = b % <enter > Comparaciones y asignación a variable
7 b = = c % <enter > Comparaciones
8 b ~ = c % <enter > Comparaciones
9 f = b-c > 0 % <enter > Comparaciones y asignación a variable
10 A = [2 9 4; -3 5 2; 6 7 -1] % <enter > Matriz
11 B = A < = 2 % <enter > Comparaciones y asignación a variable
12 r = [8 12 9 4 23 19 10] % <enter > vector
13 s = r < = 10 % <enter > Comparaciones y asignación a variable
14 t = r(s) % <enter > Valores de resultados verdaderos (1)
15 w = r(r < = 10) % <enter > Comparaciones y asignación a variable
16 3 + 4 < 16/2 % <enter > Comparaciones y operaciones extras
17 3 + (4 < 16) /2 % <enter > Comparaciones y operaciones extras
1.8.2 Operadores lógicos
Los operadores lógicos tienen por función enlazar condicionales. Los principales operadores lógicos se muestran en la tabla 1.4:
Tabla 1.4 Operadores lógicos
Operador lógico | Nombre | Descripción |
& | AND | A y B |
| | OR | A o B |
~ | NOT | No A |
1.8.3 Orden de precedencia
Existe un orden predeterminado en la ejecución de los cálculos, en los cuales intervienen operadores relacionales, lógicos y aritméticos. El orden de precedencia un tanto más genérico, que lo visto en la tabla 1.1, se presenta en la tabla 1.5:
Tabla 1.5 Orden de precedencia más a detalle
Orden de precedencia | Operación |
1 | Paréntesis |
2 | Exponenciación |
3 | Operación lógica NO (~) |
4 | Multiplicación, división |
5 | Suma y resta |
6 | Operadores relacionales (>, <, >=, <=, ==, ~=) |
7 | Operación lógica Y (&) |
8 | Operación lógica O (|) |
A continuación se presenta un ejemplo que muestra el orden de precedencia:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 x = –2; % <enter > Asignación de valor a variable
3 y = 5; % <enter > Asignación de valor a variable
4 – 5 < x < –1 % <enter > Comparación y operaciones lógicas
5 – 5 < x & x < 1 % <enter > Comparación y operaciones lógicas
6 ~(y < 7) % <enter > Comparación y operaciones lógicas
7 ~y < 7 % <enter > Comparación y operaciones lógicas
8 ~((y > = 8) |(x < –1)) % <enter > Comparación y operaciones lógicas
9 ~(y > = 8) |(x < –1) % <enter > Comparación y operaciones lógicas
1.8.4 Ejemplo. Análisis de datos
Se presenta un ejemplo de cierta cantidad de probetas sometidas al ensayo de rotura, de las cuales se ha obtenido su resistencia (f'c) ’ después de los 28 días de curado:

Figura 1.20. Prueba de rotura de probeta
Se requiere emplear operadores relacionales y lógicos para determinar el número de probetas que alcanzaron una resistencia superior a 33 MPa y el número de probetas que alcanzaron una resistencia entre 30 y 40 MPa.
Tabla 1.6
Resistencias a la comprensión de probetas de concreto a los 28 días

Solución. El uso de operadores lógicos y relacionales utilizados en el desarrollo de este ejemplo se muestran en la siguiente secuencia:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 D = [30.7 32.5 34.7 37.5 32.5 40.3 33.7 30.4 26.9 31 40 44.8 34.6 33.9 38.1 33.2 36.7]
3 Dencima33 =D > = 33
4 NpruebasDencima33 = sum( Dencima33 )
5 Dentre30y40 = (D > = 30) & (D < = 40)
6 NpruebasTentre30y40 = sum( Dentre30y40 )
1.8.5 Estructuras de programación y sentencias de control
Las estructuras de programación y sentencias de control consideradas en este ítem constituyen la base fundamental de la correcta operatividad de los programas desarrollados pertenecientes a los capítulos que involucran el análisis de sistemas de uno y varios grados de libertad, por lo que se le recomienda al lector poner especial atención a estos tipos de estructuras y sentencias. A continuación se describe cada una de las estructuras de programación y sentencias de control con su respectivo ejemplo explícito, con la finalidad de garantizar una adecuada comprensión del tema.
1.8.5.1 Estructura if – elseif – else – end
En una primera etapa su mecanismo consiste en evaluar la expresión condicional de if, y si la expresión condicional es verdadera se ejecuta un grupo de instrucciones; si dicha expresión es falsa se ejecutan las instrucciones de elseif y else. También es posible añadir más expresiones condicionales y sus respectivas instrucciones mediante elseif dentro del bloque if.
La sintaxis más básica de la estructura if – elseif – else – end se ilustra en la figura 1.21:
Figura 1.21. Estructura de programación if- elseif - else - end
Ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 x =10; % Asignación de valor numérico a la variable x
3 minVal =2; % Asignación de valor numérico a la variable minVal
4 maxVal =6; % Asignación de valor numérico a la variable maxVal
5 % Inicio de la estructura de programación if - elseif - else - end
6 if (x > = minVal ) & (x < = maxVal )
7 disp ( ' El valor está dentro del rango especificado. ' )
8 elseif (x > maxVal)
9 disp (' El valor excede el valor máximo.')
10 else
11 disp (' El valor está debajo del valor mínimo.')
12 end
13 % Fin de la estructura de programación if - elseif - else - end
1.8.5.2 Estructura for – end
Su mecanismo consiste en ejecutar un grupo de instrucciones el número de veces que se especifique. También es posible ejecutar un grupo de instrucciones ubicadas en el índice de la estructura for – end.
La sintaxis más básica de la estructura for – end se ilustra en la figura 1.22:
Figura 1.22. Estructura de programación for-end
Ejemplos:
1 clc, clear all , close all % <enter > Funciones de limpieza
2 N = input ( ' Ingresar entero positivo < 15: ' ); % Asignación de valor numérico a la variable N
3 Matr = zeros (N,N); % Creación de una matriz de ceros de N x N
4 % Inicio de la estructura de programación for - end
5 for r = 1:N
6 Matr (r ,1:N) = ((r -1)*N+1):r*N;
7 end
8 % Fin de la estructura de programación for - end
9 disp ( Matr ) % Uso de la función disp para mostrar resultados
1 clc , clear all , close all % <enter > Funciones de limpieza
2 s = 10; % Asignación de valor numérico a la variable s
3 H = zeros (s); % Creación de una matriz de ceros de orden s x s
4 % Inicio de la estructura de programación for - end
5 for c = 1:s
6 for r = 1:s
7 H(r,c) = 1/( r+c -1);
8 end
9 end
10 % Fin de la estructura de programación for - end
1 clc , clear all , close all % <enter > Funciones de limpieza
2 E = [2 3]; % Vector E
3 I = [3 4]; % Vector I
4 K = [1 2]; % Vector K
5 P = [7 8]; % Vector P
6 M = [2 9]; % Vector M
7 X = [7 8]; % Vector X
8 Y = [2 9]; % Vector Y
9 % Inicio de la estructura de programación for - end
10 for i = 1:2
11 H(:,:,i) = [E(i)*I(i)*K(i) E(i)-I(i)*P(i); E(i)^2 I(i)*M(i)^2; X(i)^2+Y(i)^2 X(i)^2-Y(i)^2];
12 end
13 % Fin de la estructura de programación for - end
1.8.5.3 Estructura switch – case – otherwise – end
Su mecanismo consiste en evaluar la primera expresión condicional en switch, para luego evaluar la segunda expresión condicional en case y ejecutar un grupo de instrucciones en el caso de que se cumpla la expresión condicional en case; habiendo la posibilidad de ejecutar el grupo de instrucciones de otherwise en el caso de que no se cumpla ninguna de las expresiones condicionales en los case (casos).
La sintaxis de la estructura switch – case – otherwise – end se ilustra en la figura 1.23:
Figura 1.23. Estructura de programación switch-case-otherwise-end
Ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 n = input ( ' Ingresar un número : ' ); % Ingreso de un valor numérico
3 % Inicio de la estructura de programación switch - case - otherwise - end
4 switch n
5 case 1
6 disp ( ' positivo ' )
7 otherwise
8 disp ( ' otro valor ' )
9 end
10 % Fin de la estructura de programación switch - case - otherwise - end
1.8.5.4 Estructura while – end
Prácticamente genera un bucle, el cual repetirá el desarrollo de un grupo de instrucciones mientras la expresión condicional en while continúe siendo verdadera.
La sintaxis más básica de la estructura while – end se ilustra en la figura 1.24:
Figura 1.24. Estructura de programación while-end
Ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 n = 10; % Asignación de valor numérico a n
3 f = n; % Asignación de valor numérico a f
4 % Inicio de la estructura de programación while - end
5 while n >1
6 n = n -1;
7 F = f*n;
8 end
9 % Fin de la estructura de programación while – end
10 disp ([ ' n! = ' num2str (f)]) % Uso de la función de salida disp
1.8.5.5 Sentencia break
La sentencia de control break consiste en finalizar la ejecución de un proceso iterativo dentro de una estructura de programación, como while-end.
La sintaxis de la sentencia de control break se ilustra en la figura 1.25:
Figura 1.25. Sentencia de control break
Ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 limit = 0.8; % Asignación de valor a la variable limit
3 s = 0; % Asignación de valor a la variable s
4 % Inicio de la estructura de programación while - end
5 while 1
6 tmp= rand;
7 % Inicio de la estructura de programación if - end
8 if tmp > limit
9 break
10 end
11 % Fin de la estructura de programación if - end
12 S = s+tmp;
13 end
14 % Fin de la estructura de programación while - end
1.8.5.6 Sentencia continue
La sentencia de control continue consiste en continuar la ejecución de un proceso iterativo o condicional dentro de una estructura de programación, como for-end.
La sintaxis de la sentencia de control continue se ilustra en la figura 1.26:
Figura 1.26. Sentencia de control continue
Ejemplo:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 % Inicio de la estructura de programación for - end
3 for n = 1:50
4 % Inicio de la estructura de programación if - end
5 if mod(n ,7)
6 continue
7 end
8 % Fin de la estructura de programación if - end
9 calc1 = num2str (n);
10 disp ([ ' Divisible por 7: ' calc1 ])
11 end
12 % Fin de la estructura de programación for - end
1.9 POLINOMIOS
Los polinomios son expresiones matemáticas aplicables a muchos campos de la ingeniería. La representación de un polinomio en Matlab se hace mediante un vector fila, en el cual se especifica los coeficientes del polinomio completo; es decir, también los coeficientes cero de los monomios no existentes.
1.9.1 Operadores relacionales
La expresión 1.32 muestra la representación de un polinomio completo; cuyos coeficientes an,an–-,…a1,a0 son números reales y n es un número positivo que representa el orden del polinomio.

1.9.2 Ejemplo. Cálculo de un polinomio
En este ejemplo se pretende calcular el valor de f(10) del polinomio de la expresión 1.33 y obtener la gráfica del polinomio en el dominio –1.5≤x≤8.5.

Solución:
1 clc , clear all , close all % <enter > Funciones de limpieza
2 set(gcf , ' Color ' , ' w ' ); % <enter > Establece color blanco en el fondo
3 set(gca , ' Color ' , ' w ' ); % <enter > Establece color blanco en el gráfico
4 f = [1 1 –20.60 30.40 –12.02 –76.85 36.44] % <enter > Representación del polinomio
5 res = polyval (f ,10) % <enter > Uso de la función polyval f (10)
6 x = –1.5:0.05:8.5; % <enter > Creación del vector x
7 y = polyval (f,x) % <enter > Uso de la función polyval f(x)
8 plot (x,y, ' Color ' ,rand (3 ,1) , ' LineWidth ' ,2) % <enter > Trazo x vs y
9 xlabel ( ' Eje X ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rotulo X
10 ylabel ( ' Eje Y ' , ' FontSize ' ,20, ' FontName ' , ' Century ' ) % <enter > Rotulo Y
11 grid on % <enter > Creación de cuadrículas
12 set(gca , ' GridAlpha ' ,0.40); % <enter > Oscurecimiento de cuadrículas
13 grid minor % <enter > Muestra cuadrículas menores

Figura 1.27. Representación gráfica del polinomio de ejemplo anterior