
这个是方程组,求解的是均值和标准差
我的程序是这样的
x<-rnorm(100,0,1)
n<-length(x)
funs<-function(x){
f<-c(sum(x-x[1])/x[2]^2,(-n/2*x[2]^2)+sum((x-x[1])^2)/2*x[2]^4)
J<-matrix(c(-n/x[2]^2,-2*sum(x-x[1])/x[2]^3,-sum(x-x[1])/x[2]^4,(n/x[2]^3)-2*sum((x-x[1])^2)/x[2]^5),nrow=2,byrow=T)
list(f=f,J=J)
}
Newtons<-function(fun,x,ep=1e-5,it_max=2000){
index<-0;k<-1
while(k<=it_max){
x1<-x;obj<-fun(x);x<-x-solve(obj$J,obj$f);
norm<-sqrt((x-x1)%*%(x-x1))
if(norm<ep){
index<-1;break
}
k<-k+1
}
obj<-fun(x);
list(root=f,it=k,index=index,FunVal=obj$f)
}
Newtons(funs,c(1,1))
但是每次都出现这个结果Error in solve.default(obj$J, obj$f) :
system is computationally singular: reciprocal condition number = 6.3691e-34
求大神解答是哪里出问题了?