rodrigoalmeida Postado Setembro 17, 2010 Denunciar Share Postado Setembro 17, 2010 (editado) Boa tarde galera... estou precisando fazer um trabalho de cálculo numérico.Preciso achar a raiz ou raizes da função: Y=X³-7X+6 pelos 3 métodos (Bissecção, Secante e Newton-Raphson)Preciso fazer o programa em OCTAVE separadosSerá que alguém sabe fazer???Para SecanteXo=1.6X1=1.8Para Newton RaphsonXo=1.8E para BissecçãoXo=1.5H=0.3 Editado Setembro 17, 2010 por rodrigoalmeida Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 John Doe Postado Dezembro 1, 2010 Denunciar Share Postado Dezembro 1, 2010 (editado) Provavelmente já não é mais de nenhuma ajuda, mas...Desses aí eu só conheço Newton. Ele é bem simples do ponto de vista matemático, mas exige um conhecimento razoável de análise (ou cálculo). Sugiro o livro do Elon, Análise vol. 1, para entender as sutilezas do método (demonstração de que funciona e de que as aproximações convergem quadraticamente p/ a raíz). Para uma visão menos rigorosa do método: http://pt.wikipedia.org/wiki/M%C3%A9todo_de_NewtonEle se baseia na diferenciabilidade da função e em algumas outras hipóteses importantes. Mãos à obra. Seja Y = x^3-7x+6 := f(x) .......(1)Então f'(x)=3x^2 - 7 ................(2)(observe que eu estou calculando analiticamente a derivada, mas eventualmente isso não será possível e você terá que usar uma aproximação)O que você quer é uma sequencia de pontos x_n que convirja para um número x tal que f(x)=0. Vamos usar o fato de que f(x+h)=f(x)+hf'(x)+O(h^2). (Notação de Landau)Seja X0 = 1.8. Seria ideal que eu pudesse achar um ΔX0 tal que X1 = X0+ΔX0 fizesse f se anular, isto é, f(X1) = f(X0+ΔX0) = 0. É claro que eu não posso usar a própria função (senão estaria roubando, resolvendo explicitamente o polinômio). O que eu vou fazer é usar a aproximação linear, cometendo um abuso de notação (qual seja, usar f para a função e para a aproximação linear): f(X0+ΔX0) = f(X0)+ΔX0 * f'(X0) = 0 ==> ΔX0 = -f(X0)/f'(X0)Logo o próximo termo da seqüência será X1 = X0+ΔX0 = X0-f(X0)/f'(X0)Analogamente (faça as contas, estou com preguiça), se eu já tiver definido Xk, o X(k+1) deverá ser:X(k+1) = Xk - f(Xk)/f'(Xk)Para fazer o algoritmo, basta subsituir as expressões (1) e (2) na linha acima. É claro, em algum momento o algoritmo tem que parar. Você pode fazer com que ele pare com um número pré-determinado de passos.Em pseudocódigo: declara real X, X0; declara inteiro numero_passos; numero_passos <- 500; X0 <- 1.8; X<-X0; *comentário: essa é uma variável que vai armazenar os valores sucessivos da seqüência* para k=1 até k=numero_passos faça: X<- X - Poli(X)/DerivadaPoli(X); fim para imprime "A raíz encontrada foi: "; imprime X; função Poli(real Z) declara real Y; Y<- Z^3 - 7*Z + 6; retorna Y; fim função função DerivadaPoli(real Z) declara real Y; Y<-2*Z^2 - 7 retorna Y; fim função Editado Dezembro 1, 2010 por John Doe Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rodrigoalmeida
Boa tarde galera... estou precisando fazer um trabalho de cálculo numérico.
Preciso achar a raiz ou raizes da função: Y=X³-7X+6 pelos 3 métodos (Bissecção, Secante e Newton-Raphson)
Preciso fazer o programa em OCTAVE separados
Será que alguém sabe fazer???
Para Secante
Xo=1.6
X1=1.8
Para Newton Raphson
Xo=1.8
E para Bissecção
Xo=1.5
H=0.3
Editado por rodrigoalmeidaLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.