21
TAREA Nº 1 IDENTIFICACIÓN DE P ARÁMETROS “Ajustes de curvas y regresión” Universidad de Concepción Facultad de Ingeniería Departamento Ingeniería Eléctrica. Departamento Ingeniería Eléctrica. Alumnos: Héctor A. Mella C. Sebastián O. Mardones M. Profesor: Alejandro Rojas Asignatura: Identificación de parámetros 29 de abril de 2011

Minimos cuadrados en matlab

Embed Size (px)

Citation preview

Page 1: Minimos cuadrados en matlab

1

TAREA Nº 1

“IDENTIFICACIÓN DE PARÁMETROS” “Ajustes de curvas y regresión”

Universidad de Concepción Facultad de Ingeniería

Departamento Ingeniería Eléctrica.

Departamento Ingeniería Eléctrica.

Alumnos:

Héctor A. Mella C.

Sebastián O. Mardones M.

Profesor:

Alejandro Rojas

Asignatura:

Identificación de parámetros

29 de abril de 2011

Page 2: Minimos cuadrados en matlab

2

Introducción:

El ajuste de curvas es un problema ampliamente utilizado en ingeniería y específicamente

corresponde a problemas tratados en análisis numérico, área en la que se han estudiado diversos

casos. En el mundo que nos rodea existen diversos procesos que nos son de interés analizar, estos

están en un plano análogo, pero en la mayoría de los casos es necesario transportarlos al mundo digital de la manera más precisa posible mediante conversores A/D. En ingeniería son muchas las

ocasiones en que es necesario proponer funciones y modelos que se ajusten lo más fielmente

posible a la realidad. Para ofrecer una buena solución a estos problemas se usan métodos como la Interpolación, Método de Mínimos Cuadrados, Regresión lineal y no lineal, entre otros.

En este informe nos centraremos en el Método de Mínimos Cuadrados y Regresión.

El objetivo de este informe es estudiar la teoría y también mostrar ejemplos los métodos de

Mínimos Cuadrados y Regresión, pero también se tratará el tema de interpolación polinomial.

1.- Método de los Mínimos Cuadrados.

El método de mínimos cuadrados es una herramienta que permite dar respuesta al problema de

resolver sistemas de ecuaciones lineales sobre-determinados, es decir, sistemas lineales con más

ecuaciones que incógnitas. Así, en lugar de resolver las ecuaciones de manera exacta, habitualmente

no existe tal solución, se busca minimizar la suma de los cuadrados de los residuos. En específico la aproximación de curvas mediante mínimos cuadrados busca encontrar los coeficientes para la

función F(x) tal que aproxime de la mejor forma posible al un set de datos.

Así, dado un conjunto de puntos ),( kk yx , con k=1,2,…,n pares de datos y fj(x) para j=1,2,…m un

conjunto de m funciones linealmente independientes nos proponemos encontrar un kk yxF )( es

decir:

m

j

jj xfcxF1

)(·)(

Notar que las funciones bases fj(x) pueden ser cualesquiera, luego se sobreentiende que F(x) es una

combinación lineal de dichas funciones base. Para el caso particular en que la función F(x) sea un polinomio de orden n se tiene

n

n xcxccxf ·...·)( 21

Usualmente para el set de datos se contempla m>n, es decir un sistema sobre-determinado de m

ecuaciones y n variables, en otras palabras este no tiene solución.

Ahora bien, se puede considerar todo lo anterior en un sistema matricial de ecuaciones

ycA ·

DondemxnRA matriz rectangular de m filas que es consecuente con el numero de ecuaciones del

que se disponga y n columnas referente al grado de la función o polinomio F(x), y mRc

Una alternativa es buscar una solución para el vector c nR tal que el error definido como

)( kkk xFye sea mínimo.

Es importante mencionar que existen variadas formas de definir el error, mas aún cuando éste se aplica a un conjunto de puntos y no solo a uno, dicho error podrá ser considerado como:

- Máximo Error: keFE max)(max

Page 3: Minimos cuadrados en matlab

3

- Error Medio: m

e

FE

m

k

k

m

1)(

- Error Cuadrático Medio:

m

e

FE

m

k

k

cm

1

2

)(

Siendo esta última manera de calcular el error la más común y la utilizada por el método de

mínimos cuadrados.

Luego dado el conjunto de puntos ),(, ... ),,( 11 mm yxyx se busca que el error

m

i

ii yxF1

2)(

Sea lo menor posible, teniendo en cuenta que se debe encontrar el vector c que mejor aproxime a

A·c=y

mnmnmm

n

n

y

y

y

c

c

c

xfxfxf

xfxfxf

xfxfxf

2

1

2

1

21

22221

11211

·

)()()(

)()()(

)()()(

Si atendemos al sistema anterior, entonces se ve claramente que al multiplicar A y c, se pueden

generar infinitas combinaciones para los valores de c, por lo demás, el vector y no tiene por qué se

una de ellas(si lo hiciera, el sistema Ac=b tendría solución). Lo que se necesita entonces es una

combinación lineal de las columnas de A lo más cercana al vector y. Para esto se define el residuo como:

cAyr ·

De manera que el mínimo error cuadrático supone minimizar el residuo, quizá pueda hacerse

pequeño con una adecuada elección de c, pero en general será distinto de cero, luego

Ar matriz la den combinacio algúna a

Entonces se tiene que un vector c minimiza la norma del residuo r si y solo sí r es ortogonal a la

imagen de A, así 0· rAt donde

tA es la matriz transpuesta de A.

En consecuencia c debe satisfacer yAAcAAcyA ttt ··0)(

Finalmente el vector de coeficientes que minimiza el error y en consecuencia proporciona una

mejor aproximación está dado por:

yAAAc tt ··1

A esta ecuación se le llama ecuación normal de Gauss, y es válida para cualquier conjunto de

funciones base.

Page 4: Minimos cuadrados en matlab

4

Ejemplo método mínimos cuadrados caso lineal:

Se tiene un set de datos los que se desean ajustar en el sentido de Mínimos cuadrados según una

aproximación polinomial de tercer orden. Tabla 1.1: “Set de datos aproximación polinomial”

Se deben encontrar los coeficientes a, b, c y d para determinar el polinomio p(x)

dxcxbxaxp ···)( 23

Evaluando los valores de x presentes en la Tabla 1.1 según el polinomio anterior se puede obtener un sistema de ecuaciones de la forma A·X=Y , donde en la matriz A cada fila representa a un dato

evaluado en las funciones normalizadas fj(x) con j=1,2,3,4 correspondientes al polinomio, el

vector c contiene los coeficientes (a determinar) que minimizan el error y el vector y los datos de salida de nuestra función a aproximar.

y

d

c

b

a

0000.0

6094.3

5000.4

9531.2

0000.0

9531.2

5000.4

6094.3

0000.0

4844.5

5000.10

·

000.1000.5000.25000.125

000.1500.4250.20125.91

000.1000.4000.16000.64

000.1500.3250.12875.42

000.1000.3000.9000.27

000.1500.2250.6625.15

000.1000.2000.4000.8

000.1500.1250.2375.3

000.1000.1000.1000.1

000.1500.0250.0125.0

000.1000.0000.0000.0

c

A

Notar que el sistema posee más ecuaciones que incógnitas (m>n), es decir, es un sistema sobre-determinado. El sistema se puede resolver de forma única con las primeras tres ecuaciones, pero

con este resultado no se satisface al resto.

Entonces se tiene que para que el error cuadrático medio sea el mínimo

X Y

0.0 10.500

0.5 5.4844

1.0 0.0000

1.5 -3.6094 2.0 -4.5000

2.5 -2.9531

3.0 0.000 3.5 2.9531

4.0 4.5000

4.5 3.6094

5.0 0.0000

Page 5: Minimos cuadrados en matlab

5

11

)···(

)(

11

1

223

1

2

k

kkkk

m

k

k

cm

dxcxbxay

m

e

FE

Se debe escoger un vector c tal que:

ycA · yAcAA tt ··· yAAAc tt ··1

Obsérvese que la matriz tt AAA1

·

es la inversa izquierda de A, también llamada pseudoinversa

de A y para que ella exista las ecuaciones que definen a A deben ser linealmente independientes.

Así resulta un

0000.12

7917.20

5000.8

9583.0

c

Finalmente se tiene el polinomio de tercer grado que aproxima el conjunto de datos con el menor error cuadrático medio como

127917.20·5.8·9583.0)( 23 xxxxp

Figura 1.1:”Aproximación lineal mediante método mínimos cuadrados”

%% Minimos cuadrados caso lineal

t=(0:0.01:5);

X= [0.0; 0.5 ;1.0; 1.5 ;2.0; 2.5 ;3.0; 3.5 ;4.0 ;4.5 ;5.0];

A=[X.^3,X.^2,X.^1,X.^0];

Y=[10.500; 5.4844; 0.0000; -3.6094; -4.5000; -2.9531; 0.000; 2.9531;...

4.5000; 3.6094; 0.0000];

b=(inv(A.'*A))*(A.')*Y;

res1=Y-A*b;

C=b(4)+b(3)*t.^1+b(2)*t.^2+b(1)*t.^3;

figure(1)

plot(t,C,'linewidth',2); grid on; xlabel('x'); ylabel('y');

title('Aproximación método mínimos cuadrados');

hold; plot(X,Y,'or','linewidth',2);

legend('Aprox. mínimos cuadrados','Mediciones');

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-6

-4

-2

0

2

4

6

8

10

12

14Aproximación método mínimos cuadrados

x

y

Aprox. mínimos cuadrados

Mediciones

Page 6: Minimos cuadrados en matlab

6

Ejemplo método mínimos cuadrados caso no lineal reducible a lineal:

Considerando la siguiente tabla de valores

Tabla 1.2: “Set de datos aproximación no lineal”

Se quiere ajustar a la función no lineal del tipo bxeaxf ·)(

Debido a que el método de mínimos cuadrados no las herramientas necesarias para calcular una buena aproximación para funciones no lineales, en particular para este caso la no linealidad de la

función exponencial, se debe transformar el problema a uno lineal.

Tomando logaritmo natural a ambos lados el problema se transforma en:

) ln( / ·)( bxeaxf

xbaxf ·)ln())(ln(

Haciendo el cambio de variable z=ln(f(x)) =ln(y) se tiene un nuevo conjunto de datos.

Tabla 1.3: “Nuevo Set de datos aproximación no línea”

Estos datos se puede establecen seis ecuaciones y dos incógnitas. Entonces se tiene el siguiente

sistema sobre-determinado.

7860.2

3986.2

1577.2

7951.1

4854.1

1454.1

)ln(·

000.21

600.11

200.11

800.01

400.01

000.01

z

x

A

b

a

Resolviendo el problema de mínimos cuadrados

X Y

0.0 3.1437 0.4 4.4169

0.8 6.0203

1.2 8.6512 1.6 11.0078

2.0 16.2161

X Z=ln(Y)

0.0 1.1454 0.4 1.4854

0.8 1.7951

1.2 2.1577 1.6 2.3986

2.0 2.7860

Page 7: Minimos cuadrados en matlab

7

zxA · yAxAA tt ··· yAAAx tt ··1

Se llega a que

1539.1)ln( a

Por lo tanto, volviendo al plano original se tiene para los parámetros a y b

1705.31539.1 ea y b=0.8075

Y por lo tanto reemplazando en la función original los valores obtenidos se tiene

xbx eeaxf 8075.01705.3·)(

Figura 1.2:”Aproximación lineal mediante método mínimos cuadrados”

%% Minimos cuadrados caso no lineal reducible a lineal

Y=[3.1437,4.4169,6.0203,8.6512,11.0078,16.2161];

X=[0.0;0.4;0.8;1.2;1.6;2.0];

A1=[1;1;1;1;1;1];

A=[A1,X];

Z=[1.1454;1.4854;1.7951;2.1577;2.3986;2.7860];

x=(inv(A.'*A))*(A.')*Z;

res2=Z-A*x

a=exp(x(1));

b=(x(2));

figure(2)

plot(X,a*exp(b*X),X,Y,'ok','linewidth',2); grid on; xlabel('x'); ylabel('y');

title('Aproximación método mínimos cuadrados no lineal');

legend('Aprox. mínimos cuadrados 3.17·e^0^.^8^0^7','Mediciones');

figure(3)

plot(X,1.1539+b*X,'r',X,Z,'ok','linewidth',2); grid on;

title('Aproximación método mínimos cuadrados lineal');

legend('Aprox. mínimos cuadrados','Mediciones');

En definitiva, mediante el cambio de variable z=ln(f(x)) =ln(y) transformamos el problema no lineal

a lineal, donde es posible ver gráficamente que los nuevos datos se pueden aproximar de buena

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 21

1.2

1.4

1.6

1.8

2

2.2

2.4

2.6

2.8Aproximación método mínimos cuadrados lineal

Aprox. mínimos cuadrados

Mediciones

Page 8: Minimos cuadrados en matlab

8

manera con una recta, para encontrar los coeficientes de esta se utilizó mínimos cuadrados según el

procedimiento anterior, obteniendo el resultado que se muestra en la figura1.2 . Luego para tener la

solución real a nuestro problema se aplica la función exponencial obteniéndose los resultados

expuestos en la figura1.3.

Figura 1.3:”Grafica resultado Aproximación no lineal”

Si bien el método de los mínimos cuadrados solo sirve para aproximar modelos lineales, existen

otros casos de modelos no lineales reducibles a lineales, como por ejemplo:

2

·)( bxaxecxf : Aplicando logaritmo natural

xb

axf

)(

: Tomando los recíproco

bxea

kxf

·1)( 0

: Con k0 conocido, se toman los recíprocos, se resta 1 para finalmente

se aplica logaritmo natural.

Se puede llegar a una buena aproximación mediante este método.

Una observación importante es que este método proporciona una buena estimación cuando se tienen

pocos datos (alrededor de diez), o en su defecto, un número mayor de mediciones pero bajo las

mismas circunstancias experimentales, ya que si se presentan mediciones atípicas y estas son

asimétricas los parámetros estimados pueden estar sesgados por estos valores erróneos, el método

de mínimos cuadrados presenta una notoria falta de robustez frente a este problema y en ocasiones

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 22

4

6

8

10

12

14

16

18

x

y

Aproximación método mínimos cuadrados no lineal

Aprox. mínimos cuadrados 3.17·e0.807

Mediciones

Page 9: Minimos cuadrados en matlab

9

las aproximaciones pueden ser ineficientes en extremo debido a la presencia de mediciones atípicas

asimétricas.

Por otra parte, es reproducible, cada experimentador proporciona igual aproximación para datos

iguales, no obstante en el sentido de adquirir la data es irreproducible.

2.- Regresión Lineal y Cuadrática:

El método de regresión es ampliamente utilizado para pronosticar funciones. Aunque los casos que

veremos en el presente informe, se limita a un número de casos específicos. En otras palabras los

puntos dados tienen que tener una proyección en el tiempo, ya sea lineal o cuadrática. Como

veremos a continuación el método se basa en reducir el error total en la zona de la interpolación.

Regresión Lineal

La regresión lineal se utiliza cuando los puntos a tratar siguen una trayectoria de carácter lineal.

Entonces se buscara la recta que mejor ajuste a todos los puntos dados. De manera de reducir el

error deseado.

Como veremos a continuación la deducción del método usado es bastante sencilla.

Conocemos n datos (𝑥1 ,𝑦1), (𝑥2,𝑦2),… (𝑥𝑛 ,𝑦𝑛), y deseamos encontrar la recta que mejor se ajuste

a estos n puntos. Como ya sabemos la forma que tendrá la recta será

𝑦 = 𝑚𝑥 + 𝛽 ; De acá es fácil ver que debemos encontrar 𝑚,𝛽.

Tenemos en la figura una serie de puntos distribuidos en el plano y una recta cualquiera que

pretende realizar una buena interpolación a todos los puntos dados.

Figura2.1: “Puntos en el plano y una recta que pretende aproximar a la función generadora de

estos puntos”

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

3

4

5

6puntos dados

x

y

Page 10: Minimos cuadrados en matlab

10

Notar que esta es nuestra curva aproximada y debemos minimizar el error. El error es la diferencia

entre la recta propuesta y los puntos dados. A cada error lo denotaremos.

𝛿𝑖 = 𝑦𝑖 − (𝑚𝑥𝑖 + 𝛽)

Este corresponde al error del punto i. Es fácil notar que el Error total será la suma de todos los

errores. Además cabe destacar que el error puede ser positivo o negativo, por lo que al intentar

buscar un mínimo nos enfrentaremos a un problema, por ejemplo; un 𝛿𝑖 = −10 es menor error que

𝛿𝑖 = 2.5. Claramente la afirmación no es del todo correcta, pues si bien en signo 𝛿𝑖 = −10 es

menor, en magnitud resulta ser un peor error. Para resolver este problema buscamos encontrar el

mínimo error al cuadrado así.

𝐸𝑡𝑜𝑡𝑎𝑙(𝑚,𝛽) = 𝛿𝑖2

𝑛

0

= {𝑦𝑖 − (𝑚𝑥𝑖 + 𝛽)}

𝑛

0

2

Por lo que ahora nos centramos en minimizar la amplitud del error, el cual se producirá cuando

𝑦𝑖 = 𝑚𝑥𝑖 + 𝛽 . Entonces dada que esta función es la que debemos minimizar en términos de 𝑚 𝑦 𝛽.

Simplemente derivamos la función y la igualamos a cero.

𝜕𝐸𝑡𝑜𝑡𝑎𝑙

𝜕𝑚=

𝜕

𝜕𝑚 {𝑦𝑖 − 𝑚𝑥𝑖 + 𝛽 }2

𝑛

0

= −2 {𝑦𝑖 − (𝑚𝑥𝑖 + 𝛽)}

𝑛

0

𝑥𝑖

𝜕𝐸𝑡𝑜𝑡𝑎𝑙

𝜕𝛽=

𝜕

𝜕𝛽 {𝑦𝑖 − 𝑚𝑥𝑖 + 𝛽 }2

𝑛

0

= −2 {𝑦𝑖 − (𝑚𝑥𝑖 + 𝛽)}

𝑛

0

Y despejando nuestras variables de interés tenemos que:

0 = 𝑦𝑖𝑥𝑖 −𝑚𝑥𝑖2 − 𝛽𝑥𝑖

𝑛

0

𝛽 𝑥𝑖

𝑛

0

+ 𝑚 𝑥𝑖2

𝑛

0

= 𝑦𝑖𝑥𝑖

𝑛

0

0 = 𝑦𝑖 −𝑚𝑥𝑖 − 𝛽

𝑛

0

𝑛𝛽 + 𝑚 𝑥𝑖 =

𝑛

0

𝑦𝑖

𝑛

0

Esto da como resultado un sistema de ecuaciones lineales de 2x2, donde la solución se puede

realizar por simple sustitución como sigue.

𝑚 = 𝑛 𝑦𝑖𝑥𝑖

𝑛0 − 𝑦𝑖

𝑛0 𝑥𝑖

𝑛0

𝑛 𝑥𝑖2𝑛0 − 𝑥𝑖

𝑛0 2

Page 11: Minimos cuadrados en matlab

11

𝛽 =1

𝑛 𝑦𝑖

𝑛

0

−𝑚 𝑥𝑖

𝑛

0

Una vez obtenida la forma de encontrar la mejor recta, veamos un ejemplo para ilustrar su

funcionamiento

Ejemplo Regresión Lineal

Los puntos dados están dados en la siguiente tabla:

Tabla 2.1: “Set de datos regresión lineal”

X Y

0 0.8256

0.5000 1.2900

1.0000 1.3185

1.5000 2.0341

2.0000 2.0900

2.5000 2.6117

3.0000 3.1363

3.5000 4.1787

4.0000 4.4952

4.5000 4.6897

5.0000 5.4950

Código solución

x=0:0.5:5;

y=[ 0.8256 1.2900 1.3185 2.0341 2.0900 2.6117...

3.1363 4.1787 4.4952 4.6897 5.4950];

% Algoritmo de resolución:

m=(length(x)*(x*y')-sum(x)*sum(y))/(length(x)*(x*x')-(sum(x))^2);

beta=(1/length(x))*(sum(y)-m*sum(x));

figure(1) % Ploteo de puntos y solucion

plot(x,y,'ob',x,beta+m*x,'-r');grid on;

title('puntos dados')

xlabel('x')

ylabel('y')

Page 12: Minimos cuadrados en matlab

12

Figura 2.2: “Set de datos y Aproximación mediante regresión lineal”

La recta encontrada: 𝑦 = 0.942𝑥 + 0.569

Se puede concluir que el proceso de regresión fue exitoso, la recta encontrada claramente ajusta a

los puntos dados.

Regresión Cuadrática:

La idea es igual que en la regresión lineal, tenemos un conjunto de datos

(𝑥1,𝑦1), (𝑥2,𝑦2),… (𝑥𝑛 , 𝑦𝑛) y sabemos que esos datos corresponden a una función desconocida. La

idea es ajustar aquellos puntos a la parábola que mejor los aproxime. De esta forma la función que

obtendrá este método es:

𝑦 = 𝑎𝑥2 + 𝑏𝑥 + 𝑐

Como vemos ahora interesa encontrar tres parámetros a, b y c.

Análogo al caso anterior el error total es:

𝐸𝑡𝑜𝑡𝑎𝑙(𝑎, 𝑏, 𝑐) = 𝛿𝑖2

𝑛

0

= {𝑦𝑖 − 𝑎𝑥𝑖2 − 𝑏𝑥𝑖 − 𝑐}2

𝑛

0

Entonces derivando cada la función del error por cada parámetro de interés y luego igualando a cero

tenemos que.

𝜕𝐸𝑡𝑜𝑡𝑎𝑙

𝜕𝑐=

𝜕

𝜕𝑚 {𝑦𝑖 − 𝑎𝑥𝑖

2 − 𝑏𝑥𝑖 − 𝑐}2

𝑛

0

= −2 {𝑦𝑖 − 𝑎𝑥𝑖2 − 𝑏𝑥𝑖 − 𝑐}

𝑛

0

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50.5

1

1.5

2

2.5

3

3.5

4

4.5

5

5.5Puntos dados y Solución con Regresión Lineal

x

y

Page 13: Minimos cuadrados en matlab

13

𝜕𝐸𝑡𝑜𝑡𝑎𝑙

𝜕𝑏=

𝜕

𝜕𝛽 {𝑦𝑖 − 𝑎𝑥𝑖

2 − 𝑏𝑥𝑖 − 𝑐}2

𝑛

0

= −2 {𝑦𝑖 − 𝑎𝑥𝑖2 − 𝑏𝑥𝑖 − 𝑐}

𝑛

0

𝑥𝑖

𝜕𝐸𝑡𝑜𝑡𝑎𝑙

𝜕𝑎=

𝜕

𝜕𝛽 {𝑦𝑖 − 𝑎𝑥𝑖

2 − 𝑏𝑥𝑖 − 𝑐}2

𝑛

0

= −2 {𝑦𝑖 − 𝑎𝑥𝑖2 − 𝑏𝑥𝑖 − 𝑐}

𝑛

0

𝑥𝑖2

𝑎 𝑥𝑖2

𝑛

0

+ 𝑏 𝑥𝑖

𝑛

0

+ 𝑛𝑐 = 𝑦𝑖

𝑛

0

𝑎 𝑥𝑖3

𝑛

0

+ 𝑏 𝑥𝑖2

𝑛

0

+ 𝑐 𝑥𝑖

𝑛

0

= 𝑥𝑖𝑦𝑖

𝑛

0

𝑎 𝑥𝑖4

𝑛

0

+ 𝑏 𝑥𝑖3 + 𝑐 𝑥𝑖

2

𝑛

0

𝑛

0

= 𝑦𝑖𝑥𝑖2

𝑛

0

Notar que en esta ocasión tenemos un sistema de 3x3, cabe destacar que se pueden realizar métodos

básicos de resolución de ecuaciones, pero por simplicidad de resolverá de la forma matricial.

𝑥𝑖

2

𝑛

0

𝑥𝑖

𝑛

0

𝑛

𝑥𝑖3

𝑛

0

𝑥𝑖2

𝑛

0

𝑥𝑖

𝑛

0

𝑥𝑖4

𝑛

0

𝑥𝑖3

𝑛

0

𝑥𝑖2

𝑛

0

𝑎𝑏𝑐 =

𝑦𝑖

𝑛

0

𝑥𝑖𝑦𝑖

𝑛

0

𝑦𝑖𝑥𝑖2

𝑛

0

Notar que estamos frente a un sistema cuadrado de 3x3, donde la solución de dicho sistema es el

vector de coeficientes 𝑎𝑏𝑐 .

Page 14: Minimos cuadrados en matlab

14

Ejemplo Regresión Cuadrática

Dados los puntos

Tabla 2.2: “Set de datos regresión lineal cuadrática”

X Y

0 0.9629

0.5000 1.9739

1.0000 1.8361

1.5000 4.8110

2.0000 5.2438

2.5000 8.1302

3.0000 11.2159

3.5000 14.2359

4.0000 19.1116

4.5000 21.9506

5.0000 26.0898

Código Solución

x=0:0.5:5;

y =[ 0.9629 1.9739 1.8361 4.8110 5.2438 8.1302...

11.2159 14.2359 19.1116 21.9506 26.0898];

A=[(x*x') sum(x) length(x);...

sum(x.^3) (x*x') sum(x);...

sum(x.^4) sum(x.^3) (x*x')];

b=[sum(y);x*y';y*(x.^2)'];

SOL=inv(A)*b;

figure(3)

plot(x,y,'ob',x,SOL(1)*x.^2+SOL(2)*x+SOL(3),'r');grid on;

title('Puntos dados y Solución con Regresión Cuadrática')

xlabel('x')

ylabel('y')

Page 15: Minimos cuadrados en matlab

15

Figura2.2: “Set de datos y Aproximación mediante regresión lineal cuadrática”

Del gráfico se concluye que la parábola encontrada si ajusta a los puntos dados. Entonces la

solución mediante Regresión Cuadrática es:

𝑦 = 0.8609𝑥2 + 0.8261𝑥 + 0.9073

Regresión no Lineal

A parte de los métodos de regresión mostrados, específicamente el lineal, se pueden resolver casos

no lineales, que son reductibles a lineales. Ejemplo de esto son la función exponencial, potencial y

logaritmo. Que son fácilmente reductibles a lineales.

Ajustar un modelo potencial de la forma 𝑌 = 𝐴𝑥𝑏y uno exponencial de la forma 𝑌 = 𝐴𝐵𝑥 , se

reduce a una función lineal con sólo tomar logaritmo.

Respecto al modelo potencial: Si tomamos los logaritmos obtenemos:

log 𝑌 = log 𝐴𝑥𝑏 = log 𝐴 + 𝑏 log(𝑥)

Notemos que la ecuación obtenida corresponde a una ecuación de la recta donde: 𝑦 = 𝑚𝑥 + 𝛽 y en

nuestra ecuación linealizada log 𝑌 = 𝑦, log 𝐴 = 𝛽, 𝑏 log 𝑥 = 𝑚𝑥 .Entonces podemos trabajar

el modelo como uno lineal y luego volver a nuestras variables de interés.

Respecto al modelo exponencial: Esta relación entre las variables X e Y se da principalmente en

experimentos del tipo biológico. Entonces la nube de puntos dados vienen dados por la forma de

curva y = exp(a + bx). Mediante una transformación lineal, en particular el logaritmo natural,

transformamos esta regresión en una lineal. En efecto queda.

ln(y) = a + bx

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

5

10

15

20

25

30Puntos dados y Solución con Regresión Cuadrática

x

y

Page 16: Minimos cuadrados en matlab

16

0 2 4 6 8 10 12 14 16 18 200.5

1

1.5

2

2.5

3

3.5

4

Entonces de acá se obtiene 𝑌 = ln(y), lo que la convierte en una regresión lineal

Respecto al modelo logarítmico: Si nuestro conjunto de puntos sigue un modelo logarítmico

tenemos que sería de la forma 𝑌 = a + blog(x), la cual también es una recta, pero ahora esta

referida a log(x) y a Y. Es importante notar que el único cambio en este modelo se realiza en el eje

de las abscisas pasando de escala lineal a logarítmica, y luego volviendo a lineal.

Ejemplo de Regresión reductible a lineal:

Debido a que la regresión lineal ya se abordo y que todas estas linealizaciones siguen una misma

lógica, se opto por mostrar sólo un ejemplo de regresión reductible a lineal. Modelo Logarítmico.

Tabla 2.3: “Set de datos regresión no lineal”

X Y

1 0.5816

2 1.2202

3 1.7831

4 1.9247

5 1.7664

6 2.0636

7 2.7015

8 2.5249

9 2.5641

10 2.7046

11 3.1081

12 2.5082

13 2.9918

14 2.8380

15 3.1434

16 3.1693

17 3.2345

18 3.6499

19 3.1624

20 3.9490

Figura2.3: “Set de datos regresión no lineal”

Page 17: Minimos cuadrados en matlab

17

Linealizando el problema

Figura2.2: “Set de datos linealizados y Aproximación mediante regresión lineal”

Notemos que si pasamos este problema a lineal, cambiando el eje de las abscisas a escala

logarítmica, podemos resolver el problema como se muestra en la figura.

Figura2.2: “Set de datos original y Aproximación mediante regresión no lineal”

Volviendo a la escala inicial tenemos la solución al problema dado. Donde la curva encontrada

satisface las condiciones de mínimo.

𝑌 = 0.5246 + 0.9708log(x)

0 2 4 6 8 10 12 14 16 18 200.5

1

1.5

2

2.5

3

3.5

4

0 0.5 1 1.5 2 2.5 30.5

1

1.5

2

2.5

3

3.5

4

Page 18: Minimos cuadrados en matlab

18

Código solución:

X=1:1:20;

y=[ 0.5816 1.2202 1.7831 1.9247 1.7664 2.0636 2.7015 2.5249

2.5641 2.7046 3.1081 2.5082 2.9918...

2.8380 3.1434 3.1693 3.2345 3.6499 3.1624 3.9490];

figure(6)

plot(X,y,'o');grid on;

x=log(X);

m=(length(x)*(x*y')-sum(x)*sum(y))/(length(x)*(x*x')-(sum(x))^2);

beta=(1/length(x))*(sum(y)-m*sum(x));

figure(4)

plot(x,y,'o',x,beta+m*x,'-r');grid on;

% Volviendo a las variables originales

figure(5)

plot(X,y,'o',X,beta+m*x);grid on;

3.- La Interpolación Polinomial

Es un método de ajuste de curvas que pretende encontrar un ajuste exacto, en otras palabras que la

curva encontrada pase por todos los puntos dados. Entre las más utilizadas tenemos La

interpolación polinomial de Lagrange y Splines Cubicas. En este informe presentaremos los

polinomios de Lagrange.

Interpolación Polinomial: Nuestro objetivo es obtener una función P, cuya curva aproxime a una

función desconocida F de la que solo tenemos un limitado número de puntos. Por lo tanto estos

puntos son utilizados como requisito para la función P. En otras palabras le exigimos a P que por lo

menos pase por los puntos (𝑥0,𝑦0), (𝑥1,𝑦1),… (𝑥𝑛 ,𝑦𝑛).

Entonces tenemos los n+1 puntos dados, y además les pedimos que puedan representar a una

función es decir 𝑥𝑖 ≠ 𝑥𝑗 si 𝑖 ≠ 𝑗. Siguiendo con P, éste es un polinomio 𝑝 𝑥 = 𝑎0 + 𝑎1𝑥 +

⋯𝑎𝑚𝑥𝑚 , notemos que tenemos m+1 parámetros independientes, además resulta lógico pensar que

m=n.

Notemos que agregando las condiciones dadas (los puntos de la desconocida función F), obtenemos

un sistema de ecuaciones escrito matricialmente por:

Problema a solucionar:

1 𝑥1 𝑥12 … 𝑥1

𝑛−1

⋮ ⋱⋱

⋱ ⋮1 𝑥𝑛 𝑥𝑛

2 … 𝑥𝑛𝑛−1

𝑎1

𝑎𝑛+1

=

𝑦1

𝑦𝑛

Encontrar la inversa de esta ecuación matricial corresponde a encontrar el polinomio, pero encontrar

la inversa de esta ecuación podría ser una tarea titánica.

Page 19: Minimos cuadrados en matlab

19

Solución de Lagrange:

Se puede obtener la solución al sistema planteado sin la necesidad de resolverlo, esto se logra a

través de los polinomios de lagrange. Dado el set de puntos como el mostrado anteriormente, existe

un polinomio de grano menor o igual a n tal que interpola los puntos dados. El polinomio que

realiza esto es p(x), el cual es único dentro del conjunto de polinomios menor o igual a n.

El polinomio se construye de la siguiente manera:

Primeramente se determina el polinomio ℓ𝑖 , de grado menor o igual a n que interpola a los puntos

(𝑥𝑗 ,𝑦𝑗 ) tal que 𝑦𝑖 = 1 e 𝑦𝑗 = 0 para todo 𝑗 ≠ 𝑖.

ℓ𝑖 𝑥 = 𝑐 𝑥 − 𝑥0 𝑥 − 𝑥1 … 𝑥 − 𝑥𝑖−1 𝑥 − 𝑥𝑖+1 … (𝑥 − 𝑥𝑛 )

Tal que ℓ𝑖 𝑥𝑗 = 0 para todo 𝑗 ≠ 𝑖.

Pues de la ecuación es fácil notar que si 𝑥 = 𝑥0=>ℓ𝑖 𝑥0 = 0, si 𝑥 = 𝑥𝑗=>ℓ𝑖 𝑥𝑗 = 0.

Ahora si definimos a la constante c como:

𝑐 = [ 𝑥𝑖 − 𝑥0 𝑥𝑖 − 𝑥1 … (𝑥𝑖 − 𝑥𝑖−1)(𝑥𝑖 − 𝑥𝑖+1)… (𝑥𝑖 − 𝑥𝑛)]−1

Por lo tanto tenemos que:

ℓ𝑖(𝑥) ≔ 𝑥 − 𝑥𝑗

𝑥𝑖 − 𝑥𝑗

𝑛

𝑗=0𝑗≠𝑖

, 𝑖 = 0,…𝑛.

Notemos que estos polinomios satisfacen la relación:

ℓ𝑖 𝑥𝑗 = 1 𝑠𝑖 𝑖 = 𝑗0 𝑠𝑖 𝑖 ≠ 𝑗

𝑖, 𝑗 = 0,…𝑛.

El conjunto de ℓ0,ℓ1 … . ℓ𝑛 es una base del espacio de polinomios de grado menor o igual a n.

Dicho esto y con todas las demás definiciones es posible ver:

𝑝 𝑥 = 𝑦0ℓ0 𝑥 + ⋯𝑦𝑛ℓ𝑛 𝑥

Este polinomio de grado n (o menor) satisface la condición de 𝑝 𝑥𝑖 = 𝑦𝑖 , para todo i.

Resumiendo:

𝑝 𝑥 = 𝑦𝑖

𝑛

𝑖=0

ℓ𝑖(𝑥)

Donde ℓ𝑖(𝑥), es la descrita anteriormente.

Page 20: Minimos cuadrados en matlab

20

Ejemplo de Polinomios de Lagrange:

A pesar de que Matlab incorpora funciones de polinomios, por ejemplo polyfit y polyvar. A

continuación se muestra el algoritmo solución implementado por nosotros, para la resolución de

este problema. Además se comentará, por que las funciones polinomiales no son tan

frecuentemente usadas como las del tipo de regresión, mínimos cuadrados u otros ajustes.

Codigo Solución

%% Algorirmo de lagrange

x=-5:5;

y=1./(1+x.^2);

xx=-5:0.1:5;

const=zeros;

p=zeros;

for k=1:length(xx)

for h=1:length(x)

const(h)=li(h,x,xx(k));

end

p(k)=y*const';

end

figure(1)

plot(x,y,'o',xx,p);grid on;

Donde la función li es: li.m

function sol=li(i,x,var)

sol=1;

for j=1:11

if j==i

continue

end

sol=sol*((var-x(j))/(x(i)-x(j)));

end

Page 21: Minimos cuadrados en matlab

21

Figura3.1: “Aproximación de curva mediante polinomios de Lagrange”

Notar que este algoritmo cruza exactamente a todos los punto, por lo que el error resultante es cero.

Lamentablemente se producen variadas oscilaciones especialmente en los extremos de la

interpolación, evidentemente esto es un efecto no deseado. A este fenómeno se le conoce como “El

Fenómeno de Runge”, métodos como numéricos polinomicos como la spline cubica mejora esto, ya

que crea funciones cubicas por tramos, asegurando la suavidad entre cada tramo, pero

lamentablemente se sacrifica simplicidad, debido al fuerte trabajo de calculo que requiere la spline.

Conclusiones

En esta tarea se han presentado las ideas fundamentales para el ajuste de datos experimentales a

polinomios o formas no lineales que forman un sistema lineal de coeficientes. Los métodos tratados son en general métodos propiamente de aproximación gráfica, precisamente es por esta razón, por la

cual se debe tener un buen conocimiento sobre el conjunto de datos tratados ya que para tener los

resultados deseados, es decir una representación fiable de lo que realmente ocurre en un proceso los datos obtenidos deben cumplir con una serie de requerimientos, entre ellos los más importantes son

la ausencia de redundancia y obtención de datos anómalos, estos últimos pueden alterar

enormemente las aproximaciones efectuadas por cualquiera los métodos mencionados.

También tener en cuenta que no siempre una aproximación optima de los datos experimentales

determina una mejor aproximación o modelo para un proceso dado, es sabido que la adquisición de

datos posee una cierta incertidumbre y en consecuencia la data se ve alterada por errores de medición o presencia de ruido. Teniendo esto en cuenta la excesiva aproximación (interpolación) de

los datos en muchos casos podrían llevarnos a aproximaciones erróneas que por lo demás son

mucho más complejas de lo que realmente son los mismos procesos, un ejemplo de esto es la interpolación polinomial como la mostrada en la figura.3.1.

-5 -4 -3 -2 -1 0 1 2 3 4 5-0.5

0

0.5

1

1.5

2

puntos

aproximación polinomial

real