求助!Matlab数据拟合!!!
现有以下数据;V=[0.800686000; 0.797688800 ;0.794662100 ;0.791682700 ;0.788692400 ;0.785631800 ;0.782642700 ;0.779649600 ;0.776658400 ;0.773634500 ;0.770608400 ;0.767583700 ;0.764592600 ;0.761600100 ;0.758607100 ;0.755551300 ;
0.752557500 ;0.749567700 ;0.746543200 ;0.743550300 ;0.740494400 ;0.737500500 ;0.734508800 ;0.731520200 ;0.728526900 ;0.725470600 ;0.722479600 ;0.719454300 ;0.716463000 ;0.713472400 ;0.710413700 ;0.707422300 ;
0.704431500 ;0.701438100 ;0.698413800 ;0.695386700 ;0.692396300 ;0.689372200 ;0.686378500 ;0.683386500 ;0.680331000 ;0.677339100 ;0.674345700 ;0.671898800 ;0.668339100 ;0.665313500 ;0.662289000 ;0.659291900 ;
0.656298200 ;0.653301900 ;0.650242300 ;0.647249300 ;0.644254300 ;0.641227700 ;0.638232900 ;0.635170000 ;0.632174700 ;0.629182300 ;0.626185600 ;0.623191500 ;0.620132400 ;0.617135900 ;0.614111100 ;0.611115300 ;
0.608121000 ;0.605060100 ;0.602064400 ;0.599070200 ;0.596079300 ;0.593050800 ;0.590021800 ;0.587031000 ;0.584000600 ;0.581008400 ;0.578014400 ;0.574952600 ;0.571959400 ;0.568962300 ;0.565967700 ;0.562940800 ;
0.559912400 ;0.556884500 ;0.553892100 ;0.550894300 ;0.547900900 ;0.544843100 ;0.541846000 ;0.538851400 ;0.535825800 ;0.532829300 ;0.529769400 ;0.526776000 ;0.523786200 ;0.520795300 ;0.517801200 ;0.514745200 ;
0.511756300 ;0.508729900 ;0.505738100 ;0.502748500 ;0.499688800 ;0.496697800 ;0.493707700 ;0.490714300 ;0.487723900 ;0.484664900 ;0.481674700 ;0.478650700 ;0.475658600 ;0.472667300 ;0.469611300 ;0.466617200 ;
0.463628100 ;0.460638700 ;0.457612500 ;0.454588700 ;0.451562100 ;0.448571900 ;0.445583400 ;0.442523400 ;0.439533600 ;0.436540800 ;0.433548700 ;0.430523100 ;0.427500600 ;0.424507100 ;0.421483500 ;0.418493600 ;
0.415499800 ;0.412443700 ;0.409450300 ;0.406460100 ;0.403469200 ;0.400443300 ;0.397418500 ;0.394393100 ;0.391397300 ;0.388401400 ;0.385408700 ;0.382345900 ;0.379352900 ;0.376360700 ;0.373332000 ;0.370336700 ;
0.367274600 ;0.364281600 ;0.361286900 ;0.358290400 ;0.355297500 ;0.352237200 ;0.349240900 ;0.346214100 ;0.343221200 ;0.340224900 ;0.337164000 ;0.334170300 ;0.331173200 ;0.328181900 ;0.325153600 ;0.322127300 ;
0.319132700 ;0.316103700 ;0.313109300 ;0.310117800 ;0.307056000 ;0.304060000 ;0.301067500 ;0.298070400 ;0.295042800 ;0.292016300 ;0.288987500 ;0.285993600 ;0.282996100 ;0.280002600 ;0.276944200 ;0.273947700 ;
0.270954100 ;0.267926700 ;0.264930300 ;0.261868500 ;0.258878800 ;0.255886300 ;0.252894600 ;0.249904900 ;0.246845700 ;0.243855600 ;0.240830100 ;0.237839400 ;0.234848300 ;0.231789300 ;0.228798400 ;0.225807800 ;
0.222815300 ;0.219789300 ;0.216767400 ;0.213774800 ;0.210750800 ;0.207761200 ;0.204767100 ;0.201710800 ;0.198717100 ;0.195726800 ;0.192737900 ;0.189712300 ;0.186688900 ;0.183665300 ;0.180671800 ;0.177680200 ;
0.174690800 ;0.171632300 ;0.168640400 ;0.165649500 ;0.162623400 ;0.159632300 ;0.156573600 ;0.153582900 ;0.150591200 ;0.147597200 ;0.144607100 ;0.141551600 ;0.138557600 ;0.135532700 ;0.132542000 ;0.129548400 ;
0.126490300 ;0.123497000 ;0.120501800 ;0.117508100 ;0.114478200 ;0.111451200 ;0.108458800 ;0.105429800 ;0.102436300 ;0.099442140 ;0.096379650 ;0.093383560 ;0.090391850 ;0.087394840 ;0.084367680 ;0.081341680 ;
0.078312740 ;0.075319700 ;0.072322960 ;0.069329410 ;0.066269580 ;0.063273360 ;0.060278580 ;0.057254930 ;0.054260040 ;0.051198720 ;0.048205950 ;0.045208860 ;0.042216660 ;0.039224310 ;0.036161460 ;0.033167410 ;
0.030137120 ;0.027142830 ;0.024149120 ;0.021086020 ;0.018093410 ;0.015098850 ;0.012102870 ;0.009107904 ;0.006050118 ;0.003054052 ;0.000028218];
I=[0.000022170; 0.000060391 ;0.000092656 ;0.000114468 ;0.000145882 ;0.000177919 ;0.000206242 ;0.000236543 ;0.000264223 ;0.000290798 ;0.000320517 ;0.000348174 ;0.000372671 ;0.000400473 ;0.000428759 ;0.000453954 ;
0.000478278 ;0.000504914 ;0.000529936 ;0.000553699 ;0.000579005 ;0.000603208 ;0.000624906 ;0.000649186 ;0.000675537 ;0.000697935 ;0.000719430 ;0.000742973 ;0.000765941 ;0.000787289 ;0.000807017 ;0.000832298 ;
0.000851340 ;0.000869520 ;0.000889667 ;0.000910561 ;0.000927587 ;0.000948090 ;0.000971020 ;0.000988822 ;0.001006179 ;0.001024739 ;0.001042537 ;0.001049928 ;0.001104826 ;0.001096084 ;0.001109957 ;0.001122565 ;
0.001141053 ;0.001156224 ;0.001170985 ;0.001192191 ;0.001197936 ;0.001213948 ;0.001233113 ;0.001248962 ;0.001256424 ;0.001270642 ;0.001289690 ;0.001301432 ;0.001307443 ;0.001328294 ;0.001333911 ;0.001344188 ;
0.001358820 ;0.001374715 ;0.001381275 ;0.001389986 ;0.001406298 ;0.001414513 ;0.001420030 ;0.001434465 ;0.001444633 ;0.001447623 ;0.001456946 ;0.001471757 ;0.001475931 ;0.001481876 ;0.001489237 ;0.001501036 ;
0.001507079 ;0.001516726 ;0.001519890 ;0.001525569 ;0.001535242 ;0.001544224 ;0.001548992 ;0.001554795 ;0.001558401 ;0.001560951 ;0.001568531 ;0.001569040 ;0.001577230 ;0.001584257 ;0.001579521 ;0.001588285 ;
0.001594665 ;0.001598648 ;0.001597910 ;0.001598723 ;0.001611789 ;0.001608683 ;0.001611279 ;0.001621083 ;0.001617247 ;0.001617978 ;0.001630992 ;0.001629048 ;0.001621197 ;0.001630735 ;0.001631443 ;0.001633716 ;
0.001632608 ;0.001631513 ;0.001638578 ;0.001637457 ;0.001639916 ;0.001640147 ;0.001642502 ;0.001643225 ;0.001640862 ;0.001640569 ;0.001654352 ;0.001639609 ;0.001639437 ;0.001649334 ;0.001653935 ;0.001642143 ;
0.001646300 ;0.001656962 ;0.001649667 ;0.001648967 ;0.001656176 ;0.001652271 ;0.001649634 ;0.001650294 ;0.001659280 ;0.001643575 ;0.001643790 ;0.001660614 ;0.001650684 ;0.001649145 ;0.001655144 ;0.001655022 ;
0.001651123 ;0.001657908 ;0.001660902 ;0.001650671 ;0.001650693 ;0.001657912 ;0.001654311 ;0.001650837 ;0.001655519 ;0.001655837 ;0.001654059 ;0.001657195 ;0.001659124 ;0.001656306 ;0.001658513 ;0.001660595 ;
0.001659002 ;0.001653811 ;0.001652468 ;0.001657308 ;0.001662889 ;0.001656830 ;0.001656816 ;0.001659953 ;0.001655882 ;0.001653115 ;0.001662968 ;0.001662440 ;0.001654459 ;0.001659494 ;0.001664422 ;0.001653402 ;
0.001659506 ;0.001664918 ;0.001659425 ;0.001656721 ;0.001668134 ;0.001659404 ;0.001656710 ;0.001662835 ;0.001663132 ;0.001658674 ;0.001662016 ;0.001665098 ;0.001660190 ;0.001655040 ;0.001662993 ;0.001660236 ;
0.001661954 ;0.001666451 ;0.001666241 ;0.001658597 ;0.001661968 ;0.001665240 ;0.001658737 ;0.001664283 ;0.001667779 ;0.001662609 ;0.001657429 ;0.001668107 ;0.001663224 ;0.001662911 ;0.001665239 ;0.001664490 ;
0.001660311 ;0.001669057 ;0.001670082 ;0.001659823 ;0.001665342 ;0.001666219 ;0.001663235 ;0.001661662 ;0.001665709 ;0.001663264 ;0.001655368 ;0.001668168 ;0.001662762 ;0.001660955 ;0.001664314 ;0.001663953 ;
0.001661497 ;0.001666396 ;0.001663320 ;0.001668392 ;0.001664204 ;0.001664440 ;0.001664642 ;0.001666800 ;0.001664963 ;0.001667560 ;0.001663901 ;0.001663138 ;0.001662982 ;0.001668111 ;0.001669576 ;0.001664273 ;
0.001665730 ;0.001672828 ;0.001667605 ;0.001671399 ;0.001671369 ;0.001664195 ;0.001666326 ;0.001667940 ;0.001665284 ;0.001666650 ;0.001670681 ;0.001660645 ;0.001665723 ;0.001666331 ;0.001663260 ;0.001670126 ;
0.001669072 ;0.001668393 ;0.001664734 ;0.001667950 ;0.001665002 ;0.001662553 ;0.001669543 ;0.001671988 ;0.001659379 ;0.001664370 ;0.001670908];
想拟合成 I=B5-B4*[exp(B1*v+B2*I)-1]-B3*v 的形式,我现在利用非线性的最小二乘法写了以下程序,但是结果中B2为负值,让我很郁闷,不知大家有什么好的方法,最好写出程序。我不希望程序结果因初始值的不同而不同。
有谁可以帮我看看程序有没有错误……
B1=1/(0.026*n); %计算B1,
B2=Rs/(0.026*n);%计算B2
B3=1/Rsh;
B4=Iph*exp(-0.8398420/(n*0.026));
B5=Iph;
%上面一段算出的是初值,暂可不看
Date1=-1; %设定前后两次的差值为1,以便下面可以进入
while(Date1<0)
for count1=1:1:5 %这里Count1和Count是指所要求的B1,B2……的个数
for count2=1:1:5
A(count1,count2)=0;
for count3=1:1:267 %这里Count3是指所需拟合数据的个数
FB(1)=-B4*V(count3)*exp(B1*V(count3)+B2*I(count3)); %计算在count3点处,系统差值关于B1的求导值
FB(2)=-B4*I(count3)*exp(B1*V(count3)+B2*I(count3)); %计算在count3点处,系统差值关于B2的求导值
FB(3)=-V(count3); %计算在count3点处,系统差值关于B3的求导值
FB(4)=-exp(B1*V(count3)+B2*I(count3))+1; %计算在count3点处,系统差值关于B4的求导值
FB(5)=1; %计算在count3点处,系统差值关于B5的求导值
A(count1,count2)=A(count1,count2)+FB(count1)*FB(count2);
end
end
end
for count1=1:1:5
b(count1)=0;
for count3=1:1:267 %这里Count3也是指所需拟合数据的个数,可以更改
FB(1)=-B4*V(count3)*exp(B1*V(count3)+B2*I(count3));
FB(2)=-B4*I(count3)*exp(B1*V(count3)+B2*I(count3));
FB(3)=-V(count3);
FB(4)=-exp(B1*V(count3)+B2*I(count3))+1;
FB(5)=1;
Fm=B5-B4*(exp(B1*V(count3)+B2*I(count3))-1)-B3*V(count3)-I(count3);
b(count1)=b(count1)+Fm*FB(count1);
end
end
A;
B=[-b(1) -b(2) -b(3) -b(4) -b(5)]';
X=A\B; %求出各变量的修正值
B11=B1+X(1); %求出各变量的修正后的值
B21=B2+X(2);
B31=B3+X(3);
B41=B4+X(4);
B51=B5+X(5);
L=1; %设定加权值为1
Date2=1;
while(Date2>0)
B12=L*B11+(1-L)*B1; %求出各变量加权后的值
B22=L*B21+(1-L)*B2;
B32=L*B31+(1-L)*B3;
B42=L*B41+(1-L)*B4;
B52=L*B51+(1-L)*B5;
Q1=0;
for m=1:1:267 %求取变量修正后的累加误差平方和,注:这里m也是指所需拟合数据的个数,可以更改
Fm=B52-B42*(exp(B12*V(m)+B22*I(m))-1)-B32*V(m)-I(m);
Q1=Q1+Fm*Fm;
end
Date2=Q1-Qmin; %求取这次和上次的累加误差平方和的差值,如果差值大于0,表示修正后累加误差平方和反而增加了
L=L/2; %此时就要修改加权值
end
B1=B12; %在累加误差平方和减小的情况下,修正各变量值
B2=B22;
B3=B32;
B4=B42;
B5=B52;
Date1=Q1-Qmin %求取这次和上次的累加误差平方和的差值,这次的作用是:若还有差值,则再次循环
Qmin=Q1; %把这次求取的累加误差平方和保存,以便下次使用
end