作业帮 > 综合 > 作业

matlab数据拟合c=u*(1-erf(x/(2*(beta(1)*t.^(1-beta(2))/(1-beta(2)

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/18 09:58:57
matlab数据拟合
c=u*(1-erf(x/(2*(beta(1)*t.^(1-beta(2))/(1-beta(2))))))
已知u为定值,可以自己给c,x,t为三个变化的值,想拟合beta1和beta2两个值.
取值可以是
u=100;
x=[5,10,15,5,10,15];
t=[8,8,8,16,16,16];
c=[50,20,10,57,24,12];
matlab数据拟合c=u*(1-erf(x/(2*(beta(1)*t.^(1-beta(2))/(1-beta(2)
在另一个提问贴答案,被告知可能违反了知道规范,不能正常显示,所以只好再贴一次了. 简单说明几点:1、拟合问题与初值关系很大,不是随便指定什么初值都行的通的.你原来的初值beta1太小,导致F计算出来全是0,根本无法继续;2、代码中的下面这行beta=nlinfit(X,c,@oneFick,[1 0.5])也可以换成beta=lsqcurvefit(@oneFick,[1 0.5],X,c)拟合的结果相同.前者是统计工具箱的函数,而后者是优化工具箱的. 代码如下:function zd
x=[5,10,15,5,10,15];
t=[8,8,8,16,16,16];
c=[50,20,10,57,24,12];
X=[x; t];
beta=nlinfit(X,c,@oneFick,[1 0.5])
n = length(c);
figure(gcf)
plot(1:n,c,'.-',1:n,oneFick(beta,X),'r:x')
legend('原始数据','拟合数据')

function F = oneFick(beta,X)
u=100;
x=X(1,:); 
t=X(2,:); 
F=u*(1-erf(x./(2*(beta(1)*t.^(1-beta(2))/(1-beta(2))))));拟合结果:beta =
          0.67331336811287         0.825416048371623