下面程序1, 是单独求解超越方程,要求求出 V=0.01,I=? V=0.02,I=? 。。。。。V=0.58,I=?
            需要运行58次。代码如下:

syms I I1 ;
q=1.60*10^(-19);
k=1.38*10^(-23);
T=300;
Iph=3.6;
n=1.96;
I0=3.86*10^(-5);
Rsh=15.29;
a=2.0*10^(-3);
Vbr=-21.29;
nn=3;
Rs=0.008;
m=1;
V=0.01; 
f=I-(Iph-I0*(exp(q*(V/m+Rs*I)/(n*k*T))-1)-(V/m+Rs*I)/Rsh-a*(V/m+Rs*I)*(1-(V/m+Rs*I)/Vbr)^(-nn));
df=diff(f,I); 
eps=1e-6; 
I0=0; 
cnt=0; 
j=1;
maxcnt=200; 
for j=1:200;
I1=I0-subs(f,I,I0)/subs(df,I,I0);
if (abs(I1-I0)<=eps) break; 
end 
I0=I1;  
cnt=cnt+1; 
end  

下面程序2, 是循环求解超越方程,要求求出 V=0.01,I=? V=0.02,I=? 。。。。。V=0.58,I=?
            需要运行58次。代码如下:



q=1.60*10^(-19);
k=1.38*10^(-23);
T=300;
Iph=3.6;
n=1.96;
I0=3.86*10^(-5);
Rsh=15.29;
a=2.0*10^(-3);
Vbr=-21.29;
nn=3;
Rs=0.008;
m=1;
%Vmax=0.5810; 


for s=1:58;
V=s*0.01;
I0=0; 

syms I I1 ;
f=I-(Iph-I0*(exp(q*(V/m+Rs*I)/(n*k*T))-1)-(V/m+Rs*I)/Rsh);
df=diff(f,I); 
eps=1e-6; 
cnt=0; 
maxcnt=200; 
for j=1:200;    
I1=I0-subs(f,I,I0)/subs(df,I,I0);
if (abs(I1-I0)<=eps) break; end
I0=I1;  
cnt=cnt+1; 
end

X(s)=V;
Y(s)=I0;

end


正确的结果是:
x=[0.1 0.5 1.0 1.5 2.0 2.5 2.5 3.0 3.5 4.0 4.5 5.0 5.8];
y=[3.5973 3.5953 3.5938 3.5909 3.5867 3.5811 3.5719 3.5529 3.5079 3.3957 3.1176 2.4741 0.0094654];
plot(x,y)

请大家帮忙修改程序2的错误啊。谢谢。