
Boa Tarde, Eu estou fazendo um fit nâo linear com um polinômio. Porém, a fiunção que eu estou usando : y= - {[a*(x^(2*n)) + b]/[(x-186)(x+186)]} apresenta duas assíntotas em +- 186 e por isso dá um erro no fit: Erro em numericDeriv(form[[3l]], names(ind), env): obtido valor faltante ou infinito quando avaliando o modelo. Pelo que eu entendi, o motivo é que a derivada também possui assíntotas nestes mesmo postos e daí na função vai para o infinito. Eu fiz D( (-(a*(x^(2*n)) + b)/((x-186)(x+186))), "x") e a mensagem de erro foi: Erro em x^(2*n)argumento não numérico para operador binário. Aí eu pensei que era por causa do n e deixei então só o x^2 e o erro foi o mesmo. Eu procurei na internet e não achei nada que explicasse o que está querendo dizer. O que seria um operador binário? Voltando às assintotas, eu achei uma função chamada ‘NLSstAsymptotic(xy)’ que é para assintotas verticais em gráficos mas eu tentei emplementá-la e nâo deu certo. Tem outra função que eu possa usar para que o fit seja feito mesmo que a função usada para o fit apresente singularidades? Abaixo está o código: file <- read.table(file="/Users/bau/Desktop/teste/DISparam.txt", col.names=c('x','y')) plot(x=file$x, y=file$y, xlab='Valores de x', ylab='Valores de y', lwd=0.5,) dados <- data.frame(x=file$x,y=file$y) #chute inicial guess <- list(a=1, b=3, n=3) # funcao usada para o fit # func <- function(x,n, a, b){ y <- (-(a*(x^(2*n)) +b)/((x-186)*(x+186))) return(y) } #executa o fit e armazena resultado na variavel 'fit' fit <- nls(y ~ func(x,n,a,b), data=dados, start=guess, lower=-200, upper=200) fit summary(fit) #gera valores de y a partir do resultado do fit, para plotar #o resultado no mesmo grafico que os dados yfit <- predict(fit) #plota a linha do fit lines(dados$x, yfit, col='blue',lwd=2) #carrega os parametros param <- coef(fit) Obrigada, Michelle