全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
11466 4
2014-03-02
()W41}OD}V$K77U90ERL{3A.jpg 这个是方程组,求解的是均值和标准差
我的程序是这样的
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
求大神解答是哪里出问题了?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-3-6 21:58:24
我把代码写的比较原始,改动的地方有两个:
1.在函数funs里把x[1]和x[2]改成了z[1],z[2],同时将sigma平方做为未知数
2.在函数newtons里把norm改动了一下
复制代码
均值的未知数能得到真实值,但是方差未知数差距很大
迭代一百万次后的结果
复制代码
他们是第一个方程的解,但不是第二个方程的解,估计是设置方程的时候敲错了符号或者其他什么原因
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-6 22:24:46
找到错误了,是公式书写错误,改正后的结果
复制代码
这个可以用了,嘿嘿
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-8 17:35:02
nuomin 发表于 2014-3-6 21:58
我把代码写的比较原始,改动的地方有两个:
1.在函数funs里把x[1]和x[2]改成了z[1],z[2],同时将sigma平方 ...
太感谢您了。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-23 15:07:32
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群