Professional Documents
Culture Documents
Tenemos una funcin y; dada por una expresin (por ejemplo y = sen(x) ) por una tabla de datos (x , y)
(Interpretada como dos vectores
{ } { } n i y y x x
i i
: ; ; 1
. Nos proponemos "acercarnos " con un
polinomio p = p(x) con el objeto de que la desviacin entre p e y sea mnima ( o sea d = y - p debe ser
"lo ms pequeo posible " ) donde y : funcin o vector a aproximar p : polinomio o vector aproximante.
Aproximacin de mnimos cuadrados de Gauss
Polinomios con la norma 2
m
m
i
m
i
m
i i i
a x a x a x a x p x z ....... ) ( ) ( + +
2
2
1
1 0
{ }
i i i
p p x p p ) (
definimos el error cuadrtico medio con la norma 2
) , , ( ) .......
,....... m m
m
i
m
i
m
i i
n
1 = i
i i
a a a a f a x a x a x a y ( ) p - y (
n
1 i=
p y d E
2 1 0
2 2
2
1
1 0
2
2 2
Una vez que se eligi el grado del polinomio, para una nube (x , y ) de puntos dados, la desviacin es slo
funcin de los coeficientes
i
a
. Debe ser
2
d E
mnimo, o sea:
E
a
=0
i
i = 0: m
m + 1 ecuaciones que permiten resolver el problema.
Caso particular para m = 1,
b x a p b x a p
i i
i
+ + .
2
) b x a y ( = E
i
i
n
1 = i
x
b) -
x
a - y ( = 0 =
a
E
i i
i
n
1 = i
1
i
x
i
y x b + a = x
n
1 = i
2
i
n
1 = i
i
n
1 = i
b) -
x
a - y ( = 0 =
b
E
i
i
n
1 = i
n b + x a. =
i
y
n
1 = i
i
n
1 = i
y
x y
b
a
n x
x x
n
i
i
n
i
i i
n
i
i
n
i
i
n
i
i
1
1
1
]
1
1
1
1
]
1
1
1
1
]
1
1
1
1
1 1
2
Ecuaciones normales
En general para un polinomio de grado m, llegamos a un sistema lineal de m+1 ecuaciones con m+1 incgnitas
(ecuaciones normales)
2
1
1
1
1
1
1
1
1
1
1
1
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
]
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
]
1
.
...
...
...
.
.
...
...
...
...
.
... ... ... ...
... ... ... ... ... ...
... ... .. ... ...
... ... ... ...
... ... ...
...
n
i
i
m
i
n
i
i
m
i
n
i
i
m
m
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
n
i
m
i
y
x y
x y
a
a
a
a
n x
x
x x
x x x
x x x x x
1
1
1
1
1
1
0
1
1
3 2
1
3 2
1
2 2
1
3 2
1
2 2
1
1 2
1 1
3
1
2
1
1 2
1
2
En MatLab esto lo resuelve el comando polyfit , el cual permite calcular el polinomio de ajuste de la nube de
datos, dados en forma de vectores.
p=polyfit( x, y, m); ( donde m es el grado del polinomio )
z =polyval ( p, x); ( evaluamos el polinomio p en los puntos x
i
dados )
Error = norm( z-y); ( calculamos el Error cometido al aproximar )
xx = min(x) : .1: max(x) ; (representa la variable continua)
zz=polyval ( p, xx); ( evaluamos el polinomio p en la variable continua xx)
plot( x, y, 'o', xx, zz ) ( graficamos la nube de puntos y la curva de ajuste)
INTERPOLACION
A medida que m aumenta disminuye el error, cuando m = n-1, el error es cero y el ajuste pasa a ser
interpolacin
p=polyfit( x , y, length(n-1) )
3
Verifico con y = polyval ( p , x ) la igualdad entre z e y
Ejemplo1:
Interpolar linealmente entre los puntos (1,4) y (2,1) para x = 1.4
Solucin: x =[1 2]; y=[4 1]; p = polyfit( x, y, 1); yi = polyval ( p, 1.4)
yi=3.4
Ejemplo 2: Interpolar linealmente x = 0:.1:pi; y = sin(x) para xi = 0.57
Solucin
>> x=0:.1: pi; y=sin(x);
>>xi = 0.57; ii = length( find( x<xi) ); % indice del x anterior a xi
xx =[x(ii) x(ii+1)]; yy =[y(ii) y(ii+1)]; p = polyfit(xx, yy, 1); yi = polyval(p,xi)
APROXIMACION CON UNA FUNCION CUALQUIERA
Tenemos una funcin
) (x y y
; dada por una expresin ( por ejemplo
) ( x sen y
) por una
tabla de datos
) , ( y x
(Interpretada como dos vectores
{ } { } n i y y x x
i i
: ; ; 1
)
Nos proponemos "acercarnos" con una funcin
) ( x z z
con el objeto de que la desviacin entre z e y
sea mnima (o sea d = z - y debe ser "lo ms pequeo posible " )
y : funcin o vector a aproximar
z : funcin o vector aproximante, elegido segn las caractersticas de los datos. Esta funcin tiene parmetros
i
C
que permiten adaptarlas a los datos lo mejor posible, es decir:
) , .......... , (
m
p p
C C C f z y d
2 1
Debe ser mnimo.
Dada una nube de puntos
) , ( y x
los pasos para aproximar son
1. Elegimos una funcin z = f ( x ) con " m " parmetros
m
C C C , .......... ,
2 1
, que aproxima a y
(x)
2. Elegimos la norma " p " que define el error de aproximacin
) ..... ,
2
,
1
( ) , (
m
C C C f p z y norm Desvio
p
z - y
Construimos una funcin desvo o error
) , ( p z y norm
donde se define la funcin z de aproximacin (ajuste) y la norma elegida. (ver funmin
)
4
3. Aplicamos un algoritmo para minimizar la norma con respecto a los parmetros
i
C
estos
algoritmos (fminsearch) iterativos precisan de un valor de partida.
4. Hallados los
i
C
se representa grficamente los datos y su ajuste.
Repaso de Norma
Recordemos la funcin norma(v), que "mide" el tamao de un vector v = { v
i
}
v = )
v
(
p
p
p
i
n
1 = i
/ 1
2
norm(v, 2 ) norm(v )
p = 1
|
v
| v
i
n : 1 i=
1
norm ( v , 1 )
p = |
v
| mximo v
i
n i : 1
norm( v , inf )
Algoritmo Simplex de Nelder - Mead
Este algoritmo sirve para minimizar una funcin f de m variables, viene implementado en MatLab con el
comando fminsearch.
Funciones mas usuales
a) polinomios: Onduladas, sin asntotas. Interceptada por una recta lo cortan en un nmero de puntos
igual a lo sumo al grado del polinomio.
Con norma 2 se usa c = polyfit ( x, y, m) que ajusta con un polinomio de grado m con norma 2.
Con otra norma (uno o infinito) se usa polyfit ( x, y, m) para generar los valores iniciales se puede usar
b) Racionales
5
'
+
+
c
a
y horizontal asntota Con
c
d
x vertical asntota Con
d x c
b x a
= y
c) Exponenciales : Ejemplo 1 :
3 1
2
C + e C = y
x C
3
1
2
3 1
0
3
3
1
C
C
y
C
x para C C x y C x y
x x
+ +
) ( ) (
lim lim
d) Circulares
4 3 2 1
) ( C C x C sen C z + +
Con (x
o
, y
o
) origen trasladado, de amplitud A y periodo T
Donde
1
C
= A
4
C
= y
o
T
C
2
2
o
x C C
2 3
Las variables usadas en un archivo .m son de alcance local , para introducir datos desde fuera del archivo debo
declararlos a x y como variables globales
Ejercicios: Dado x = 0: 8, y = [60 51 42 36 30 26 24 22 21] ajustar con una z = f ( x)
Solucin:
>> global x y %debe declararse antes de darle valor a las variables.
>> x = 0: 8; y = [60 51 42 36 30 26 24 22 21];
>> plot (x , y, o ) % del dibujo elegimos
c
+
c
e
c
= z
3
x
1
2