matlab编程题,求大神
2
V (伏)6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63
t (秒) 0.5 1 2 3 4 5 7 9
数学拟合 展开
首先建立以个函数文件,代码如下面两行,保存到工作空间,文件名一定要是fun(因为下面的函数文件我命名为fun了)
function Vt=fun(a,t)
Vt=10-(10-a(1))*exp(-t/a(2)); %a(1)=V0,a(2) =τ
接着是主程序,包括下面全部:
%下面是数据
t=[0.5 1 2 3 4 5 7 9];
Vt=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63];
%matlab拟合的初值选择是一个麻烦的问题
a0=[6 0.5 ];%这是V0,τ的初值,得根据你的问题选取,我这里也是随便取的,
A=lsqcurvefit(@fun,a0,t,Vt);
%下面你可以画一个图形做拟合对比
f=fun(A,t);
plot(t,f,'r',t,Vt,'*-b')
legend('拟合','实际数据',2)
结果:
Local minimum possible.
lsqcurvefit stopped because the final change in the sum of squares relative to
its initial value is less than the default value of the function tolerance.
<stopping criteria details>
A =
5.55767167903105 3.50020448743878