5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 1/12
AJUSTE DE CURVASA DATOS DE MEDICIONES
Ajustar una curva implica ajustar una función g(x) a un conjunto de datos
dado, (xi,yi), y = 1, 2, ..., L. La función g(x) es un polinomio, una funciónno lineal o una combinación lineal de funciones conocidas. La función
g(x) que se elige para ajustar una curva contiene cierto número de
coeficientes no determinados. En general, el número de puntos de datos por ajustar, L, es mayor que el número de coeficientes no determinados, k; por
tanto, el método para determinar los coeficientes se basa en la minimización
de las discrepancias entre la función determinada y los puntos de datos, y
recibe el nombre de método de mínimos cuadrados. En el caso especial de L= k, el ajuste de la curva se reduce a un problema de interpolación porque la
curva ajustada pasa por los puntos de datos.
1.- AJUSTE DE LÍNEAS RECTAS
Supongase que interesa ajustar una función lineal al conjunto de datos de la
tabla 1.1. La línea ajustada a un conjunto de datos se denomina línea deregresión.
TABLA 1.1
i x y
1 0.1 0.61
2 0.4 0.92
3 0.5 0.99
4 0.7 1.52
5 0.7 1.47
6 0.7 2.03
La función lineal se expresa con
1.1
En donde c1 y c2 son constantes no determinadas. El número de puntos de
datos es mayor que 2, la línea no se ajusta a todos los puntos, se determina
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 2/12
minmizando las discrepancias entre la línea y los datos. La desviación de la
línea respecto de los puntos está definida por:
1.2
donde L es el número total de puntos de datos (6 en este ejemplo) y c1 y c2
son la constantes por determinar.
La suma de las desviaciones elevadas al cuadrado es:
1.3
El mínimo de R ocurre cuando las derivadas parciales de R respecto de c1 y
c2 son cero:
1.4
La ecuación 1.4 puede reescribirse así:
1.5
donde
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 3/12
La solución de la ecuación 1.5 es
Una forma equivalente de determinar los coeficientes es considerar el
problema como una ecuación líneal sobredeterminada. Por ejemplo, si todos
los puntos de datos de la tabla 1.1 satisfacen la ecuación 1.1, escribimos:
; i = 1, 2, ... , L
o bien
1.6
donde
, ,
Se dice que la ecuación 1.6 es una ecuación lineal sobredeterminada porque
el número de ecuaciones, L , es mayor que el número de incógnitas. Para
obtener la solución, premultiplicamos a la ecuación 1.6 por la transpuesta deA:
1.7
Puesto que AtA se convierte en una matriz cuadrada de 2 por 2 y Aty se
convierte en un vector de longitud 2, la ecuación 1.7 es un problema normal
de 2 por 2. La solución se obtiene con:
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 4/12
La solución anterior concuerda con la ecuación 1.6
También podemos resolver una ecuación sobredeterminada en MATLABcon sólo:
Lo mismo puede lograrse también con polyfit. Supongamos que x y y son
los conjuntos de datos por ajustar; entonces,
c = polyfit(x, y, 1)
devolverá los coeficientes c1 y c2 en el vector c, donde el tercer argumento,"1", es el orden del polinomio ajustado y que en el caso de una línea recta es
la unidad.
Ejemplo 1
Determinar la línea de regresión para los datos de la tabla 1.1 (y) resolviendola ecuación 1.5 y (ii) utilizando el comando polyfit. Una vez obtenida la
línea de regresión, examine la desviación de la línea respecto de los datos.
Solución
Calculamos los coeficientes de la ecuación 1.5 como sigue:
a2,1 z2 a1,1 z1
i xi yi xi2 xiyi
1 0.1 0.61 0.01 0.061
2 0.4 0.92 0.16 0.3683 0.5 0.99 0.25 0.495
4 0.7 1.52 0.49 1.064
5 0.7 1.47 0.49 1.029
6 0.9 2.03 0.81 1.827Total; 3.3 7.54 2.21 4.844
De la tabla anterior obtenemos
a1,1 = 2.21, a1,2 = 3.3, z1 = 4.844
a2,1 = 3.3, a2,2 = 6, z2 = 7.54
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 5/12
Así, la ecuación 1.5 se convierte en
[2.21, 3.3; 3.3, 6] [c1;c2] = [4.844; 7.54] (A)
La solución es
c1 = 1.7645, c2 = 0.2862
La línea de regresión es entonces
g(x) = 1.7645*x + 0.2862 (B)
En la fig. 1.1 se grafica la ecuación (B) con los puntos de datos.
Programa de MATLAB LIST81.M
x = [0.1, 0.4, 0.5, 0.7, 0.7, 0.9];y = [0.61, 0.92, 0.99, 1.52, 1.47, 2.03];
c = polyfit(x,y,1)
c1 = x(1):0.1:x(length(x))c2 = polyval(c,c1)
plot(c1,c2);hold on
plot(x,y,'x')axis([0,1,0,2.1])
xlabel('x')
ylabel('y')
Programa de MATLAB x = [0.1, 0.4, 0.5, 0.7, 0.7, 0.9];
y = [0.61, 0.92, 0.99, 1.52, 1.47, 2.03];
c = polyfit(x,y,1)
a = input('escriba el valor de c1 : ') b = input('Escriba el valor de c2 : ')
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 6/12
g = a.*x + b
plot(x,g,'xg',x,g,'m')
axis([0,1,0,2.1])xlabel('x')
ylabel('y')
text(0.35,1.8, 'g(x) = a*x + b ')
Ahora resolveremos el mismo problema utilizando el comando polyfit.
El guión sólo tiene tres líneas:
x = [0.1, 0.4, 0.5, 0.7, 0.7, 0.9]y = [0.61, 0.92, 0.99, 1.52, 1.47, 2.03]
c = polyfit(x, y, 1)
El resultado es:
c = 1.7646 0.2862
Que es idéntico a los coeficientes de la ecuación (B).
La desviación de la línea se analiza así:
i x(i) y(i) g = c1*x + c2 Desviación
1 0.1 0.61 0.4626 0.147382 0.4 0.92 0.9919 -0.07198
3 0.5 0.99 1.1684 -0.17844
4 0.7 1.52 1.5213 -0.001355 0.7 1.47 1.5213 -0.051356 0.9 2.03 1.8742 0.15574
2.- AJUSTE DE CURVAS NO LINEALES CON UNA FUNCIÓN DEPOTENCIA
Con ciertos tipos de datos, puede ser adecuado ajustar la función de
potencia dada por
g(x) = b xa 2.1
donde a y b son coeficientes no determinados. Para determinar los
coeficientes, primero obtenemos el logaritmo de la ecuación 2.1:
log(g) = a log(x) + log(b ) 2.2
Con las definiciones
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 7/12
2.3
2.4
2.5
2.6
La ecuación 2.2 se convierte en:
Entonces el problema se reduce a una regresión lineal, que ya vimos en la
sección 1. La ecuación 2.7 se ajusta al conjunto de datos (log(yi), log(xi).
Ejemplo 2.-
Un conjunto de datos (graficado en la fig. 2) está dado por:
x = [0.15, 0.4, 0.6, 1.01, 1.5, 2.2, 2.4, 2.7, 2.9, 3.5, 3.8, 4.4, 4.6, 5.1, 6.6, 7.6]
y = [4.4964, 5.1284, 5.6931, 6.2884, 7.0989, 7.5507, 7.5106, 8.0756,7.8708, 8.2403, 8.5303, 8.7394, 8.9981, 9.1450, 9.5970, 9.9115]
c = polyfit(log(x), log(y), 1)
El guión produce:
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 8/12
c = 0.2093 1.8588
Las constantes de la función de potencia son:
a = c1 = 0.2093
b = exp(c2) = exp(1.8588) = 6.4160
Por último, la forma de potencias es
g(x) = b *xa = 6.4160*x0.2093
El conjunto de datos y la curva ajustada se grafican de tres formas distintasen la fig. 3.
3.- AJUSTE DE CURVAS CON UN POLINOMIO DE ORDENSUPERIOR El principio de los mínimos cuadrados puede extenderse al ajuste de un
polinomio de orden superior a los datos de mediciones. Escribimos un
polinomio de orden n así:
3.1
La desviación de la curva respecto de cada punto de datos es
; i = 1,2, ... , L 3.2
donde L es el número de puntos de datos dados. La suma de las derivaciones
elevadas al cuadrado es
3.3
A fin de minimizar R, igualamos a cero las derivadas parciales de R
respecto de cj:
, j = 1,2, ..., n+1 3.4
o, lo que es lo mismo,
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 9/12
; k = 1,2, ..., n+1 3.5
que también puede escribirse en la forma de matrices así:
3.6
Una forma equivalente de deducir la ecuación 3.6 es partir de una ecuación
sobredeterminada. La forma matricial de la ecuación es
3.7
donde
A =
Cuando L > n + 1, la ecuación está sobredeterminada porque el número de
ecuaciones es mayor que el número de coeficientes no determinados. Si premultiplicamos ambos miembros por A’ obtenemos:
3.8
Que es igual a la ecuación 3.6 y se puede resolver como problema normal
con
En MATLAB, podemos obtener la solución de la ecuación 3.7 simplementecon
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 10/12
Como se anuncio en la sección 1, otra forma equivalente pero más sencilla
de encontrar los coeficientes de un polinomio ajustado de datos consiste enutilizar polyfit:
c = polyfit(x, y, n)
Ejemplo 3
Ajuste el siguiente conjunto de datos a un polinomio cuadrático:
x = [0.1, 0.4, 0.5, 0.7, 0.7, 0.9];
y = [0.61,0.92, 0.99, 1.52, 1.47, 2.03];
y grafique tanto el conjunto de datos como la curva ajustada.
Solución
Encontramos los coeficientes del polinomio cuadrático con el comando polyfit y luego trazamos la curva. El siguiente guión produce la respuesta:
List82
Clear, clg
x = [0.1, 0.4, 0.5, 0.7, 0.7, 0.9]; y = [0.61,0.92, 0.99, 1.52, 1.47, 2.03];
cc = polyfit(x, y, 1) xx = x(polival(cc,xx)) plot(xx, yy); hold on
plot(x, y, ‘x’) axis([0,1, 0,3])
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 11/12
xlabel(‘X’) ylabel(‘Y’)
La gráfica del resultado se muestra en la fig. 4.
4.- AJUSTE DE CURVAS CON UNA COMBINACIÓN LINEAL DEFUNCIONES CONOCIDAS
Al ajustar una función a puntos de datos, podemos utilizar una combinaciónde cualesquier funciones conocidas, incluidos polinomios.
4.1
donde f 1, f 2, ... son funciones preescritas, c1, c2, ... son coeficientes no
determinados y k es el número total de funciones prescritas. Si ajustamos la
ecuación 4.1 a cada punto de datos, podremos escribir una función
sobredeterminada así:
4.2
Con
; ;
donde L > k. Los coeficientes están determinados por
Ejemplo 4.
Determine los coeficientes de la función
ajustado a los datos de la siguiente tabla:
x y
5/13/2018 AJUSTE DE CURVAS - slidepdf.com
http://slidepdf.com/reader/full/ajuste-de-curvas-55a74ef0ca4bb 12/12
0.1 0.61
0.4 0.92
0.5 0.99
0.7 1.52
0.7 1.47
0.9 2.03
Solución El argumento de resolución se implementa en el listado 3. La curva
determinada se grafica en la fig. 5
List83
clc; clear; clgdata = [ 0.1 0.61; 0.92; 0.99; 0.7 1.52 0.7 1.47 2.03 ]
x = data(:,1); y = data (:,2);
A(:,1) = ones(x); A(:,2) = x; A(:,3) = sin(x); A(:, 4) = exp(x);c = A\y
xx = 0 : 0.01 : 1 ;
g = c(1) * ones(xx) c(2) * xx + c(3) * sin(xx) + c(4) * exp(xx);
axis(‘square’); plot(x, y, ‘ * ’ , xx, g); xlabel( ‘ x ’ ); ylabel( ’ y ’ )
Top Related