Escolar Documentos
Profissional Documentos
Cultura Documentos
Trabalho 3
Interpolao Polinomial:
Mtodo de Lagrange e Splines Cbicos
Barreiras - BA
Julho/2013
SUMRIO
1. Introduo.................................................................................................................3
2. Mtodos....................................................................................................................4
3. Aplicaes................................................................................................................7
4. Algoritmos.................................................................................................................8
5. Resultados Numricos...........................................................................................12
6. Concluso...............................................................................................................20
7. Referncias............................................................................................................21
8. Anexo.....................................................................................................................22
1. Introduo
pontos
interpolar os
tabelados. Para se
pontos dados em uma tabela, utilizado um polinmio
de
Equao 1.1
2. Mtodos
Sejam
pontos distintos, e
, em um
considerado na forma
Equao 2.1.1
Sabendo que pn um polinmio de grau n que interpola f em x0, ..., xn, onde
os pi(x), com i = 0,1, 2, ..., n; so polinmios de grau n tais que:
Equao 2.1.2
Lk(xi)
Equao 2.1.3
(xi) =
x x1 x x2 f x x x0 x x2 f x x x0 x x1 f x
0
2
x0 x1 x0 x2
x1 x0 x1 x2 1 x2 x0 x2 x1
Equao 2.1.6
Se a funo
est tabelada em
interpolao para estes pontos por um polinmio de grau n, pode ser que o resultado
dessa aproximao no seja satisfatrio (o erro pode ser grande).
Para evitar este problema, podemos interpolar
em grupos de poucos
pontos, obtendo-se polinmio de grau menor, e impor condies para que a funo
de aproximao seja contnua e tenha derivadas contnuas at certa ordem.
Uma spline cbica, S3(x), uma funo polinomial por partes, contnua, onde
cada parte, sk(x), um polinmio de grau 3 no intervalo [xk1, xk], k = 1, 2, ..., n.
S3(x) tem a primeira e segunda derivadas contnuas, o que faz com que a
curva S3(x) no tenha picos e nem troque abruptamente de curvatura nos ns.
Supondo que f(x) esteja tabelada nos pontos xi, i = 0, 1, 2, ..., n a funo S3(x)
chamada spline cbica interpolante de f(x) nos ns xi, i = 0, ..., n se existem n
polinmios de grau 3, sk(x), k = 1, ..., n tais que:
Equao 2.2.1
Equao 2.2.2
Equao 2.2.3
Equao 2.2.4
Equao 2.2.5
k = 1, 2, ..., n.
Equao 2.2.6
Equao 2.2.7
Equao 2.2.8
Equao 2.2.9
Equao 2.2.10
Equao 2.2.11
Equao 2.2.12
3. Aplicaes
3.1 Problema 1:
Na tabela seguinte indicam-se os valores da densidade da gua do mar r (em Kg/m3)
correspondentes a diferentes valores da temperatura T (em graus Celsius):
T
40
80
120
160
200
1000,7794
1000,6427
1000,2805
999,7165
998,9700
Tabela 3.1.1
Em seguida, comparar os resultados obtidos com os mtodos numricos com os
valores (que correspondem a valores adicionais de T):
60
100
140
180
1000,74088
1000,4882
1000,0224
999,3650
Tabela 3.1.2
3.2 Problema 2:
Foram dados os valores de x e y, referentes a uma determinada experincia
realizada em laboratrio de fsica, onde y = f(x), na tabela abaixo:
0,0
3,0
0,5
1,8616
1,0
-0,5571
1,5
-4,1987
2,0
-9,0536
Tabela 3.2.1
Deve-se interpolar os valores desta funo pelos dois mtodos discutidos neste
trabalho (Lagrange e Spline cbica).
4. Algoritmos
31. G(i)=B(i)
32. Faa j=1,i-1,1
33. G(i)=G(i)-A(i,j)*G(j)
34. Fim Faa
35. Faa j=i+1,n,1
36. G(i)=G(i)-A(i,j)*G(j)
37. Fim Faa
38. G(i)=G(i)/A(i,i)
39. Fim Faa
40. Fim Faa
41. z=x(0)
42. t=0.1
43. Faa k=1,n-1,1
44. ak=(G(k)-G(k-1))/(6*h)
45. bk=G(k)/2
46. ck=(Y(k)-Y(k-1))/h+ (2*h*G(k)+G(k-1)*h)/6
47. dk=Y(k)
48. Faa Enquanto (z<=x(k))
49. s=ak*(z-x(k))**3 + bk*(z-x(k))**2+ck*(z-x(k))+dk
50. imprima (saida,*)z,s
51. z=z+t
52. Fim do faa
53. Fim
11
5. Resultados Numricos
5.1 Problema1
5.1.1 Lagrange
A tabela e o grafico abaixo expe os valores achados a partir da implementao do
mtodo de Lagrange com um intervalo de 2 entre os pontos.
T
4
1000,7794000000000
1000,7408906250000
1000,6427000000000
10
1000,4882031250000
12
1000,2805000000000
14
1000,0224156249999
16
999,71650000000000
18
999,36502812499998
20
998,97000000000003
Tabela 5.1.1
Grafico 5.1.1
Lagrange
1001
1000.5
1000
999.5
Lagrange
999
998.5
998
4
10
12
14
12
16
18
20
Grafico 5.1.2
Spline
1001
1000.5
1000
999.5
Spline
999
998.5
998
13
Tabela 5.1.2
T
1000,7794
7,199997
1000,6842
4,1
1000,7772
7,299997
1000,6796
4,2
1000,775
7,3999968
1000,6748
4,2999997
1000,7728
7,4999967
1000,66986
4,3999996
1000,7706
7,5999966
1000,6648
4,4999995
1000,7684
7,6999965
1000,65955
4,5999994
1000,7661
7,7999964
1000,6541
4,6999993
1000,76385
7,8999963
1000,6485
4,799999
1000,76154
7,999996
1000,6427
4,899999
1000,75916
8,099997
1000,6367
4,999999
1000,7568
8,199997
1000,63055
5,099999
1000,75433
8,299997
1000,62427
5,199999
1000,75183
8,399998
1000,61774
5,2999988
1000,74927
8,499998
1000,611
5,3999987
1000,7467
8,599998
1000,6042
5,4999986
1000,744
8,699999
1000,5971
5,5999985
1000,7413
8,799999
1000,5899
5,6999984
1000,73846
8,9
1000,5825
5,7999983
1000,73553
9,
1000,575
5,899998
1000,7326
9,1
1000,56726
5,999998
1000,7295
9,200001
1000,5594
6,099998
1000,7264
9,300001
1000,5514
6,199998
1000,7231
9,400002
1000,54315
6,299998
1000,7197
9,500002
1000,53485
6,3999977
1000,7163
9,600002
1000,5263
6,4999976
1000,7127
9,700003
1000,51764
6,5999975
1000,70905
9,800003
1000,50885
6,6999974
1000,7052
9,900003
1000,4999
6,7999973
1000,7013
10,000004
1000,4908
6,899997
1000,6972
10,100004
1000,4815
6,999997
1000,69305
10,200005
1000,4721
7,099997
1000,6887
10,300005
1000,4626
14
10,400005
1000,4529
13,600018
1000,0788
16,80003
999,57825
10,500006
1000,44305
13,700018
1000,0652
16,90003
999,5604
10,600006
1000,4331
13,800018
1000,05145
17,00003
999,5425
10,7000065
1000,42303
13,900019
1000,0376
17,10003
999,5244
10,800007
1000,4128
14,000019
1000,0236
17,200031
999,5063
10,900007
1000,40247
14,100019
1000,0095
17,300032
999,48804
11,000008
1000,39197
14,20002
999,9953
17,400032
999,46967
11,100008
1000,38135
14,30002
999,98096
17,500032
999,4512
11,200008
1000,3706
14,400021
999,9665
17,600033
999,4327
11,300009
1000,35974
14,500021
999,95184
17,700033
999,414
11,400009
1000,3488
14,600021
999,93713
17,800034
999,3953
11,50001
1000,3377
14,700022
999,92224
17,900034
999,3765
11,60001
1000,3265
14,800022
999,9072
18,000034
999,35767
11,70001
1000,3152
14,9000225
999,8921
18,100035
999,33875
11,800011
1000,3037
15,000023
999,87683
18,200035
999,3197
11,900011
1000,2922
15,100023
999,8614
18,300035
999,30066
12,000011
1000,2805
15,200024
999,8459
18,400036
999,2815
12,100012
1000,26874
15,300024
999,8302
18,500036
999,2623
12,200012
1000,2569
15,400024
999,81433
18,600037
999,24304
12,300013
1000,2449
15,500025
999,7984
18,700037
999,22375
12,400013
1000,2328
15,600025
999,7823
18,800037
999,2044
12,500013
1000,2206
15,700026
999,76605
18,900038
999,18506
12,600014
1000,2083
15,800026
999,7497
19,000038
999,1656
12,700014
1000,19586
15,900026
999,73315
19,100039
999,1462
12,8000145
1000,1833
16,000027
999,7165
19,200039
999,12665
12,900015
1000,17065
16,100027
999,6997
19,30004
999,1071
13,000015
1000,1579
16,200027
999,68274
19,40004
999,0876
13,100016
1000,145
16,300028
999,66565
19,50004
999,068
13,200016
1000,132
16,400028
999,64844
19,60004
999,0484
13,300016
1000,1189
16,500029
999,63104
19,70004
999,0288
13,400017
1000,10565
16,600029
999,6136
19,800041
999,0092
13,500017
1000,0923
16,70003
999,596
19,900042
998,98956
15
100
140
180
1000,74088
1000,4882
1000,0224
999,3650
Tabela 3.1.2
Lagrange Problema 2
0,0000000000000000
3,0000000000000000
0,1000000000000000
2,8791052800000000
0,2000000000000000
2,7039380799999900
0,3000000000000000
2,4754164800000000
0,4000000000000000
2,1943820800000000
0,5000000000000000
1,8615999999999900
0,5999999999999990
1,4777588800000000
0,6999999999999990
1,0434708800000000
0,7999999999999990
0,5592716800000000
0,8999999999999990
0,0256204800000004
0,9999999999999990
-0,5570999999999990
1,0999999999999900
-1,1885835199999900
1,2000000000000000
-1,8686003199999900
1,3000000000000000
-2,5969971200000000
1,4000000000000000
-3,3736971200000000
1,5000000000000000
-4,1987000000000000
1,6000000000000000
-5,0720819200000000
1,7000000000000000
-5,9939955200000000
1,8000000000000000
-6,9646699200000000
1,9000000000000000
-7,9844107200000000
16
17
Splines Problema 2
0,00000000
3,00000000
0,10000000
2,82555270
0,20000000
2,63779740
0,30000001
2,42342540
0,40000001
2,16912910
0,50000000
1,86160000
0,60000002
1,49059570
0,70000005
1,05813720
0,80000007
0,56931055
0,90000010
0,02920241,65
1,00000010
-0,55710089
1,10000010
-1,18607400
1,20000020
-1,86043830
1,30000020
-2,58447600
1,40000020
-3,36246990
1,50000020
-4,19870190
1,60000030
-5,09465740
1,70000030
-6,04062940
1,80000030
-7,02411410
1,90000030
-8,03260710
18
10.00
5.00
0.00
Spline
-5.00
Lagrange
-10.00
-15.00
-20.00
Grafico 5.2.3
19
6. Concluso
20
7. Referncias
RUGGIERO, M. A. G.; LOPES, V. L. da R. Clculo numrico - aspectos tericos e
computacionais - 2a edio. Pearson Education do Brasil, 1996.
QUADROS, R. S.; BOTOLI, lvaro L. Fundamentos de Clculo Numrico para
Engenheiros.
ASANO C.I.; COLLI E. Clculo Numrico Fundamentos e Aplicaes IME USP
21
8. Anexos
8.1 Lagrange
program metodo_lagrange
implicit none
integer n,resultados,entrada,saida
resultados=11
entrada=12
saida=13
open (unit=entrada,file='parabola.txt',status='old')
open(unit=saida,file='parabola.out')
open(unit=resultados,file='parabola.res')
read(entrada,*) auxiliar
read(entrada,*) auxiliar
!leitura de numero de pontos da tabela
read(entrada,*)n
call lagrange(n,resultados,entrada,saida)
close(resultados)
close(saida)
close(entrada)
end
subroutine lagrange(n,resultados,entrada,saida)
implicit none
integer i,j,n,resultados,entrada,saida
real*8 soma,p,y(n),x(n),xvalor,intervalo
character auxiliar
22
read(entrada,*)auxiliar
read(entrada,*)intervalo
read(entrada,*)auxiliar
!leitura dos valores de x:
do i=1,n,1
read(entrada,*)x(i),y(i)
end do
do while(xvalor<=x(n))
soma=0.0d+00
do i=1,n,1
p=1
do j=1,n,1
if(j.ne.i)then
p=p*(xvalor-x(j))/(x(i)-x(j))
end if
end do
soma=soma+p*y(i)
end do
write(resultados,*)xvalor,soma
xvalor=xvalor+intervalo
23
end do
end
!----------------------------------------------------------------
program splinecubico
implicit none
entrada=12
saida=13
open(unit=entrada, file='splineentrada.txt')
open(unit=saida,file='splinesaida.txt')
read(entrada,*) n
read(entrada,*) h
do i=0,n-1,1
read(entrada,*) X(i), Y(i)
end do
close (entrada)
do i=1,n-2,1
do j=1,n-2,1
A(i,j)=0
end do
24
end do
do i=1,n-2,1
A(i,i)=4*h
end do
do i=1,n-3,1
A(i,i+1)=h
A(i+1,i)=h
end do
do i=1,n-2,1
B(i)=(6/h)*(Y(i+1)-2*Y(i)+Y(i-1))
end do
do i=0,n-1,1
G(i)=0
end do
do k=1,100,1
do i=1,n-2,1
G(i)=B(i)
do j=1,i-1,1
G(i)=G(i)-A(i,j)*G(j)
end do
do j=i+1,n,1
G(i)=G(i)-A(i,j)*G(j)
end do
G(i)=G(i)/A(i,i)
end do
end do
z=x(0)
25
t=0.1
do k=1,n-1,1
ak=(G(k)-G(k-1))/(6*h)
bk=G(k)/2
ck=(Y(k)-Y(k-1))/h+ (2*h*G(k)+G(k-1)*h)/6
dk=Y(k)
do while (z<=x(k))
s=ak*(z-x(k))**3 + bk*(z-x(k))**2+ck*(z-x(k))+dk
write (saida,*)z,s
z=z+t
end do
end do
close (saida)
end
26