nlsçæ°æ®æºå¿
é¡»æ误差ãä¸è½ç²¾ç¡®çäºå
¬å¼è¿åå¼ï¼é¶æ®å·®ï¼ã循ç¯æ¬¡æ°å¤§äº50é常æ¯ä½¿ç¨ å½æ°ç²¾ç¡®è¿åå¼ ä½ä¸ºæ°æ®æºå»æåå½æ°ãå¿
é¡»ç»yå¼å ä¸éæºè¯¯å·®ã
z=function(x,a,b){a*sin(x)+b*cos(x)}
x=seq(1,10,9/500)
y=z(x,1,1) # a=1 b=1 æ¯æææååºçç»æã
cor=data.frame(x=x,y=y)
cor$res=runif(length(cor$x),min=-0.005,max=0.005)
cor$yres=cor$y+cor$res
#yres =yå ä¸éæºè¯¯å·®ï¼yæ¯ç²¾ç¡®è¿åå¼
> nls(cor$yres~z(cor$x,a,b),data=cor,start=list(a=0.8,b=1.3))
Nonlinear regression model
model: cor$yres ~ z(cor$x, a, b)
data: cor
a b
0.9999 1.0002
residual sum-of-squares: 0.004213
Number of iterations to convergence: 1
Achieved convergence tolerance: 2.554e-07
#使ç¨ç²¾ç¡®è¿åå¼æåå°±ä¼åºéã
> nls(cor$y~z(cor$x,a,b),data=cor,start=list(a=1,b=1))
Error in nls(cor$y ~ z(cor$x, a, b), data = cor, start = list(a = 1, b = 1)) :
循ç¯æ¬¡æ°è¶
è¿äº50è¿ä¸ªæ大å¼