Caros amigos,por gentileza alguém poderia me auxiliar nesse programa!!
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?Segue o códio completo:#fornecendo os parâmetrosn<-100u<-runif(n)q<-1.5theta<-2#Obtendo valores da variável Yy = (1/(theta*(q-2)))*((u^((1-q)/(2-q))-1)/((1-q)/(2-q)))###função que quero obter a raizf <- quote((n/x)-((n*sum(y/(1+x*y)))/sum(log(1+x*y)))-sum(y/(1+x*y)))fx0 <- function(x){ eval(f) }curve(fx0, 2, 10)### primeira derivada da funçãof1 <-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))fx1 <- function(x){ eval(f1) }curve(fx1, 0, 10, col=2)###segunda derivada da funçãof2 <-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(1+x*y)))^2)-(2*n*(sum(y/1+x*y))^3/(sum(log(1+x*y)))^3))fx2 <- function(x){ eval(f2) }#aplicando o newton-raphson# valor inicial para o passoi <- 1# valor inical para a diferença entre duas avaliaçõesdif <- 100# diferência mínima entre duas avaliações (tolerância)tol <- 10^-9# número máximo de passosdif <- 100# valor inicial para a raizx <- 0while(i<100 & dif>tol){x[i+1] <- x[i]-fx1(x[i])/fx2(x[i])dif <- abs(x[i+1]-x[i])i <- i+1print(x[i])}No final estou tendo o seguinte erro:[1] NaNErro em while (i < 100 & dif > tol) { :valor ausente onde TRUE/FALSE necessárioAlguém pode me ajudar??Obrigado,Romero.
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.