共回答了10个问题采纳率:90%
v(t)=V-(V-V0)*exp(-t/tau)
移项,后两边同取对数
log(V-V(t))=log(V-V0)-t/tau
上面V,V(t),t已知,V0,tau未知.
令y=log(V-V(t))
x=t
那么就有kx+b=y
其中k=-1/tau,b=log(V-V0)
上面的过程就是将非线性化成线性.
将每个数据代入会得到二元一次线性方程组
方程数6,变量数2,可以由最小二乘法求出.
以下是Matlab代码:
V=14;
t=[0.3,0.5,1.0,2.0,4.0,7.0];
Vt=[5.6873,6.1434,7.1633,8.8626,11.0328,12.6962];
y=log(V-Vt);
A=[t(:),ones(size(t(:)))];
kb=Ay(:);
tau=-1/kb(1)
V0=V-exp(kb(2))
%%下面是显示拟合的结果
Vt_fit=V-(V-V0)*exp(-t/tau)
plot(Vt,Vt_fit,'*',Vt,Vt,'r')
xlabel('Vt原始数据')
ylabel('Vt拟合数据')
%%%%%%%%%%%%%%%
填空:
方法:化非线性问题成线性问题
V0=5.0001
tau=3.6165
1年前
2