<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial'; COLOR: #000000">
<DIV>Romero,</DIV>
<DIV> </DIV>
<DIV>A função curve não serve não seu caso porque vc tem um vetor na sua função.
Compare os gráficos</DIV>
<DIV> </DIV>
<DIV>xi=seq(1.8,2.1,length.out=180)</DIV>
<DIV>fi=vector()</DIV>
<DIV>for (i in 1:length(xi))fi[i]=fx0(xi[i])</DIV>
<DIV>fyt=curve(fx0, 1.5, 2.5,n=length(xi))</DIV>
<DIV>plot(xi,fi,type="l")</DIV>
<DIV>cbind(xi,fi,fyt$x,fyt$y)</DIV>
<DIV>xi[which.min(fi)] </DIV>
<DIV> </DIV>
<DIV>Para seu código não dar erro tem que definir x primeiro como vetor e depois
atribuir o valor inicial</DIV>
<DIV>x <- vector()</DIV>
<DIV>x <- 1.6</DIV>
<DIV> </DIV>
<DIV>Logo seu código roda mas não para a função específica que vc quer, não
pesquisei porque, mesmo aumentando o nº de passos a 500. Pode ser que exista um
probelma mas derivadas, pois elas não aproximan da solução. O algoritmo em si
aparentemente funciona, teste com </DIV>
<DIV> </DIV>
<DIV>#Aproximação da raiz de 5</DIV><SPAN class=Apple-style-span
style="FONT-FAMILY: ; WHITE-SPACE: pre-wrap; WORD-SPACING: 0px; BORDER-COLLAPSE: separate; TEXT-TRANSFORM: none; COLOR: ; ORPHANS: 2; WIDOWS: 2; LETTER-SPACING: normal; LINE-HEIGHT: 17px; TEXT-INDENT: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><PRE tabIndex=0 id=rstudio_console_output class=GAKS5OJBBCB style="BORDER-TOP-STYLE: none; FONT-FAMILY: ; WHITE-SPACE: pre-wrap !important; BORDER-BOTTOM-STYLE: none; WORD-BREAK: break-all; BORDER-RIGHT-STYLE: none; OUTLINE-STYLE: none; MARGIN: 0px; BORDER-LEFT-STYLE: none; OUTLINE-COLOR: ; LINE-HEIGHT: 1.2; -webkit-user-select: text"><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text"><FONT face="Lucida Console"><FONT style="FONT-SIZE: 11pt; BACKGROUND-COLOR: #e1e2e5" color=#0000ff>> </FONT></FONT></SPAN><FONT style="FONT-SIZE: 11pt"><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">f=function(x){(x^3)/3-5*x}
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">df=function(x){x^2 - 5}
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">ddf=function(x){2*x}
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text"><FONT style="BACKGROUND-COLOR: #e1e2e5" color=#0000ff face="Lucida Console">> </FONT></SPAN><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">ns=110
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">tol=10^-9
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text"><FONT style="BACKGROUND-COLOR: #e1e2e5" color=#0000ff face="Lucida Console">> </FONT></SPAN><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">i=1
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">x=vector()
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">x=12.5
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">dif=100
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">> </SPAN></FONT></FONT></FONT><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text"><FONT style="BACKGROUND-COLOR: #e1e2e5" color=#0000ff face="Lucida Console">> </FONT></SPAN><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: ">while(i<ns & dif>tol){
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">+ </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: "> x[i+1] <- x[i]-df(x[i])/ddf(x[i])
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">+ </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: "> dif <- abs(x[i+1]-x[i])
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">+ </SPAN></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: "> i <- i+1
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">+ </SPAN></FONT></FONT></FONT></FONT><FONT face="Lucida Console"><FONT color=#0000ff><FONT style="BACKGROUND-COLOR: #e1e2e5"><FONT style="FONT-SIZE: 11pt"><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: "> print(c(i,x[i]))
</SPAN><SPAN class="GAKS5OJBFCB ace_keyword" style="WHITE-SPACE: pre; COLOR: ; -webkit-user-select: text">+ </SPAN></FONT><SPAN class="GAKS5OJBIBB ace_keyword" style="COLOR: "><FONT style="FONT-SIZE: 11pt">}</FONT></SPAN></FONT></FONT></FONT></PRE></SPAN>
<DIV></DIV>
<DIV
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV style="FONT: 10pt tahoma">
<DIV><FONT face=Arial></FONT> </DIV><SPAN class=Apple-style-span
style="FONT-FAMILY: ; WHITE-SPACE: pre-wrap; WORD-SPACING: 0px; BORDER-COLLAPSE: separate; TEXT-TRANSFORM: none; COLOR: ; ORPHANS: 2; WIDOWS: 2; LETTER-SPACING: normal; LINE-HEIGHT: 17px; TEXT-INDENT: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><PRE tabIndex=0 id=rstudio_console_output class=GAKS5OJBBCB style="BORDER-TOP-STYLE: none; FONT-FAMILY: ; WHITE-SPACE: pre-wrap !important; BORDER-BOTTOM-STYLE: none; WORD-BREAK: break-all; BORDER-RIGHT-STYLE: none; OUTLINE-STYLE: none; MARGIN: 0px; BORDER-LEFT-STYLE: none; OUTLINE-COLOR: ; LINE-HEIGHT: 1.2; -webkit-user-select: text"><FONT face="Lucida Console"><FONT style="FONT-SIZE: 11pt; BACKGROUND-COLOR: #e1e2e5">[1] 2.00 6.45
[1] 3.000000 3.612597
[1] 4.000000 2.498321
[1] 5.000000 2.249833
[1] 6.00000 2.23611
[1] 7.000000 2.236068
[1] 8.000000 2.236068</FONT></FONT></PRE></SPAN>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=beniltoncarvalho@gmail.com
href="mailto:beniltoncarvalho@gmail.com">Benilton Carvalho</A> </DIV>
<DIV><B>Sent:</B> Wednesday, June 25, 2014 1:43 PM</DIV>
<DIV><B>To:</B> <A title=r-br@listas.c3sl.ufpr.br
href="mailto:r-br@listas.c3sl.ufpr.br">r-br</A> </DIV>
<DIV><B>Subject:</B> Re: [R-br]Ajuda com método de Newton Raphson!!
Urgente!!!</DIV></DIV></DIV>
<DIV> </DIV></DIV>
<DIV
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>
<DIV dir=ltr>alem disso, o 'x' eh definido inicialmente como escalar e depois
usado como vetor. b</DIV>
<DIV class=gmail_extra><BR><BR>
<DIV class=gmail_quote>Em 25 de junho de 2014 10:54, Rodrigo Coster <SPAN
dir=ltr><<A href="mailto:rcoster@gmail.com"
target=_blank>rcoster@gmail.com</A>></SPAN> escreveu:<BR>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<DIV dir=ltr>O problema está no chute inicial, pq a tua função [aparentemente]
não é definida no ponto x = 0. Colocando qualquer outro valor da certo (apesar
deu achar que o algoritmo ta errado, pq sempre converge pra um valor perto do
chute inicial, seja qual for ele)
<DIV class=gmail_extra><BR><BR>
<DIV class=gmail_quote>2014-06-25 10:16 GMT-03:00 Manoel Galdino <SPAN
dir=ltr><<A href="mailto:mcz.fea@gmail.com"
target=_blank>mcz.fea@gmail.com</A>></SPAN>:
<DIV>
<DIV class=h5><BR>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<DIV dir=ltr>Confesso que fiquei com preguiça de olhar o seu código. Mas
tente o seguinte para descobrir qual é o erro:
<DIV> </DIV>
<DIV>1. Adicione um print(i) no loop para saber em que passo do loop dá o
erro.</DIV>
<DIV>2. Em seguida, rode <SPAN
style="FONT-SIZE: 13px; FONT-FAMILY: arial,sans-serif">i < 100 & dif
> tol e veja se retorna um True ou False.</SPAN></DIV>
<DIV><SPAN style="FONT-SIZE: 13px; FONT-FAMILY: arial,sans-serif">3. Não
retornando, veja o conteúdo de dif e tol.</SPAN></DIV>
<DIV><SPAN
style="FONT-SIZE: 13px; FONT-FAMILY: arial,sans-serif"><BR></SPAN></DIV>
<DIV><FONT face="arial, sans-serif">Por fim, vendo o erro (NaN, ou seja, Not
a Number), em algum momento você pode estar fazendo alguma operação
proibida.</FONT></DIV>
<DIV><FONT face="arial, sans-serif">Por exemplo, se você rodar no R 0 / 0,
ele dá NaN. Isso pode acontecer no seu código, por exemplo, por um problema
de aritimética de ponto flutuante. Como tol é inicializado como 10^-9,
dependendo das operações que você faz, o R vai aproximar o valor pra zero e
vai acontecer uma divisão pro zero, e vai retornar um NaN. E aí, na condição
do while, algo como x > NaN dá um NA (ao invpés de T ou F), dando o seu
erro. Enfim, estou especulando apenas com base no erro.</FONT></DIV>
<DIV><FONT face="arial, sans-serif"><BR></FONT></DIV>
<DIV><FONT face="arial, sans-serif"><BR></FONT></DIV>
<DIV><FONT face="arial, sans-serif">Abcs</FONT></DIV>
<DIV><FONT face="arial, sans-serif"><BR></FONT></DIV>
<DIV><FONT face="arial, sans-serif">M</FONT></DIV></DIV>
<DIV class=gmail_extra><BR><BR>
<DIV class=gmail_quote>2014-06-25 1:09 GMT-03:00 Romero Luiz M. Sales Filho
<SPAN dir=ltr><<A href="mailto:romero.sfilho@gmail.com"
target=_blank>romero.sfilho@gmail.com</A>></SPAN>:<BR>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<DIV>
<DIV>
<DIV dir=ltr>Caros amigos,
<DIV> </DIV>
<DIV>por gentileza alguém poderia me auxiliar nesse programa!!</DIV>
<DIV> </DIV>
<DIV>Estou tentando obter a raiz de uma função utilizando o método de
Newton, entretanto o R dá um erro e não consigo obter o valor da raiz...
Alguém poderia me alertar sobre o que estou errando?</DIV>
<DIV> </DIV>
<DIV>Segue o códio completo:</DIV>
<DIV> </DIV>
<DIV>
<DIV>#fornecendo os parâmetros</DIV>
<DIV>n<-100</DIV>
<DIV>u<-runif(n)</DIV>
<DIV>q<-1.5</DIV>
<DIV>theta<-2</DIV>
<DIV>#Obtendo valores da variável Y</DIV>
<DIV>y = (1/(theta*(q-2)))*((u^((1-q)/(2-q))-1)/((1-q)/(2-q)))</DIV>
<DIV>###função que quero obter a raiz</DIV>
<DIV>f <-
quote((n/x)-((n*sum(y/(1+x*y)))/sum(log(1+x*y)))-sum(y/(1+x*y)))</DIV>
<DIV>fx0 <- function(x){ eval(f) }</DIV>
<DIV>curve(fx0, 2, 10)</DIV>
<DIV>### primeira derivada da função</DIV>
<DIV>f1
<-quote((n*(sum(y/(1+x*y)))^2/(sum(log(1+x*y)))^2)-sum(-(y^2/(1+x*y)^2))-(n*sum(-(y^2/(1+x*y)^2))/sum(log(1+x*y)))-(n/x^2))</DIV>
<DIV>fx1 <- function(x){ eval(f1) }</DIV>
<DIV>curve(fx1, 0, 10, col=2) </DIV>
<DIV>###segunda derivada da função</DIV>
<DIV>f2
<-quote((2*n/x^3)-sum(2*y^3/(1+x*y)^3)-(n*sum(2*y^3/(1+x*y)^3)/sum(log(1+x*y)^3))+(3*n*sum(-(y^2/(1+x*y)^2))*sum(y/(1+x*y))/(sum(log</DIV>
<DIV> </DIV>
<DIV>(1+x*y)))^2)-(2*n*(sum(y/1+x*y))^3/(sum(log(1+x*y)))^3))</DIV>
<DIV>fx2 <- function(x){ eval(f2) } </DIV>
<DIV> </DIV>
<DIV>#aplicando o newton-raphson</DIV>
<DIV># valor inicial para o passo</DIV>
<DIV>i <- 1 </DIV>
<DIV># valor inical para a diferença entre duas avaliações</DIV>
<DIV>dif <- 100 </DIV>
<DIV># diferência mínima entre duas avaliações (tolerância)</DIV>
<DIV>tol <- 10^-9 </DIV>
<DIV># número máximo de passos</DIV>
<DIV>dif <- 100 </DIV>
<DIV># valor inicial para a raiz</DIV>
<DIV>x <- 0 </DIV>
<DIV>while(i<100 & dif>tol){</DIV>
<DIV> x[i+1] <- x[i]-fx1(x[i])/fx2(x[i])</DIV>
<DIV> dif <- abs(x[i+1]-x[i])</DIV>
<DIV> i <- i+1</DIV>
<DIV> print(x[i])</DIV>
<DIV>}</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>No final estou tendo o seguinte erro:</DIV>
<DIV> </DIV>
<DIV>
<DIV>[1] NaN</DIV>
<DIV>Erro em while (i < 100 & dif > tol) { : </DIV>
<DIV> valor ausente onde TRUE/FALSE necessário</DIV></DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Alguém pode me ajudar??</DIV>
<DIV>Obrigado,</DIV>
<DIV> </DIV>
<DIV>Romero.<BR></DIV></DIV></DIV>
<DIV> </DIV></DIV></DIV>_______________________________________________<BR>R-br
mailing list<BR><A href="mailto:R-br@listas.c3sl.ufpr.br"
target=_blank>R-br@listas.c3sl.ufpr.br</A><BR><A
href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br"
target=_blank>https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</A><BR>Leia
o guia de postagem (<A href="http://www.leg.ufpr.br/r-br-guia"
target=_blank>http://www.leg.ufpr.br/r-br-guia</A>) e forneça código
mínimo reproduzível.<SPAN><FONT
color=#888888><BR></FONT></SPAN></BLOCKQUOTE></DIV><SPAN><FONT
color=#888888><BR></FONT></SPAN></DIV></BLOCKQUOTE></DIV></DIV></DIV></DIV></DIV></BLOCKQUOTE></DIV></DIV></DIV></DIV></DIV></BODY></HTML>