Sie sind auf Seite 1von 20

FUNCIONES DE UNA VARIABLE

Las funciones matemticas son todas aquellas expresiones lineales o no lineales que incluyen una o ms variables. A continuacin se tratan las funciones de Matlab que ejecutan operaciones o procedimientos sobre funciones polinmicas de una variable.

FUNCIONES POLINMICAS
Para el manejo de los polinomios, Matlab dispone de un conjunto de funciones cuya documentacin o ilustracin se encuentra en el directorio polyfun. Las funciones permiten la realizacin de procedimientos matemticos entre polinomios como su multiplicacin (funcin conv) o su divisin (funcin deconv), la derivada o la evaluacin de un polinomio (funcin polyder y polyval) y la determinacin de las races de una ecuacin polinmica (funcin roots). Para accesar a la lista completa de dichas funciones con sus respectivas descripciones y vnculos con pginas relacionadas con ellas se digita en el editor de comandos de Matlab la orden:

help polyfun

Representacin de polinomios
MATLAB representa un polinomio como una matriz fila cuyos elementos son los coeficientes de los trminos del polinomio en orden decreciente de potencia. Por ejemplo, el siguiente polinomio de grado 4:

( )

Para expresarlo en el cdigo de Matlab se escribe la siguiente matriz fila:

p = [4 3 -4 6 -1];

Evaluacin de polinomios
La funcin polyval evala a un polinomio en un valor especificado de la variable independiente. La sintaxis de la escritura de la funcin polyval es:

polyval(p, xo)

Siendo p el polinomio a evaluar en funcin de la variable x y xo el valor de la variable para el cual se quiere evaluar al polinomio. Si el polinomio de grado 4 de la seccin anterior se quiere evaluar para un valor de xo = 3, entonces, despus de escribirse en la plataforma de Matlab el polinomio en la forma matricial, debe escribirse la funcin para su evaluacin as:

V = polyval(p,3)

Matlab arrojar un resultado que este caso se observar como:

ans = 386

Multiplicacin y divisin de polinomios


En Matlab la multiplicacin y la divisin entre dos polinomios corresponden a las operaciones denominadas convolucin y deconvolucin. La funcin conv ejecuta la multiplicacin entre dos polinomios y la funcin deconv ejecuta la divisin entre dos polinomios. La sintaxis de la escritura de estas dos funciones es:

c = conv(a,b) [q,r] = deconv(a,b)

Siendo a y b los polinomios a multiplicar o a dividir, escritos con el formato de Matlab ya sea anteriormente o dentro del parntesis que encierra los argumentos de la funcin conv o deconv. La funcin deconv reporta el cociente q y el residuo r

La multiplicacin de los polinomios:

( ) ( )

Desarrollada con Matlab requiere de las siguientes declaraciones:

a = [3 4 6 -1]; b = [1 2 -2]; c = conv(a, b);

Matlab arrojar un resultado que este caso se observar como:

c=

10

3 -14

La matriz c representa al polinomio: ( ) La divisin del polinomio c(x) entre el polinomio b(x), al desarrollarla en Matlab requiere de la declaracin de dichos polinomios y la funcin deconv de la siguiente forma:

[q,r] = deconv(c,b);

Matlab arroja el resultado del cociente y el residuo en la siguiente forma:


q= r= 3 0 4 0 6 0 -1 0 0 0

Derivacin de polinomios
En Matlab, la derivacin de un polinomio se ejecuta con la funcin polyder. La sintaxis de esta funcin solo requiere como argumento la especificacin el polinomio as:

q = polyder(p)

Siendo p el polinomio a derivar. Para obtener la derivada del polinomio ( ) se requieren las siguientes declaraciones en la plataforma de Matlab

= [3

10

-14

2]

q = polyder(p)

Y se observar el siguiente resultado: q = 15

40

24

-14

La funcin polyder tambin calcula la derivada del producto o del cociente entre dos polinomios. La sintaxis de esta funcin para estos casos es:

Derivada del Producto entre a y b: Derivada del Cociente entre a y b.

c = polyder(a,b) [q,d] = polyder(a,b)

Races de una ecuacin polinmica


En Matlab, las races de una ecuacin polinmica se ejecuta con la funcin roots. La sintaxis de esta funcin solo requiere como argumento la especificacin del polinomio as:

q = roots(p)

Siendo q un vector cuyos elementos son las races de la ecuacin polinmica p = 0. Para la ecuacin polinmica se requiere de las siguientes en Matlab para obtener las races:

p = [8 3 -14 2] r = roots(p)

Las races recogidas como un vector son reportadas por Matlab de la siguiente forma:

r = -1.5815 1.0569 0.1496

Al referirse a dichas races debe hacer con su correspondiente indexacin, es decir r(1) es la primera, r(2) es la segunda y r(3) es la tercera.

Aproximacin polinomial de datos


En trabajos de ingeniera es usual el registro de datos de procesos que muestren la variacin de una variable (dependiente) con respecto al cambio ocasionado en otra (variable independiente). Para ciertos propsitos, como la estimacin para cualquier valor de la variable independiente el valor de la variable dependiente (interpolar o extrapolar) suelen ajustarse dichos datos a una relacin matemtica que de acuerdo a la tendencia, en muchos casos, es vlida una aproximacin de tipo polinmica.

En Matlab, la aproximacin polinmica de un conjunto de datos se ejecuta con la funcin polyfit. La sintaxis de esta funcin solo requiere como argumentos, los datos de la variable independiente (x) y dependiente (y) y el valor del grado (n) del polinomio aproximacin as:

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 mnimos cuadrados.

FUNCIONES LGICAS - MATLAB


Para la determinacin de informacin relacionada con la naturaleza de datos, Matlab dispone de un conjunto de funciones lgicas cuya ejecucin, simplemente, reporta que el resultado es verdadero (valor 1) o falso (valor cero). Por ejemplo, si despus de resolver la ecuacin polinmica se quiere determinar si las races son reales se puede programar la ejecucin de las siguientes rdenes:

p = [8 3 -14 2]; r = roots(p); N = isreal(r)

La funcin isreal se encarga de determinar la naturaleza de cada una de las tres races de la ecuacin polinmica. En este caso, Matlab reporta que N = 1, es decir que es verdadero que las races son reales. La sintaxis de una funcin lgica solo requiere de la declaracin de la palabra clave seguido de un parntesis donde se especifique como argumento el arreglo de datos. Otras funciones lgicas importantes encontradas en la biblioteca de funciones de Matlab son:

isnumeric:

Determina si la entrada es un arreglo numrico

isinteger: isfloat: islogical: ischar:

Determina si la entrada es un arreglo de nmeros enteros Determina si la entrada es un arreglo de nmeros de punto flotante Determina si la entrada es un arreglo de valores lgicos Determina si la entrada es un arreglo de caracteres string

Se recomienda al usuario utilizar la ayuda de Matlab para documentarse a cerca de otras funciones lgicas importantes dentro de las necesidades de la programacin matemtica en la plataforma de Matlab.

PROGRAMACIN - MATLAB
En esta seccin se incluye la explicacin de otro lazo de control, muy til en cdigos de programacin cuando se quiere ejecutar una orden o un grupo de rdenes un predeterminado nmero de veces. Se trata del lazo de control forend.

Lazo de control: forend


La estructura para el desarrollo de un lazo de control forend es: for i = Valor Inicial: Incremento: Valor Final orden; orden; . end

Se entiende a i como el ndice que simboliza el nmero de la repeticin del grupo de rdenes, su valor cambia desde un Valor Inicial que se aumenta sucesivamente segn el valor del Incremento hasta alcanzarse el Valor Final. El valor por defecto del Incremento es 1 y en este caso es opcional su escritura. Se puede especificar un Incremento con un valor de signo negativo. Para incrementos positivos, la ejecucin del lazo de control termina cuando el valor del ndice excede el valor final; para incrementos negativos la ejecucin del lazo de control termina cuando el valor del ndice es menor que el valor final.

En el siguiente segmento de un cdigo de programacin:

m = [1:40]; z = length(m);

% Nmero de datos de m

% Evaluacin de la aproximacin polinmica en cada uno de los valores de m for i = 1:z Y2(i) = polyval(p, i); end En la primera orden se define un conjunto de valores m desde 1 hasta 40 de 1 en 1. En la segunda orden se determina el conjunto de valores que contiene la matriz m y el lazo de control forend repite la evaluacin de un polinomio p para los sucesivos valores de i y los arregla dentro de una matriz Y2.

Lazos de control anidados


Dentro de un lazo de control cualquiera se pueden a su vez incluir otros lazos de control. Es decir hay un lazo de control externo y uno o ms internos. Se considera, entonces, que los lazos de control externo e internos estn anidados. En el siguiente segmento de un archivo mostrado al final de esta leccin se puede observar un lazo de control forend externo anidado con otros dos lazos internos.

clc, clear all 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); % Determinacin del nmero de temperaturas en la matriz X1 for i = 1:s(1) for j = 1:s(2) Y1(j) = A(i,j); constante end

% Captura de los valores de densidades para una concentracin

plot(X, Y1, 'xr', 'Linewidth', 4) x grid on hold on p = polyfit(X, Y1, 3); en el lazo de control for z = 1:n Y2(z) = polyval(p, X1(z)); end plot(X1,Y2, '-k') end

% Representacin de los dados de densidad localizados con

% Aproximacin polinomial de grado tres de los dados obtenidos

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

REPRESENTACIN GRAFICA DE DATOS - MATLAB


El ambiente de MATLAB ofrece una variedad de funciones para representar datos grficamente, adems de un conjunto de interfaces para crear y modificar grficos.

Figure
Una figure es una ventana de MATLAB que contiene el despliegue grfico de datos en forma de lugares geomtricos y algunos controles para la manipulacin o edicin de dichos grficos. Un usuario de Matlab crea figures en forma explcita con la funcin figure, pero tambin las crea implcitamente cuando ordena la construccin de un grfico con la funcin plot y no existe una figure abierta o activa. La sintaxis para la creacin explcita de una figure solo requiere de la especificacin de un nmero distintivo, como por ejemplo: figure(1) figure(2).

Por defecto, las ventanas figure son redimensionables y contienen mens desplegables y barras de herramientas.

Comando hold on y hold off


El mantenimiento de una figura en forma abierta o activa para desplegar sucesivos plot en la misma ventana se ordena con el comando hold on y el cierre de la figure o la inactivacin de ella se ordena con el comando hold off.

Plot
Un plot es cualquier despliegue grfico 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 geomtricos, imgenes o superficies, adems de anotaciones como ttulos, 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 explcita haciendo uso de las funciones axes o subplot. La sintaxis para la creacin de un plot bidimensional requiere la especificacin, como mnimo, del vector de valores correspondiente a la variable independiente y seguidamente del vector de valores correspondiente a la variable dependiente separados por una coma, es decir;

plot(x, y)

Las propiedades del plot se pueden editar desde la declaracin del comando y se colocan despus del segundo argumento separado por un signo coma. Por ejemplo, si se quiere editar que el plot sea una lnea a trazos y de color negro, entonces, se agrega a la anterior declaracin lo siguiente: plot(x, y, --k)

Los dos trazos discontinuos es la convencin para un plot lineal por trazos, la letra k es la convencin para el color negro y el valor de la propiedad debe encerrarse entre comillas simples. Otras convenciones sobre el tipo de lnea son: o (solo los puntos), -. (raya punto), x (solo x), etc. Otras convenciones para el color de la lnea son: r (rojo), b (azul), y (amarillo), g(verde), etc.

Leyendas sobre los ejes y ttulo del grfico


Las leyendas sobre los ejes y el ttulo del grfico se ordenan con los siguientes comandos que exigen como argumento, mnimo, la leyenda a desplegar encerrada entre comillas simples. xlabel(Leyenda) ylabel(Leyenda) title(Leyenda)

Leyenda sobre el eje x: Leyenda sobre el eje y: Ttulo del grfico:

Las propiedades de la leyenda se pueden editar desde la declaracin del comando y se colocan despus del segundo argumento separado por un signo coma. La sintaxis requiere que se escriba el nombre de la propiedad encerrada entre comillas simples y a continuacin el valor de la propiedad separado por una coma. Por ejemplo, si se quiere que la leyenda se despliegue con una tamao de letra 14, se escribe el nombre de la propiedad correspondiente, en este caso Fontsize y a continuacin el nmero 14 sin comillas. La siguiente orden:

ylabel('Temperatura, C', 'Fontsize', 14) Desplegar sobre el eje y de un grfico la leyenda Temperatura, C con un tamao de letra de 14. Si se desea escribir una leyenda, como argumento dentro de los anteriores, en varios renglones se colocan las escrituras dentro de dos llaves, encerradas entre comillas simples y separadas por el signo punto y coma. Con la siguiente orden, en un grfico aparecer un ttulo ocupando dos renglones, el primero con la leyenda Densidad Temperatura y el segundo con la leyenda Diferentes Concentraciones

title({'Densidad - Temperatura' ; 'Diferentes Concentraciones'}, 'Fontsize', 16)

Despliegue de textos sobre un grfico


Para el despliegue de textos sobre los grficos se utiliza la funcin text que requiere como argumentos la localizacin del texto (primero abscisa y segundo ordenada separados por una coma) y luego tambin separado por coma el texto a desplegar encerrado entre comillas simples. El siguiente ejemplo ilustra el uso de la funcin text

text(13, 15, Hola, 'Fontsize', 13)

% Despliegue del valor sobre dicho punto

Al ejecutarse la orden anterior se desplegar el texto Hola en las coordenadas (13, 15) de un grfico con un tamao de letra 13.

EJERCICIOS RESUELTOS
1. La siguiente tabla muestra las temperaturas de ebullicin de la acetona a diferentes presiones:

Punto T C

1 56.5

2 78.6 2

113.0 144.5 181.0 205.0 214.5 5 10 20 30 40

P, atm 1

Ajustar dichos datos a un polinomio de grado 2 considerando la presin como la variable independiente y la temperatura como variable dependiente. Se define la matriz de temperaturas y la matriz de presiones as:

x = [1 2 5 10 20 30 40] y = [56.5 78.6 113.0 144.5 181.0 205.0 214.5]

Y a continuacin se aplica la funcin polyfit fijando el valor n del grado del polinomio elegido para el ajuste polinomial, si no se observa una aproximacin satisfactoria se sigue probando con grados mayores. A continuacin se desarrolla al ajuste para un polinomio de grado 2

p = polyfit(x, y, 2)

Matlab arroja como resultado los coeficientes de un polinomio de grado 2 en la siguiente forma:

p= -0.1272 8.8311 60.6867

Entonces, el ajuste polinmico que se obtiene para los datos experimentales es:

( )

La siguiente tabla muestra los resultados obtenidos para las temperaturas de ebullicin Ya calculadas con la aproximacin polinomial y la comparacin grfica entre los datos originales (X, Y) y los obtenidos con la aproximacin polinomial (X, Ya) se muestra en la Figura 1. Como adicin, para mas comparacin, se muestra en la Figura 2 el grfica que representa los valores de las temperaturas de ebullicin de la acetona para presiones entre 1 y 40 atm incrementadas de 1 en 1

Figura 1. Datos originales Datos aproximados

Figura 2. Datos originales Datos estimados con la aproximacin polinomial

Los resultados observados permiten considerar que la aproximacin polinmica de segundo grado no es satisfactoria. El cdigo de Matlab mostrado a continuacin desarrolla la aproximacin, calcula los datos con el ajuste obtenido y grafica los resultados. Se deja como asignacin para el estudiante, utilizar dicho programa cambiando el grado del polinomio de aproximacin y observando las diferencias que resultan entre los datos originales y los calculados con el ajuste sugerir una aproximacin satisfactoria.

Cdigo Matlab
% Programa 21 % Aproximacin polinmica de datos clc, clear all X = [1 2 5 10 20 30 40]; % Datos variable independiente Y = [56.5 78.6 113.0 144.5 181.0 205.0 214.5]; % Datos variable dependiente p = polyfit(X, Y, 2); n = length(X); % Aproximacin polinmica de grado 2 % Nmero de datos de X

% Evaluacin de la aproximacin polinmica en cada uno de los valores de X for i = 1:n Y1(i) = polyval(p, X(i)); end % Intervalo de valores para evaluar la aproximacin polinmica m = [1:40]; z = length(m);

% Nmero de datos de m

% Evaluacin de la aproximacin polinmica en cada uno de los valores de m for i = 1:z Y2(i) = polyval(p, i); end

disp(' RESULTADOS ') disp('=======================================') disp('Los coeficientes del polinomio de segundo grado son: '); p disp(' ') R = [X; Y; Y1; abs(Y1 - Y)]; disp('=======================================') disp(' X Y Ya Y - Ya ') disp('=======================================') fprintf('% 12.0f % 6.1f % 6.1f % 6.1f\n', R); disp('=======================================') % Grficas de datos iniciales y de datos calculados de acuerdo a la % aproximacin polinomial figure(1) plot(X,Y, 'or', X, Y1, '-k') ylabel('Temperatura, C', 'Fontsize', 14) xlabel('Presin, atm', 'Fontsize', 14) title('Temperatura de Ebullicin de Acetona versus Presin', 'Fontsize', 14) legend('Datos originales', 'Datos ajustados', 4) % Grficas de datos iniciales y de datos calculados para el intervalo de 1

% a 40 de uno de uno figure(2) plot(X, Y, 'or') hold on plot(m, Y2, '-b') ylabel('Temperatura, C', 'Fontsize', 14) xlabel('Presin, atm', 'Fontsize', 14) title('Temperatura de Ebullicin de Acetona versus Presin', 'Fontsize', 14) legend('Datos originales', 'Datos interpolados', 4) hold off

2. Las densidades de las soluciones acuosas del cido sulfrico varan con la temperatura y la concentracin de acuerdo a la siguiente tabla:

C, % 5 20 40 70

T, C 10 1,0344 1,1453 1,3103 1,6923 30 1,0281 1,1335 1,2953 1,6014 60 1,0140 1,1153 1,2732 1,5753 100 0,9888 1,0885 1,2446 1,5417

1. Hacer un ajuste polinmico de las densidades para una concentracin del 40 % y estimar la densidad para una temperatura de 15 C 2. Calcular la temperatura a la cual una solucin al 40 % tiene una densidad de 1,255 3. Hacer un ajuste polinmico de las densidades para una temperatura de 30 C y estimar la densidad para una concentracin del 50 % 4. Estimar la densidad a 50 C y 60 % de concentracin.

Las respuestas a las tres primeras preguntas del ejercicio se desarrollan con un archivo de Matlab que aparece a continuacin.

El programa despliega las siguientes dos figuras:

Figure 1. Densidad Temperatura

Figure 2. Densidad Concentracin (30 C)

En la figura nmero 1 se muestran los grficos de las densidades para cada una de las diferentes concentraciones de soluciones en el intervalo de temperatura contenido dentro del conjunto de datos; en la nmero 2 se muestra el grfico de las densidades a una temperatura de 30 C en el intervalo de concentraciones. Se deja como asignacin, para el estudiante, la adicin del cdigo para encontrar la respuesta a la cuarta pregunta. Los resultados encontrados con dicho cdigo son:

Cdigo Matlab
% Programa 2.2 % Aproximacin polinmica de datos clc, clear all 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]; n = length(X1); for i = 1:s(1) for j = 1:s(2) Y1(j) = A(i,j); end % Valores de temperaturas de 1 en 1 desde 10 hasta 100 % Determinacin del nmero de temperaturas en la matriz X1

% Captura de los valores de densidades para una concentracin constante

plot(X, Y1, 'xr', 'Linewidth', 4) % Representacin de los dados de densidad localizados con x grid on hold on p = polyfit(X, Y1, 3); % Aproximacin 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') % Para una solucin de 40 % de concentracin if C(i) == 40 % Determinacin de la densidad a 15 C R1 = polyval(p, 15); % Determinacin de la densidad para una temperatura de 15 C plot(15, R1, 'ok', 'Linewidth', 6) % Graficacin del valor de la densidad con una o negra text(13, R1 + 0.025, num2str(R1), 'Fontsize', 13) % Despliegue del valor sobre dicho punto fprintf('Resp. 1. La densidad de una solucin del 40 a una temperatura de 15 C es = % 6.4f\n', R1)

% Determinacin de la temperatura para una densidad de 1.255 pol = p - [0 0 0 1.255]; T = roots(pol); % Polinomio igual a cero para una densidad de 1.255 % Races del polinomio

for i = 1:3 N = isreal(T(i)); % Determina si las races de la ecuacin 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) % Graficacin 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 solucin del 40 con una densidad de 1.255 es = % 6.1f\n', R2) else end end else end end % Tercera Pregunta: Densidad 30 C y 50 % de concentracin for j = 1:s(2) Y3(j) = A(j,2); end

% Captura de los valores de densidades para una temperatura de 30 C

figure(2) % Apertura de una nueva figure plot(C, Y3, 'xr', 'Linewidth', 4) grid on hold on p1 = polyfit(C, Y3, 3); 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 solucin del 50 y una temperatura de 30 C es = % 6.4f\n', R3)

EJERCICIO PROPUESTO
1. A continuacin se presentan las presiones de vapor del cloruro de magnesio para un conjunto de temperaturas:

Puntos P(mm Hg) T (C)

1 10 930

2 20 988

3 40 1050

4 60 1088

5 100 1142

6 200 1316

7 400 1223

8 760 1418

1. Construir un grfico de la presin en funcin de la temperatura 2. Ajustar los datos a una aproximacin polinmica 3. Determinar la presin de vapor a una temperatura de 1000 C