為了看著舒服,把妳的i替換成了x。為了提高計算效率,方程做了變換,具體的看下面推導
可以采用不動點叠代法。即選定壹個初值(這裏選初值為0),代入等式右端,得到壹個新的x值,再代入又得到壹個x,不停的重復,直到達到精度要求。
matlab代碼如下:
tic
x = 0 ;
kmax=1000;
for kk = 1:kmax
xt=1/(1+x) ; % (x+1)^(i-1) ;
S=0; % sum[(x+1)^(i-1)]
iS=0; % sum(1/S) ;
for i=1:20
xt = xt*(x+1) ;
S = S + xt ;
iS = iS + 1/S ;
end
x_new = (1.26/1.2 - iS)/20 ;
if( abs(x_new-x) < 1E-12 )
disp(' ')
info = sprintf('叠代收斂!***叠代%d次\nx=%.13f',kk,x_new);
disp(info)
disp(' ')
break;
end
x = x_new ;
end
if( kk == kmax )
disp(' ')
disp('叠代失敗')
disp(' ')
end
toc
matlab計算結果:
叠代收斂!***叠代151次
x=-0.4087705455543
Elapsed time is 0.001385 seconds.
兄弟,這個問題看起來簡單,解決起來很需要有數學基礎和編程基礎,分太少了,別人都不願意幹。我剛好早起閑了,給妳搭把手。再加點分比較合理。