Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las funciones matemáticas son todas aquellas expresiones lineales o no lineales que
incluyen una o más variables. A continuación se tratan las funciones de Matlab que
ejecutan operaciones o procedimientos sobre funciones polinómicas de una variable.
FUNCIONES POLINÓMICAS
help polyfun
Representación de polinomios
MATLAB representa un polinomio como una matriz fila cuyos elementos son los
coeficientes de los términos del polinomio en orden decreciente de potencia. Por
ejemplo, el siguiente polinomio de grado 4:
( )
p = [4 3 -4 6 -1];
Evaluación de polinomios
polyval(p, xo)
V = polyval(p,3)
Matlab arrojará un resultado que este caso se observará como: ans = 386
c = conv(a,b)
[q,r] = deconv(a,b)
( )
( )
a = [3 4 6 -1];
b = [1 2 -2];
c = conv(a, b);
c= 3 10 8 3 -14 2
[q,r] = deconv(c,b);
q= 3 4 6 -1
r= 0 0 0 0 0 0
Derivación de polinomios
q = polyder(p)
C = [3 10 8 3 -14 2]
q = polyder(p)
La función polyder también calcula la derivada del producto o del cociente entre
dos polinomios. La sintaxis de esta función para estos casos es:
En Matlab, las raíces de una ecuación polinómica se ejecuta con la función roots. La
sintaxis de esta función solo requiere como argumento la especificación del
polinomio así:
q = roots(p)
p = [8 3 -14 2]
r = roots(p)
Las raíces recogidas como un vector son reportadas por Matlab de la siguiente
forma:
r =
-1.5815
1.0569
0.1496
p = polyfit(x,y,n)
El resultado arroja una matriz fila p de longitud n + 1 cuyos elementos son los
coeficientes de un polinomio p(x) de grado n que ajusta los datos p(x(i)) a y(i),
mediante un procedimiento de los mínimos cuadrados.
p = [8 3 -14 2];
r = roots(p);
N = isreal(r)
PROGRAMACIÓN - MATLAB
En esta sección se incluye la explicación de otro lazo de control, muy útil en códigos
de programación cuando se quiere ejecutar una orden o un grupo de órdenes un
predeterminado número de veces. Se trata del lazo de control for…end.
m = [1:40];
z = length(m); % Número de datos de m
for i = 1:z
Y2(i) = polyval(p, i);
end
A = [1.0344 1.0281 1.0140 0.9888; 1.1453 1.1335 1.1153 1.0885; 1.3103 1.2953 1.2732 1.2446;
1.6923 1.6014 1.5753 1.5417];
X = [10 30 60 100];
C = [5 20 40 70];
s = size(A);
X1 = [10:100]; % Valores de temperaturas de 1 en 1 desde 10 hasta 100
n = length(X1); % Determinación del número de temperaturas en la matriz X1
for i = 1:s(1)
for j = 1:s(2)
Y1(j) = A(i,j); % Captura de los valores de densidades para una concentración
constante
end
plot(X, Y1, 'xr', 'Linewidth', 4) % Representación de los dados de densidad localizados con
x
grid on
hold on
p = polyfit(X, Y1, 3); % Aproximación polinomial de grado tres de los dados obtenidos
en el lazo de control
for z = 1:n
Y2(z) = polyval(p, X1(z));
end
plot(X1,Y2, '-k')
end
El lazo de control externo repite las orden que hay en su interior las veces dadas por
el valor de s(1), el primer de lazo de control interno repite las órdenes que hay en su
interior las veces dadas por el valor de s(2) y el segundo lazo de control interno
repite las órdenes que hay en su interior las veces dadas por el valor de n
Figure
Una figure es una ventana de MATLAB que contiene el despliegue gráfico de datos
en forma de lugares geométricos y algunos controles para la manipulación o edición
de dichos gráficos. Un usuario de Matlab crea figures en forma explícita con la
función figure, pero también las crea implícitamente cuando ordena la construcción
de un gráfico con la función plot y no existe una figure abierta o activa.
figure(1) ó figure(2)….
Plot
Un plot es cualquier despliegue gráfico que un usuario puede construir dentro de una
ventana figure. Un plot puede ser el despliegue de un conjunto de datos en forma
tabular, u objetos geométricos, imágenes o superficies, además de anotaciones como
títulos, leyendas y barras de colores. Una figure puede mostrar uno o varios plot.
Cada plot se crea dentro de un espacio de datos bidimensional o tridimensional
denominados axes. Un usuario puede crear axes en forma explícita haciendo uso de
las funciones axes o subplot.
plot(x, y)
Las propiedades del plot se pueden editar desde la declaración del comando y se
colocan después del segundo argumento separado por un signo coma. Por ejemplo,
si se quiere editar que el plot sea una línea a trazos y de color negro, entonces, se
agrega a la anterior declaración lo siguiente:
plot(x, y, ‘--k’)
Los dos trazos discontinuos es la convención para un plot lineal por trazos, la letra k
es la convención para el color negro y el valor de la propiedad debe encerrarse entre
comillas simples. Otras convenciones sobre el tipo de línea son: o (solo los puntos),
-. (raya punto), x (solo x), etc. Otras convenciones para el color de la línea son: r
(rojo), b (azul), y (amarillo), g(verde), etc.
Leyendas sobre los ejes y título del gráfico
Las leyendas sobre los ejes y el título del gráfico se ordenan con los siguientes
comandos que exigen como argumento, mínimo, la leyenda a desplegar encerrada
entre comillas simples.
Para el despliegue de textos sobre los gráficos se utiliza la función text que requiere
como argumentos la localización del texto (primero abscisa y segundo ordenada
separados por una coma) y luego también separado por coma el texto a desplegar
encerrado entre comillas simples. El siguiente ejemplo ilustra el uso de la función
text
text(13, 15, ‘Hola’, 'Fontsize', 13) % Despliegue del valor sobre dicho punto
EJERCICIOS RESUELTOS
Punto 1 2 3 4 5 6 7
P, atm 1 2 5 10 20 30 40
x = [1 2 5 10 20 30 40]
p = polyfit(x, y, 2)
Matlab arroja como resultado los coeficientes de un polinomio de grado 2 en
la siguiente forma:
p=
( )
for i = 1:n
Y1(i) = polyval(p, X(i));
end
m = [1:40];
z = length(m); % Número de datos de m
for i = 1:z
Y2(i) = polyval(p, i);
end
disp('=======================================')
disp(' X Y Ya Y - Ya ')
disp('=======================================')
fprintf('% 12.0f % 6.1f % 6.1f % 6.1f\n', R);
disp('=======================================')
figure(1)
plot(X,Y, 'or', X, Y1, '-k')
ylabel('Temperatura, °C', 'Fontsize', 14)
xlabel('Presión, atm', 'Fontsize', 14)
title('Temperatura de Ebullición de Acetona versus Presión', 'Fontsize', 14)
legend('Datos originales', 'Datos ajustados', 4)
figure(2)
plot(X, Y, 'or')
hold on
plot(m, Y2, '-b')
ylabel('Temperatura, °C', 'Fontsize', 14)
xlabel('Presión, atm', 'Fontsize', 14)
title('Temperatura de Ebullición de Acetona versus Presión', 'Fontsize', 14)
legend('Datos originales', 'Datos interpolados', 4)
hold off
2. Las densidades de las soluciones acuosas del ácido sulfúrico varían con la
temperatura y la concentración de acuerdo a la siguiente tabla:
T, °C
C, %
10 30 60 100
5 1,0344 1,0281 1,0140 0,9888
20 1,1453 1,1335 1,1153 1,0885
40 1,3103 1,2953 1,2732 1,2446
70 1,6923 1,6014 1,5753 1,5417
Las respuestas a las tres primeras preguntas del ejercicio se desarrollan con un
archivo de Matlab que aparece a continuación.
El programa despliega las siguientes dos figuras:
Se deja como asignación, para el estudiante, la adición del código para encontrar la
respuesta a la cuarta pregunta. Los resultados encontrados con dicho código son:
Código Matlab
% Programa 2.2
% Aproximación polinómica de datos
A = [1.0344 1.0281 1.0140 0.9888; 1.1453 1.1335 1.1153 1.0885; 1.3103 1.2953 1.2732 1.2446; 1.6923
1.6014 1.5753 1.5417];
X = [10 30 60 100];
C = [5 20 40 70];
s = size(A);
for i = 1:s(1)
for j = 1:s(2)
Y1(j) = A(i,j); % Captura de los valores de densidades para una concentración constante
end
plot(X, Y1, 'xr', 'Linewidth', 4) % Representación de los dados de densidad localizados con x
grid on
hold on
p = polyfit(X, Y1, 3); % Aproximación polinomial de grado tres de los dados obtenidos en el lazo
de control
for z = 1:n
Y2(z) = polyval(p, X1(z));
end
plot(X1,Y2, '-k')
if C(i) == 40
% Determinación de la densidad a 15 °C
R1 = polyval(p, 15); % Determinación de la densidad para una temperatura de 15 °C
plot(15, R1, 'ok', 'Linewidth', 6) % Graficación del valor de la densidad con una o negra
text(13, R1 + 0.025, num2str(R1), 'Fontsize', 13) % Despliegue del valor sobre dicho punto
for i = 1:3
N = isreal(T(i)); % Determina si las raíces de la ecuación pol son reales
if N == 1 && T(i) > 0 && T(i) < 100 % Condicionamiento de real, mayor que cero y menor que 100
R2 = T(i); % Asignar a R2 la raiz real, mayor que cero y menor que 100
plot(R2, 1.255, 'ok', 'Linewidth', 6) % Graficación del valor de la densidad con una o negra
text(R2 -1, 1.255 + 0.025, num2str(R2), 'Fontsize', 13) % Despliegue del valor sobre dicho punto
disp(' ')
fprintf('Resp. 2. La temperatura de una solución del 40 con una densidad de 1.255 es = % 6.1f\n',
R2)
else
end
end
else
end
end
for j = 1:s(2)
Y3(j) = A(j,2); % Captura de los valores de densidades para una temperatura de 30 °C
end
X4 = [5:70];
m = length(X4);
for w = 1:m
Y4(w) = polyval(p1, X4(w));
end
plot(X4,Y4, '-k')
R3 = polyval(p1, 50);
plot(50, R3, 'ok', 'Linewidth', 6)
text(49, R3 - 0.03, num2str(R3), 'Fontsize', 13)
disp(' ')
fprintf('Resp. 3. La densidad de una solución del 50 y una temperatura de 30 °C es = % 6.4f\n', R3)
EJERCICIO PROPUESTO
Puntos 1 2 3 4 5 6 7 8
P(mm Hg) 10 20 40 60 100 200 400 760
T (°C) 930 988 1050 1088 1142 1316 1223 1418