Aproximación de una función a un polinomio de grado n
Dada una función f(x) continua en [a,b], vamos a buscar un polinomio Pn(x) de grado n
tal que la integral
sea mínima. Para calcular el mínimo, se deriva respecto a a1, a2...an+1
Obtenemos el siguiente sistema de n ecuaciones con n incógnitas
o bien,
Llamando
Escribimos el sistema de n ecuaciones con n incógnitas de forma matricial
Despejamos el vector a de las incógnitas utilizando el operador división por la izquierda \
Aproximación de la función ex a un polinomio de segundo grado
Calculamos los coeficientes a1, a2 y a3 del polinomio P2(x)=a1x2+a2x+a3
El sistema de ecuaciones en forma matricial se escribe
Los elementos de la matriz sk vales
Para obtener los elementos del vector b, integramos por partes, o bien, con la ayuda de Math Symbolic
>> int('x^2*exp(x)',x,-1,1) ans =exp(1) - 5*exp(-1) >> int('x*exp(x)',x,-1,1) ans =2*exp(-1) >> int('exp(x)',x,-1,1) ans =exp(1) - exp(-1)
El sistema de ecuaciones es el siguinte
El siguiente script representa en el intervalo [-1,1], la función ex y el polinomio P2(x)=a1x2+a2x+a3
A=[2/5,0,2/3;0,2/3,0;2/3,0,2]; e=exp(1); b=[e-5/e;2/e;e-1/e]; a=A\b; p=@(x) polyval(a,x); hold on fplot(@exp,[-1,1]); fplot(p,[-1,1]) hold off legend('exponencial','polinomio','location','northwest') grid on xlabel('x') ylabel('y') title('Aproximando exp(x) a un polinomio')
Como vemos en la figura hay una diferencia apreciable entre la función y el polinomio de segundo grado P2(x)=a1x2+a2x+a3, cuyos coeficientes son
a = 0.5367 1.1036 0.9963
Aproximación de la función ex a un polinomio de tercer grado
Elaboramos un script que nos permita aproximar la función ex a un polinomio de grado n, Pn(x) en el intervalo [-1,1]. Sea por ejemplo, n=3
n=3; %grado del polinomio syms x; s=zeros(2*n+1,1); for k=1:2*n+1 if rem(2*n+2-k,2)==0 s(k)=0; else s(k)=2/(2*n+2-k); end end A=zeros(n+1,n+1); for k=1:n+1 A(k,:)=s(k:n+k); end b=zeros(n+1,1); for k=1:n+1 f=exp(x)*x^(n+1-k); b(k)=int(f,x,-1,1); end a=A\b; p=@(x) polyval(a,x); hold on fplot(@exp,[-1,1]); fplot(p,[-1,1]) hold off legend('exponencial','polinomio','location','northwest') grid on xlabel('x') ylabel('y') title('Aproximando exp(x) a un polinomio')
Como vemos en la figura ya no hay apenas diferencia entre la función y el polinomio de tercer grado P3(x)=a1x3+a2x2+a3x+a4, cuyos coeficientes son
a = 0.1761 0.5367 0.9980 0.9963
Aproximación de la función sin(πx) a un polinomio de segundo grado
Aproximamos la función sin(πx) a un polinomio de segundo grado en el intervalo [0,1]
Los valores de sk y de bk se calculan del siguiente modo
n=2; %grado del polinomio syms x; s=zeros(2*n+1,1); for k=1:2*n+1 s(k)=1/(2*n+2-k); end A=zeros(n+1,n+1); for k=1:n+1 A(k,:)=s(k:n+k); end b=zeros(n+1,1); for k=1:n+1 f=sin(pi*x)*x^(n+1-k); b(k)=int(f,x,0,1); end a=A\b; p=@(x) polyval(a,x); f=@(x) sin(pi*x); hold on fplot(f,[0,1]); fplot(p,[0,1]) hold off legend('sin(\pix)','polinomio','location','northwest') grid on xlabel('x') ylabel('y') title('Aproximando sin(\pix) a un polinomio')
Como vemos en la figura ya hay poca diferencia entre la función sin(πx) y el polinomio de segundo grado P2(x)=a1x2+a2x+a3, cuyos coeficientes son
a = -4.1225 4.1225 -0.0505