<div dir="ltr">Caros amigos, <div><br></div><div>por gentileza alguém poderia me auxiliar nesse programa!!</div><div><br></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><br></div><div>Segue o códio completo:</div><div><br></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><br></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><br></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><br></div><div><br></div><div>No final estou tendo o seguinte erro:</div><div><br></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><br></div><div><br></div><div><br></div><div>Alguém pode me ajudar??</div><div>Obrigado,</div><div><br></div><div>Romero.<br></div>
</div></div>