Sunteți pe pagina 1din 4

Exerccio pgina 31

Primeiro temos que achar a funo ou a equao a ser resolvida.


Se x = 19955^(1/5) ento x^5 = 1955 e x^5-1995=0 a equao.
Tal equao similar a achar o zero da funo f(x)=x^5 - 1955.
4

x 10

FASE I: localizar o zero positivo num intervalo [a; b].


Para tanto vamos fazer o grfico:
>> x=0:0.01:10;f=x.^5-1955;
>> plot(x,f),grid
Observamos que o zero procurado
encontra-se no intervalo [4; 5].

1.5
1
0.5
0
-0.5
-1
-1.5
3

FASE II: calcular uma aproximao do zero pelos 3 mtodos estudados, obtendo todos os dados
solicitados na tabela do exerccio.
Primeiro: Mtodo da Bisseco
Podemos usar programas prontos. O melhor deles, que informa mais dados (de sada) o bissec3.
Para saber o que vamos obter e como se digita para o programa rodar, fazemos:
>> help bissec3
Na tela descobrimos que:
Digita-se [c,C,n,err]= bissec3(f,a,b,N,tol), onde:
c, zero da f,
C, vetor coluna das aproximaes do zero da f, obtidas
nas iteraes,
n, nmero de iteraes realizadas,
err, estimativa de erro sobre x.
Observamos que o erro em y, que dado por |f(c)| no fornecido pelo programa. Mas isto
podemos calcular separadamente, substituindo o valor encontrado para c na funo f(x) = x^5 1955.
>> a=4;b=5;N=30;tol=1e-6;format long
>> [c,C,n,err]= bissec3('x.^5-1955',a,b,N,tol)
c=
4.55228328704834
C=
4.50000000000000
4.75000000000000
4.62500000000000
4.56250000000000
4.53125000000000
4.54687500000000
4.55468750000000
4.55078125000000
4.55273437500000
4.55175781250000
4.55224609375000
4.55249023437500
4.55236816406250
4.55230712890625

4.55227661132813
4.55229187011719
4.55228424072266
4.55228042602539
4.55228233337402
4.55228328704834

MELHOR APROXIMAO OBTIDA DENTRO DA TOLERNCIA FIXADA


OBSERVAMOS QUE O CRITRIO DE PARADA FOI A TOLERNCIA FIXADA PARA O ERRO E NO O
NMERO MXIMO DE ITERAES QUE FOI FIXADO EM 30.

n=
20

N DE ITERAES REALIZADAS

err =
9.536743164062500e-007 ERRO EM X
Agora o clculo do erro cometido em y:
>> x=c;err=abs(x.^5-1955)
err =
0.00162325483052
ERRO EM f(X)
Observamos que o erro em y grande, ou seja, a imagem de c pela f no deu um valor bem prximo
de 0. Qto mais prximo de 0 der o valor mais prximo da raiz estar o valor de x=c encontrado.
Agora s colocar estes dados na tabela.
Segundo: Mtodo de newton-Raphson
A exemplo do mtodo anterior ser usado aqui o programa nr3. Tb aconselhvel comear por:
>> help nr3
Assim possvel identificar os elementos de entrada e os de sada, bem como a forma de se digitar
para que o programa rode.
O programa solicita a derivada da funo. Para isto faamos:
>> syms x
>> f=x^5-1955
f=
x^5-1955
>> df=diff(f)
df =
5*x^4
>> f=vectorize(f),df=vectorize(df)
f=
x.^5-1955
df =
5.*x.^4
FUNO DERIVADA DA F, J VETORIZADA.
>> c=4.6;
%um valor inicializador dentro do intervalo [4; 5]
>> tol=1e-6;N=30; %mesmos valores que foram utilizados no mtodo da bisseco
>> [c,C,n,err]=nr3(f,df,c,N,tol)
c=
4.55228404300949

C=
4.60000000000000
4.55326374619873
4.55228446451447
4.55228404300949

MELHOR APROXIMAO OBTIDA DENTRO DA TOLERNCIA FIXADA


OBSERVAMOS QUE O CRITRIO DE PARADA FOI A TOLERNCIA FIXADA PARA O ERRO E NO O
NMERO MXIMO DE ITERAES QUE FOI FIXADO EM 30.
n=
N DE ITERAES REALIZADAS

3
OBSERVAMOS QUE O NMERO DE ITERAES FOI 3, MAS O NMERO DE APROXIMAES
FORNECIDAS 4, POIS O PROGRAMA COLOCA O VALOR INICIALIZADOR JUNTO COM AS DEMAIS
APROXIMAES.

err =
1.684838935034350e-010 ERRO EM f(X)
Agora o clculo do erro cometido em x, que |x4 x3|, j que o programa no fornece este valor:
>> err=abs(C(4)-C(3))
%Como o vetor C acima contm as informaes, basta buscar o 4 e o 3 elemento do vetor C para
fazer as contas. Aqui tem tb a vantagem de que internamente o MATLAB trabalha com preciso
dupla e reserva as demais casas decimais para este clculo, produzindo resultados mais confiveis.
err =
4.215049766997936e-007 ERRO EM X
Agora s colocar estes dados na tabela.
Terceiro: Mtodo da Secante
Analisando os programas que aplicam este mtodo, optamos pelo de nome secant, pois os demais
precisam ter a funo definida inline ou em m-file. Primeiro vamos ver o que o programa fornece e
como se digita na tela para que ele rode fazendo:
>> help secant

f(x)

Agora vamos fazer este programa rodar:


>> secant
Entre com a expresso de f(x) entre aspas : 'x.^5-1955'
Entre com o valor do extremo inferior do intervalo que contm o zero : 4
Entre com o valor do extremo superior do intervalo que contm o zero : 5
Entre com um valor inicializador no intervalo que contm o zero : 4.6
Entre com outro valor inicializador no intervalo que contm o zero : 4.8
Entre com o valor da tolerncia em y na representao y=f(x) : 1e-6
Convergncia pelo mtodo da secante
secant =
4.80000000000000
1000
4.60000000000000
4.55715494066951
500
4.55238498312852
4.55228425878344
21 0
0
0
4.55228404301898
-500

Observamos que nenhum dado, exceto


a melhor aproximao obtida, foi fornecido 4
4.2
4.4
4.6
4.8
pelo programa. Mas, com os dados obtidos podemos buscarxo que falta.
1) Melhor aproximao obtida: 4.55228404301898

%ltimo valor do vetor acima

2) N de iteraes realizadas: 4
% Os dois primeiros valores so os fornecidos pelo usurio e no valores obtidos nas iteraes.
3) Erro em X:
>> erx=abs(4.55228404301898-4.55228425878344)
%copiei e colei os valores, pois no d
para chamar como feito no mtodo de Newton-Raphson j que no fica definido um vetor de sada.
erx =
2.157644605205178e-007
4) Erro em Y (ou f(x4)):
>> x=4.55228404301898;ery=abs(x^5-1955)
ery =
2.053661773970816e-008
Agora s colocar estes dados na tabela.
Analisando e comparando os resultados, podemos concluir que, neste exemplo, o mtodo de
Newton-Raphson foi o que forneceu a melhor aproximao, pois o valor que tem imagem mais
prxima de 0. Alm disso foi o que realizou menos iteraes, mostrando que a convergncia deste
mtodo para a soluo mais rpida que nos outros dois.
(Lembremos que no valor exato do zero da funo a imagem 0. Esta a razo da afirmao
anterior.)
Para obter os mesmos resultados, sem utilizar programas prontos, ou seja, digitando tudo na tela do
MATLAB, basta seguir os passos descritos, por colegas, no item histrico da sala de bate papo na
pgina da disciplina do portal UCSvirtual.

S-ar putea să vă placă și