Вы находитесь на странице: 1из 11

Quarto roteiro de exerccios no Scilab

Clculo Numrico
Rodrigo Fresneda
28 de abril de 2012
Guia para respostas:
Entregue suas respostas s tarefas contidas no roteiro de cada uma das quatro atividades,
incluindo quaisquer algoritmos pedidos.
No copie do pdf e cole no Scilab para evitar erros de compilao: digite todos os comandos
novamente.
Data limite para entrega: 09/05/2012
Parte I
Interpolao polinomial
Nesta atividade iremos calcular o polinmio interpolador p de grau n 1 ou menor aos n pontos
distintos (x
i
, y
i
),
p (x
i
) = y
i
, i = 1, ..., n
Para tanto iremos nos valer de duas formas para p vistas em sala: aquela dada pela frmula de
Lagrange, e aquela dada pela frmula de Newton.
1 Polinmios interpoladores de Lagrange
A frmula de Lagrange para o polinmio interpolador de grau n 1 dada por
p (x) =
n

i=1
y
i
L
i
(x)
em que y
i
, i = 1, ..., n, so as coordenadas dependentes na tabela (x
i
, y
i
), e os L
i
(x) so os
polinmios
L
i
(x) =
n

j = 1
j = i
x x
j
x
i
x
j
1
A seguinte funo do Scilab obtm a interpolao num ponto xin usando a frmula de Lagrange
para o polinmio interpolador:
Algoritmo 1 Frmula de Lagrange
function [ yi n ] = i l agr ange ( x , y , xi n )
// i l ag r ang e aj us t a um pol i nomi o deLagrangeaum conj unt o de pont os dado
//eusao pol i nomi o paradet ermi nar o v al or i nt e r pol ado deumponto .
// Var i avei s de ent rada :
//xVetor col unacomas coordenadas xdos pont os dados
//yVetor col una comas coordenadas ydos pont os dados
// xi nAcoordenadaxdopontoa s er i nt e r pol ado
// Vari avel de s ai da :
// yi nO v al or i nt e r pol ado de xi n
//Ocomprimentodo vet or x f or nece onumerodetermos do pol i nomi o
n=length( x ) ;
for i = 1: n ,
// Cal cul a os termos Li do pr odut or i o
L( 1 , i ) = 1;
for j = 1: n ,
i f j ~= i ,
L( 1 , i ) =L( 1 , i )*( xi n-x( j ) ) /( x( i ) -x( j ) ) ;
end
end
end
// Cal cul a o v al or do pol i nomi o daEq . (16)
yi n= ;
endfunction
2 Polinmios interpoladores de Newton
A formula de Newton para o polinmio interpolador de grau n1, para os n pontos de interpolao
(x
i
, y
i
), i = 1, ..., n, e
p (x) =
n

i=1
[y
1
, ..., y
i
] (x x
1
) (x x
1
) (x x
i1
)
2
em que os coecientes [y
1
, ..., y
i+1
] so as diferenas divididas de ordem i dos y
i
em relao aos x
i
.
As diferenas divididas de ordens 0, 1 e 2 so:
[y
1
] = y
1
[y
1
, y
2
] =
y
2
y
1
x
2
x
1
[y
1
, y
2
, y
3
] =
1
x
3
x
1
_
y
3
y
2
x
3
x
2

y
2
y
1
x
2
x
1
_
=
[y
2
, y
3
] [y
1
, y
2
]
x
3
x
1
Seguindo essa relao de recorrncia, podemos escrever
[y
1
, y
2
, y
3
, y
4
] =
[y
2,
y
3
, y
4
] [y
1
, y
2
, y
3
]
x
4
x
1
e de modo geral,
[y
1
, ..., y
k
] =
[y
2
, ..., y
k
] [y
1
, ..., y
k1
]
x
k
x
1
O seguinte programa pode ser utilizado para interpolar um ponto xin usando polinmios de
Newton.
3
Algoritmo 2 Frmula de Newton
function yi n=i newton ( x , y , xi n )
// i newt on aj us t a um pol i nomi o deNewtonaumdado conj unt o de pont os e
//usa es s e pol i nomi o paradet ermi nar o v al or i nt e r pol ado deumponto .
// Var i avei s de ent rada :
//xVetor comas coordenadas xdos pont os dados
//yVetor comas coordenadas ydos pont os dados
// xi nCoordenadaxdopontoa s er i nt e r pol ado
// Vari avel de s ai da :
// yi nO v al or i nt e r pol ado de xi n .
n=length( x ) ; //Comprimentodo vet or x f or nece onumerode c o e f i c i e nt e s
// ( etermos ) do pol i nomi o
a ( 1) =y ( 1 ) ; //Pri mei ro c o e f i c i e nt e a1
for i = 1: n- 1 , // Cal cul a as di f e r e nc as d i v i d i d a s deordem1
// El as saoarmazenadas na1a col unade d i f
di f ( i , 1 ) =******************** ;
end
for j = 2: n- 1 , // Cal cul a as di f e r e nc as d i v i d i d a s deordem2 at e (n1)
// El as saoarmazenadas nas col unas de d i f
for i = 1: n-j ,
di f ( i , j ) = ( di f ( i +1, j - 1)- di f ( i , j - 1) ) /( x( i+j )-x( i ) ) ;
end
end
for j = 2: n , // At r i bui os c o e f i c i e nt e s a2aanao vet or a
a ( j ) = di f ( 1 , j - 1 ) ;
end
// Cal cul a o v al or i nt e r pol ado de xi n
yi n=a ( 1 ) ;
xn=1;
for k= 2: n ,
xn=xn*( xi n-x( k- 1 ) ) ;
yi n=********* ;
end
endfunction
Atividade 1
1. Complete as linhas com *** das funes ilagrange e inewton.
2. Sabe-se que um dispositivo no-linear, quando alimentado por uma tenso U (em volts)
apresenta como sada a corrente I (em mA), dada por
I = 5U
3
8U
2
+ 20U (1)
4
Usando a equao acima, preencha seguinte tabela com os valores esperados para a corrente
I:
U (V ) 7.00 5.00 3.00 1.00 1.00 3.00 5.00 7.00 9.00
I (mA)
3. Qual o valor de I para U = 0V ?
4. Usando apenas os n = 2 primeiros pontos da tabela, obtenha por extrapolao uma estima-
tiva para a corrente quando U = 0V usando a funo ilagrange. Qual o erro absoluto da
estimativa?
5. Repita o item 4 para n = 3, 4, 5, 6, 7, 9. Comente os resultados obtidos. Se voc usasse o
programa inewton, os resultados seriam diferentes? Justique.
6. O programa abaixo traa num mesmo grco a funo dada na (1) para 10 U 10 e o
polinmio interpolador utilizando os n = 3 primeiros pontos da tabela. Comente os resultados
obtidos.
Algoritmo 3
x=linspace (- 10 , 10 , 100) ;
y=5x. ^3-8x.^2+20x ;
v= [ -7-5- 3 ] ; -
i =5v. ^3-8v.^2+20v ;
for i nt = 1: length( x)
xi n=x( i nt ) ;
yi n ( i nt ) = i l agr ange ( v , i , xi n ) ;
end
plot ( x , y , x , yi n , r , v , i , ) ;
xgrid ;
xl abe l ( v ) ;
yl abe l ( i ) ;
l egend ( Val or es exat os , Pol i nomi odeLagrange , Dadosusados na i nt e r p . ) ;
7. Modique o programa do item 6 de forma a usar os n = 4 primeiros pontos da tabela. Comente
os resultados obtidos.
3 Aproximao polinomial a um conjunto de n+1 pontos pelo
mtodo dos mnimos quadrados
Dado um vetor x com n componentes distintas e um vetor y com n valores, queremos encontrar o
polinmio p de grau m < n 1 que melhor se ajusta aos pontos (x
i
, y
i
) no sentido de minimizar a
distncia
y p =

_
n

i=1
(y
i
p (x
i
))
2
(2)
5
Algoritmo 4 Calcula o polinmio P nos pontos x.
P=poly( a , x , c o e f f )
horner (P, x)
Como vimos em sala, esse problema equivalente a resolver o sistema linear
_
_
_
_
_
_
(e
0
, e
0
) (e
1
, e
0
) (e
2
, e
0
) (e
m
, e
0
)
(e
0
, e
1
) (e
1
, e
1
) (e
2
, e
1
) (e
m
, e
1
)
(e
0
, e
2
) (e
1
, e
2
) (e
2
, e
2
) (e
m
, e
2
)

(e
0
, e
m
) (e
1
, e
m
) (e
2
, e
m
) (e
m
, e
m
)
_
_
_
_
_
_
_
_
_
_
_
_
_
a
0
a
1
a
2
.
.
.
a
m
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
(y, e
0
)
(y, e
1
)
(y, e
2
)
.
.
.
(y, e
m
)
_
_
_
_
_
_
_
(3)
onde os vetores e
i
, i = 0, ..., m dados abaixo so linearmente independentes,
e
0
=
_
_
_
_
_
_
_
1
1
1
.
.
.
1
_
_
_
_
_
_
_
, e
1
=
_
_
_
_
_
_
_
x
1
x
2
x
3
.
.
.
x
n
_
_
_
_
_
_
_
, e
2
=
_
_
_
_
_
_
_
x
2
1
x
2
2
x
2
3
.
.
.
x
2
n
_
_
_
_
_
_
_
, ..., e
m
=
_
_
_
_
_
_
_
x
m
1
x
m
2
x
m
3
.
.
.
x
m
n
_
_
_
_
_
_
_
,
e o produto escalar no R
n

(x, y) =
n

i=1
x
i
y
i
, x, y R
n
Atividade 2
1. Escreva uma rotina que recebe os vetores x e y de mesmo comprimento como dados de entrada
e calcula a matriz de coecientes e o vetor de constantes do sistema de equaes normais para
um dado grau m do polinmio de ajuste (3).
2. Utilize sua rotina, juntamente com a rotina de eliminao gaussiana da aula passada para
obter o polinmio de grau 5 que melhor se ajusta aos dados contidos no arquivo dados.txt
que se encontra na pgina do curso.
3. Finalmente, calcule o erro na sua aproximao de acordo com a expresso (2). Dica: utilize a
funo poly para criar um polinmio em x cujos coecientes so as componentes do vetor
a, e a funo horner para calcular o polinmio nos pontos dados pelo vetor x:
Para ler uma tabela de dados com 2 colunas de nmeros a partir de um arquivo, utilize os comandos:
6
Algoritmo 5 Como ler dados a partir de um arquivo
dados =mopen( /caminho/para/ arqui vo /dados . t xt , r ) ; // abre arqui vo
i f ( dados ==- 1)
error ( naoe po s s i v e l l e r arqui vo ) ;
end
[ num, x , y ] =mfscanf (- 1 , dados , %f%f ) ; // l e r t ab e l a comduas col unas
mclose( dados ) ; // f echa arqui vo
Parte II
Integrao Numrica
4 integrao por trapzios
A regra do trapzio para a integrao numrica de funes baseada na aproximao da integral
a partir da interpolao de uma reta que passa pelos limites de integrao a e b. Na gura abaixo
podemos observar que a integral neste caso equivale rea de um trapzio com bases f (a) e f (b)
e altura (b a).
Figura 1: Integrao por trapzio em 2 pontos
A rea abaixo da curva dada ento por:
I
(b a)
2
[f (a) + f (b)]
Dividindo o intervalo [a, b] em n sub-intervalos podemos calcular a integral de f (x) pela soma do
valor da integral em cada subintervalo.
7
Figura 2: Integrao por trapzios em n + 1 pontos
I

x2
x1=a
f (x) dx +

x3
x2
f (x) dx + +

xn+1=b
xn
f (x) dx =
n

i=1

xi+1
xi
f (x) dx
Aplicando a regra do trapzio a cada um dos subintervalos, temos:
I
n

i=1
_
x
i+1
x
i
2
_
[f (x
i+1
) + f (x
i
)]
No caso dos intervalos serem igualmente espaados temos que:
x
i+1
x
i
= h
Finalmente:
I
h
2
n

i=0
[f (x
i+1
) + f (x
i
)]
A expresso acima pode ser facilmente implementada no Scilab para efetuar o clculo da integral
f (x).
Atividade 3
1. Escreva uma funo no Scilab para calcular, por meio da frmula dos trapzios, a integral dos
dados tabulados abaixo. Os argumentos da funo devem ser os vetores x e y dos dados.
2. Utilizar a funo acima para calcular a rea contida sobre os pontos da tabela abaixo (Resp.
0, 32146).
x 1.00 1.05 1.10 1.15 1.20 1.25 1.30
y 1.000 1.0247 1.0488 1.0723 1.0954 1.1180 1.1401
3. Reescreva a funo que voc criou para o clculo do valor da integral de uma funo. Os
argumentos da funo devem ser: a prpria funo a ser integrada, os limites de integrao e
8
o nmero de subintervalos. Utilize a funo recm criada para o clculo das integrais abaixo:

1
0
e
x
2
dx resp .0, 746818

1
0
e
x
sin (x) dx resp. 0, 24584
Dica: seu algoritmo pode receber como parmetro uma string como exp(-x^2) e calcular a
integral da funo representada por esse string. Para isso, dentro do seu algoritmo voc pode
criar uma outra rotina que recebe a string e um nmero, e calcula a funo representada por
essa string no ponto especicado:
Algoritmo 6 Exemplo de implementao de funo genrica
function [ y]=F( z , stri ng )
x=z
y=evstr ( stri ng ) \\ c al c ul a astri ng ( f uncao dex) nopontoz
endfunction
5 regra de Simpson 1/3
A frmula de integrao por trapzios se baseia na aproximao do integrando por um polinmio
de primeira ordem, para ento integrar o polinmio no intervalo desejado. A regra de Simpson 1/3
uma extenso da regra dos trapzios em que o integrando aproximado por um polinmio de
grau 2 (ver gura abaixo). Assim:
I =

b
a
f (x) dx

b
a
p (x) dx
Figura 3: Simpson 1/3: p (x) um polinmio de grau 2
9
Utilizando um polinmio interpolador de Lagrange, para os pontos de interpolao a, b e o ponto
mdio m = (a + b) /2 temos
p (x) = f (a)
(x m) (x b)
(a m) (a b)
+ f (m)
(x a) (x b)
(ma) (mb)
+ f (b)
(x a) (x m)
(b a) (b m)
Aps integrar, temos:
I =

b
a
p (x) dx =
b a
6
_
f (a) + 4f
_
a + b
2
_
+ f (b)
_
Observe que como so necessrios 3 pontos para a denio de um polinmio de grau 2, o intervalo
de integrao [a, b] dividido em 2 intervalos adjacentes. Desta forma a equao acima pode ser
escrita como:
I

b
a
p (x) dx =
h
3
_
f (a) + 4f
_
a + b
2
_
+ f (b)
_
em que
h =
b a
2
De maneira anloga ao que foi feito para a regra dos trapzios, podemos dividir o intervalo [a, b]
em n subintervalos e calcular a integral em cada um destes subintervalos.
I

x3
x1=a
f (x) dx +

x5
x3
f (x) dx + +

xn+1=b
xn1
f (x) dx =
n

i=2,4,6,...

xi+1
xi1
f (x) dx
Aplicando a regra de Simpson temos:
I
h
3
_
_
f (a) + 4
n

i=2,4,6,...
f (x
i
) + 2
n1

i=3,5,7,...
f (x
i
) + f (b)
_
_
Note que como o mtodo de Simpson aplicado em dois intervalos adjacentes de uma s vez, o
intervalo de integrao deve ser dividido em um nmero par de subintervalos para a utilizao deste
mtodo.
Atividade 4
1. Escreva uma funo no Scilab para calcular por meio do mtodo Simpson 1/3 a integral de
dados tabulados. Os argumentos da funo devem ser os vetores x e y dos dados.
2. Utilizar a funo acima para calcular a integral nos pontos da tabela apresentada na atividade
anterior.
3. Reescreva a funo que voc criou para o clculo do valor do integral de uma funo. Os
argumentos da funo devem ser: a prpria funo a ser integrada, os limites de integrao e
10
o nmero de sub-intervalos. Utilize a funo recm criada para o clculo das integrais abaixo:

1
0
e
x
2
dx (4)

1
0
e
x
sin (x) dx (5)
11

Вам также может понравиться