• No se han encontrado resultados

E.T.S. Minas: Métodos Matemáticos Tema 2: Aproximación e interpolación Practica 1

N/A
N/A
Protected

Academic year: 2022

Share "E.T.S. Minas: Métodos Matemáticos Tema 2: Aproximación e interpolación Practica 1"

Copied!
10
0
0

Texto completo

(1)

E.T.S. Minas: Métodos Matemáticos Tema 2: Aproximación e interpolación Practica 1

Prof: Francisco Palacios EPSEM-UPC

Septiembre 2008, versión 1.4

• Polinomio de Taylor

• Polinomio interpolador

• Forma de Lagrange

• Forma de Newton

• Polinomio de Hermite

Ejercicio 2

Vamos a obtener el polinomio de McLaurin de f(x)=sin(x) de orden 4. Representamos conjuntamente el polinomio y la función.

Representamos el error absoluto y el error relativo. Determinamos cotas superiores para los errores en los intervalos dados. Los enunciados están en la lista de problemas.

Obtenemos la serie de Taylor

> f:=sin(x);

s4:=series(f,x=0,5);

:=

f sin x( ) :=

s4 x − 1 + 6x3 O x( 5) Obtenemos el polinomio de McLaurin de orden 4.

> p4:=convert(s4,polynom);

:=

p4 x − 1 6x3 Representación conjunta de la función y el polinomio

> plot([f,p4],x=-2..2,color=[red,blue]);

x

2 1

-1 -2

1

0.5

0

-0.5

-1

Construimos una expresión correspondiente al valor absoluto del error absoluto.

> e4:=abs(f-p4);

:=

e4 sin x( ) − + x 1 6x3 Representamos el error en el intervalo [-2,2].

Page 1

(2)

> plot(e4,x=-2..2);

x 2

1 -1

-2

0.2

0.15

0.1

0.05

0

A partir del gráfico, podemos observar la cota de error =0.25 para el (valor absoluto del) error absoluto.

Construimos una expresión para el valor absoluto del error relativo.

> r4:=abs((f-p4)/f);

:=

r4

− + ( )

sin x x 1

6x3 ( ) sin x Representamos en el intervalo [-1,1].

> plot(r4,x=-1..1);

x 1

0.5 -0.5

-1

0.008

0.006

0.004

0.002

0

Determinamos, a partir del gráfico, la cota de error |r4(x)!<= 0.0097.

Ejercicio 6

En este ejercicio, calculamos el polinomio interpolador de 3 puntos de varias formas

• Directamente, usando el comando interp

• Construyendo y resolviendo un sistema de ecuaciones

• Usando los polinomios componentes de Lagrange

• Usando diferencias divididas y la forma de Newton Interpolador con interp

> xx:=[0,1,2];

yy:=[-1,1,3];

p:=interp(xx,yy,x);

:=

xx [0 1 2, , ] :=

yy Page 2[-1 1 3, , ]

(3)

:=

p 2 x − 1

Interpolador mediante sistema de ecuaciones. Este grupo de ejecución construye y resuelve el sistema de ecuaciones que determina el interpolador.

En objeto de este ejercicio es mostrar el funcionamiento de algunos recursos de Maple.

Esta no es una buena forma de calcular el polinomio interpolador.

> p2:=a0+a1*x+a2*x^2;#polinomio genérico de grado 2

`***** nodos ******`;

x0:=0;

x1:=1;

x2:=2;

`***** valores *****`;

y0:=-1;

y1:=1;

y2:=3;

`****** creamos las ecuaciones ****`;

eq0:=subs(x=x0,p2)=y0;

eq1:=subs(x=x1,p2)=y1;

eq2:=subs(x=x2,p2)=y2;

`******* resolvemos *******`;

s:=solve({eq0,eq1,eq2},{a0,a1,a2});

`****** creamos el polinomio ******`;

q:=subs(s,p2);

:=

p2 a0 + a1 x + a2 x2

***** nodos ******

:=

x0 0 :=

x1 1 :=

x2 2

***** valores *****

:=

y0 -1 :=

y1 1 :=

y2 3

****** creamos las ecuaciones ****

:=

eq0 a0 = -1 :=

eq1 a0 + + a1 a2 = 1 :=

eq2 a0 + 2 a1 + 4 a2 = 3

******* resolvemos *******

:=

s {a2 = 0,a0 = -1,a1 = 2}

****** creamos el polinomio ******

:=

q 2 x − 1

Polinomio de Lagrange. El siguiente grupo de ejecución calcula el polinomio interpolador de 3 puntos en la forma de Lagrange.

> `***** nodos ******`;

x0:=0;

x1:=1;

x2:=2;

`***** valores *****`;

y0:=-1;

y1:=1;

y2:=3;

`**** polinomios fundamentales ***`;

L0:=(x-x1)*(x-x2)/((x0-x1)*(x0-x2));

L1:=(x-x0)*(x-x2)/((x1-x0)*(x1-x2));

L2:=(x-x0)*(x-x1)/((x2-x0)*(x2-x1));

`****** polinomio interpolaor *****`;

p2:=L0*y0+L1*y1+L2*y2;

q2:=expand(p2);#expresa el polinomio en potencias de x

***** nodos ******

:=

x0 0 Page 3

(4)

:=

x1 1 :=

x2 2

***** valores *****

:=

y0 -1 :=

y1 1 :=

y2 3

**** polinomios fundamentales ***

:=

L0 1

2(x − 1 () x − 2) :=

L1 −x (x − 2) :=

L2 1

2x (x − 1)

****** polinomio interpolaor *****

:=

p2 −1 − +

2(x − 1 () x − 2) x (x − 2) 3

2x (x − 1) :=

q2 2 x − 1

Forma de Newton. El siguiente grupo de ejecución calcula las diferencias divididas para 3 puntos y el polinomio interpolador en la forma de Newton.

> `***** nodos ******`;

x0:=0;

x1:=1;

x2:=2;

`***** valores *****`;

y0:=-1;

y1:=1;

y2:=3;

`***** diferencias divididas *****`;

f0:=y0;

f1:=y1;

f2:=y2;

f01:=(f1-f0)/(x1-x0);

f12:=(f2-f1)/(x2-x1);

f012:=(f12-f01)/(x2-x0);

`****** polinomio ********`;

p2:=f0+f01*(x-x0)+f012*(x-x0)*(x-x1);

***** nodos ******

:=

x0 0 :=

x1 1 :=

x2 2

***** valores *****

:=

y0 -1 :=

y1 1 :=

y2 3

***** diferencias divididas *****

:=

f0 -1 :=

f1 1 :=

f2 3 :=

f01 2 :=

f12 2 :=

f012 0

****** polinomio ********

:=

p2 2 x − 1

Ejercicio 15

El objetivo es aproximar el valor de la integral de la función f(x)=exp(-x^2) sobre el intervalo [0,1] usando polinomios interpoladores.

Definimos la función correspondiente al integrando. Page 4

(5)

> f:=x->exp(-x^2);

:=

f xe(−x2)

Calculamos el interpolador de f en los nodos x0=0, x1=1/2,x2=1. Representamos conjuntamente f y el interpolador

> xx:=[0,1/2,1];

yy:=map(f,xx);#calcula el valor de f(x) en los nodos de la lista xx yy:=map(evalf,yy);#calculamos una aproximación decimal

p2:=interp(xx,yy,x);

plot([f(x),p2],x=0..1,color=[red,blue]);

:=

xx

⎣⎢⎢ ⎤

⎦⎥⎥

, , 0 1

2 1 :=

yy [1 e, (-1 4 / ),e(-1)] :=

yy [1. .7788007831 .3678794412, , ] :=

p2.3794442500 x2.2526763088 x + 1.

x 0.6 0.8 1

0.4 0.2

0 1

0.9

0.8

0.7

0.6

0.5

0.4

Integramos el interpolador p2 para obtener un valor aproximado de la integral de f(x) en [0,1].

> v2:=int(p2,x=0..1);

:=

v2 .7471804289

Calculamos con el comando int el valor exacto de la integral y error cometido por la aproximación v2

> v:=int(f(x),x=0..1);#valor exacto de la integral vf:=evalf(v);#evaluación decimal de v

er:=abs(vf-v2);#error cometido con v2 :=

v 1

2erf 1( ) π :=

vf .7468241330 :=

er .0003562959 Observamos que v2 aproxima el valor exacto con 3 decimales exactos.

La secuencia de ordenes presentada abajo, realiza las siguientes acciones

• Define la función a integrar y el intervalo de integración [a,b]

• Determina (n+1) nodos igualmente espaciados en el intervalo [a.b]

• Construye el interpolador de f(x) en los nodos calculados

• Representa conjuntamente la función f(x) i el interpolador calculado

• Calcula la integral del interpolador para aproximar la integral de la función

• Calcula el valor exacto de la integral de la función y el error absoluto

> f:=x->exp(-x^2);

a:=0;

b:=1;

n:=2;#número de subintervalos h:=(b-a)/n;#separación entre puntos

xx:=[seq(a+j*h,j=0..n)]; Page 5

(6)

yy:=map(f,xx);

yy:=map(evalf,yy);

p.n:=interp(xx,yy,x);

plot([f(x),p.n],x=a..b,color=[red,blue]);

`****** valor aproximación ********`;

v.n:=int(p.n,x=a..b);

`****** valor exacto y error ******`;

v:=int(f(x),x=a..b);

vf:=evalf(v);

er.n:=abs(vf-v.n);

:=

f xe(−x2) :=

a 0

:=

b 1

:=

n 2

:=

h 1

2 :=

xx

⎣⎢⎢ ⎤

⎦⎥⎥

, , 0 1

2 1 :=

yy [1 e, (-1 4 / ),e(-1)] :=

yy [1. .7788007831 .3678794412, , ] :=

p2.3794442500 x2.2526763088 x + 1.

x

1 0.8

0.6 0.4

0.2 0

1

0.9

0.8

0.7

0.6

0.5

0.4

****** valor aproximación ********

:=

v2 .7471804289

****** valor exacto y error ******

:=

v 1

2erf 1( ) π :=

vf .7468241330 :=

er2 .0003562959

Una vez verificado el buen funcionamiento con n=2, calculamos la aproximación con 5 puntos (n=4)

> f:=x->exp(-x^2);

a:=0;

b:=1;

n:=4;#número de subintervalos h:=(b-a)/n;#separación entre puntos xx:=[seq(a+j*h,j=0..n)];

yy:=map(f,xx);

yy:=map(evalf,yy);

p.n:=interp(xx,yy,x); Page 6

(7)

plot([f(x),p.n],x=a..b,color=[red,blue]);

`****** valor aproximación ********`;

v.n:=int(p.n,x=a..b);

`****** valor exacto y error ******`;

v:=int(f(x),x=a..b);

vf:=evalf(v);

er.n:=abs(vf-v.n);

:=

f xe(−x2) :=

a 0

:=

b 1

:=

n 4

:=

h 1

4 :=

xx

⎣⎢⎢ ⎤

⎦⎥⎥

, , , , 0 1

4 1 2

3 4 1

:=

yy

⎣⎢⎢ ⎤

⎦⎥⎥

, , , ,

1 e

⎜⎜

⎟⎟

-1

16 e(-1 4 / ) e

⎜⎜

⎟⎟

-9 16 e(-1) :=

yy [1. .9394130628 .7788007831 .5697828247 .3678794412, , , , ] :=

p4 .04160629015 x4 + .4882003122 x31.184555726 x2 + .0226285650 x + 1.

x

1 0.8

0.6 0.4

0.2 0

1

0.9

0.8

0.7

0.6

0.5

0.4

****** valor aproximación ********

:=

v4 .7468337099

****** valor exacto y error ******

:=

v 1

2erf 1( ) π :=

vf .7468241330 :=

er4 .95769 10-5

Ejercicio 16: Polinomio de Hermite

El material correspondiente al polinomio de Hermite es opcional Resolución usando sistema de ecuaciones

> `***** nodos *****`;

x0:=0;

x1:=1;

`*** valores ****`;

y0:=1;

dy0:=1;#derivada en x0

Page 7

(8)

y1:=2;

dy1:=-1;

`***** polinomio genérico y derivada *********`;

h3:=a0+a1*x+a2*x^2+a3*x^3;

dh3:=diff(h3,x);

`****** ecuaciones **********`;

eq0:=subs(x=x0,h3)=y0;

eqd0:=subs(x=x0,dh3)=dy0;

eq1:=subs(x=x1,h3)=y1;

eqd1:=subs(x=x1,dh3)=dy1;

`******* resolución y polinomio *******`;

s:=solve({eq0,eqd0,eq1,eqd1},{a0,a1,a2,a3});

h3:=subs(s,h3);

>

***** nodos *****

:=

x0 0 :=

x1 1

*** valores ****

:=

y0 1 :=

dy0 1 :=

y1 2 :=

dy1 -1

***** polinomio genérico y derivada *********

:=

h3 a0 + a1 x + a2 x2 + a3 x3 :=

dh3 a1 + 2 a2 x + 3 a3 x2

****** ecuaciones **********

:=

eq0 a0 = 1 :=

eqd0 a1 = 1 :=

eq1 a0 + + + a1 a2 a3 = 2 :=

eqd1 a1 + 2 a2 + 3 a3 = -1

******* resolución y polinomio *******

:=

s {a2 = 2,a0 = 1,a3 = -2,a1 = 1} :=

h3 1 + + x 2 x22 x3 Cálculo del polinomio usando diferencias

> `***** nodos *****`;

x0:=0;

x1:=1;

`*** valores ****`;

y0:=1;

dy0:=1;#derivada en x0 y1:=2;

dy1:=-1;

`*********** diferencias *********`;

f0:=y0;

f1:=y1;

f00:=dy0;

f01:=(f1-f0)/(x1-x0);

f11:=dy1;

f001:=(f01-f00)/(x1-x0);

f011:=(f11-f01)/(x1-x0);

f0011:=(f011-f001)/(x1-x0);

`****** polinomio *******`;

h3:=f0+f00*(x-x0)+f001*(x-x0)^2+f0011*(x-x0)^2*(x-x1);

h3:=expand(h3);

***** nodos *****

:=

x0 0 :=

x1 1 Page 8

(9)

*** valores ****

:=

y0 1 :=

dy0 1 :=

y1 2 :=

dy1 -1

*********** diferencias *********

:=

f0 1 :=

f1 2 :=

f00 1 :=

f01 1 :=

f11 -1 :=

f001 0 :=

f011 -2 :=

f0011 -2

****** polinomio *******

:=

h3 1 + − x 2 x2(x − 1) :=

h3 1 + − x 2 x3 + 2 x2

Ejercicio 21

Usamos el programa del ejercicio anterior con algunos cambios. Ahora los valores se calculan usando la función f(x)=sin(x)

> f:=x->sin(x);

df:=D(f);#calcula la función derivada

`***** nodos *****`;

x0:=0;

x1:=evalf(Pi/4);

`*** valores ****`;

y0:=f(x0);

dy0:=df(x0);#derivada en x0 y1:=f(x1);

dy1:=df(x1);

`*********** diferencias *********`;

f0:=y0;

f1:=y1;

f00:=dy0;

f01:=(f1-f0)/(x1-x0);

f11:=dy1;

f001:=(f01-f00)/(x1-x0);

f011:=(f11-f01)/(x1-x0);

f0011:=(f011-f001)/(x1-x0);

`****** polinomio *******`;

h3:=f0+f00*(x-x0)+f001*(x-x0)^2+f0011*(x-x0)^2*(x-x1);

h3:=expand(h3);

:=

f sin :=

df cos

***** nodos *****

:=

x0 0 :=

x1 .7853981635

*** valores ****

:=

y0 0 :=

dy0 1 :=

y1 .7071067813 :=

dy1 .7071067811

*********** diferencias *********

:=

f0 0 :=

f1 .7071067813 :=

f00 1 :=

f01 Page 9.9003163162

(10)

:=

f11 .7071067811 :=

f001 -.1269212082 :=

f011 -.2460020205 :=

f0011 -.1516183992

****** polinomio *******

:=

h3 x.1269212082 x2.1516183992 x2(x − .7853981635) :=

h3 x.0078403959 x2.1516183992 x3 Valor aproximado y error

> vp:=subs(x=0.5,h3);

er:=abs(f(0.5)-vp);

:=

vp .4790876011 :=

er .0003379375 Representación gráfica

> plot([f(x),h3],x=-3..3,color=[red,blue]);

x

3 2

1 -1

-2 -3

1

0.5

0

-0.5

-1

Page 10

Referencias

Documento similar

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

La presencia de algunos restos pelágicos (HedberZella, Heterohe lix, Pithonella) indican que este momento corresponde al de ma- xima profundidad del mar cretácico y el sedimento

Pliegue asimétrico mostrando una pizarrosidad de plano axial (martillo) en las pizarras del volcanismo ácido inicial del anticlinorio de Coto Vicario.. El martillo muestra la

Observ6se los dep6sitos conglomeráticos cementados correspon dientes al nivel Tirreniense más antiguo (19) y sobre ellos los materiales del glacis de cobertera (23) del

jo de lavas básicas, y en la pared de la derecha so bre volcanitas ácidas-in- termedias (Volcanismo pri mero)..9.

La mena se compone esencialmente de pirita, siendo los demás minerales -especialmente galena y blenda- escasos; entre estos, calcopirita es relativamente frecuente (en cristales

Dolomías, margas dolomíticas y calizas de Santo Domingo de Silos... F-10.- Margo-calizas del Paleógeno en las proximidades de Burgo de