matlab最小二乘法拟合多指数曲线X=[ 0.1667 0.4167 0.7500 1.0 2.0 4.0 8.0 14.0 22.0 44.0 58.0];Y=[2.320 1.760 1.650 1.450 1.140 0.720 0.373 0.146 0.053 0.021 0.010];y=a*exp(-b*x)+c*exp(-d*x)请大侠们编详细的程序.先谢谢大家
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/25 19:15:20
matlab最小二乘法拟合多指数曲线X=[ 0.1667 0.4167 0.7500 1.0 2.0 4.0 8.0 14.0 22.0 44.0 58.0];Y=[2.320 1.760 1.650 1.450 1.140 0.720 0.373 0.146 0.053 0.021 0.010];y=a*exp(-b*x)+c*exp(-d*x)请大侠们编详细的程序.先谢谢大家
matlab最小二乘法拟合多指数曲线
X=[ 0.1667 0.4167 0.7500 1.0 2.0 4.0 8.0 14.0 22.0 44.0 58.0];
Y=[2.320 1.760 1.650 1.450 1.140 0.720 0.373 0.146 0.053 0.021 0.010];
y=a*exp(-b*x)+c*exp(-d*x)
请大侠们编详细的程序.先谢谢大家了!
x是时间,y是浓度,a、b、c、d是常数,就是通过拟合X、Y描述的曲线来求这四个常数.谢谢!
matlab最小二乘法拟合多指数曲线X=[ 0.1667 0.4167 0.7500 1.0 2.0 4.0 8.0 14.0 22.0 44.0 58.0];Y=[2.320 1.760 1.650 1.450 1.140 0.720 0.373 0.146 0.053 0.021 0.010];y=a*exp(-b*x)+c*exp(-d*x)请大侠们编详细的程序.先谢谢大家
先建立一个函数
function Y=efun(b,x)
Y=b(1)*exp(b(2)*x)+b(3)*exp(b(4)*x);
保存为efun.m;
再输入:
x=[0.1667 0.4167 0.7500 1.0 2.0 4.0 8.0 14.0 22.0 44.0 58.0];
y=[2.32 1.76 1.65 1.45 1.14 0.72 0.373 0.146 0.053 0.021 0.010];
x0=[1,1,1,1]; %设置初始值
b=lsqcurvefit(@efun,x0,x,y);
sprintf('参数:a=(%0.5g),b=(%0.5g),c=(%0.5g),d=(%0.5g)',b(1),b(2),b(3),b(4))