zhangwei1988
想用已知数据补值,到收敛后结束,但不知道错在哪里了。呵呵,程序很低级,请前辈们帮助一下
data;
ARRAY a1(100000) _TEMPORARY_;
ARRAY a2(100000) _TEMPORARY_;
ARRAY a3(100000) _TEMPORARY_;
ARRAY a4(100000) _TEMPORARY_;
ARRAY a5(100000) _TEMPORARY_;
ARRAY x1(100000) _TEMPORARY_;
ARRAY x2(100000) _TEMPORARY_;
ARRAY x3(100000) _TEMPORARY_;
ARRAY x4(100000) _TEMPORARY_;
a1(1)=0.65;
a2(1)=0.35;
a3(1)=0.3;
a4(1)=0.7;
a5(1)=0.7;
x5=40;
x6=38;
x7=176;
x8=118;
i=2;
n=117;
DO
while
(max(abs(a1(i)-a1(i-1)),abs(a2(i)-a2(i-1)),abs(a3(i)-a3(i-1)),abs(a4(i)-a4(i-1)),abs(a5(i)-a5(i-1)))>0.0001);
x1(i)=n*(1-a1(i-1))*(1-a3(i-1))*(1-a5(i-1))/(1-a1(i-1)+a1(i-1)*a5(i-1)-a2(i-1)*a5(i-1));
x2(i)=n*(1-a1(i-1))*a3(i-1)*(1-a5(i-1))/(1-a1(i-1)+a1(i-1)*a5(i-1)-a2(i-1)*a5(i-1));
x3(i)=n*(1-a2(i-1))*(1-a4(i-1))*a5(i-1)/(1-a1(i-1)+a1(i-1)*a5(i-1)-a2(i-1)*a5(i-1));
x4(i)=n*(1-a2(i-1))*a4(i-1)*a5(i-1)/(1-a1(i-1)+a1(i-1)*a5(i-1)-a2(i-1)*a5(i-1));
a1(i)=(x5+x6)/(x5+x6+x1(i)+x2(i));
a2(i)=(x7+x8)/(x7+x8+x3(i)+x4(i));
a3(i)=(x2(i)+x6)/(x5+x6+x1(i)+x2(i));
a4(i)=(x4(i)+x8)/(x7+x8+x3(i)+x4(i));
a5(i)=(x3(i)+x4(i)+x7+x8)/n;
i=i+1;
end;
put a1(i)= a2(i)= a3(i)= a4(i)= a5(i)= ;
run;