matalab用lsqcurvefit拟合不出结果
函数functionf=expfn(x,xdate)f=x(1)+x(2)*exp(-(xdate-x(3))/x(4));程序xdate=[18.120.823.225...
函数
function f=expfn(x,xdate)
f=x(1)+x(2)*exp(-(xdate-x(3))/x(4));
程序
xdate=[18.1 20.8 23.2 25.6 28.4 30.4 32.9 35.7 37.9 41.1 44.2];
ydate=[1160 820 590 524 462 387 358 311 247 228 158];
plot(xdate,ydate);
x0=[100.0;2;-10;0.5];
[x,resnorm]=lsqcurvefit(@expfn,x0,xdate,ydate)
运行结果
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>
x =
476.8182
2.0000
-10.0000
0.5000
resnorm =
8.6582e+05
哪位大神帮忙看看问题在哪?
x和初值x0后面的无论参数怎么变都是一样的 展开
function f=expfn(x,xdate)
f=x(1)+x(2)*exp(-(xdate-x(3))/x(4));
程序
xdate=[18.1 20.8 23.2 25.6 28.4 30.4 32.9 35.7 37.9 41.1 44.2];
ydate=[1160 820 590 524 462 387 358 311 247 228 158];
plot(xdate,ydate);
x0=[100.0;2;-10;0.5];
[x,resnorm]=lsqcurvefit(@expfn,x0,xdate,ydate)
运行结果
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>
x =
476.8182
2.0000
-10.0000
0.5000
resnorm =
8.6582e+05
哪位大神帮忙看看问题在哪?
x和初值x0后面的无论参数怎么变都是一样的 展开
2个回答
展开全部
由于不同的初值有时会使函数陷入局部极小点而停止搜索,所以加上while用计算的方差进行判断,但这并不是一个好的方法。我在写这段的时候,程序已经运行了半个小时了,所以结果还没出来。
function f=zhidao97(x,xdate)
f=x(1)+x(2)*exp(-(xdate-x(3))/x(4));
xdate=[18.1 20.8 23.2 25.6 28.4 30.4 32.9 35.7 37.9 41.1 44.2];
ydate=[1160 820 590 524 462 387 358 311 247 228 158];
x0=[468.6277 10.1822 30.7198 2.9725];resnorm=11;
while(resnorm>10)
[x0,resnorm]=lsqcurvefit(@zhidao97,x0,xdate,ydate);
end
x0
resnorm
function f=zhidao97(x,xdate)
f=x(1)+x(2)*exp(-(xdate-x(3))/x(4));
xdate=[18.1 20.8 23.2 25.6 28.4 30.4 32.9 35.7 37.9 41.1 44.2];
ydate=[1160 820 590 524 462 387 358 311 247 228 158];
x0=[468.6277 10.1822 30.7198 2.9725];resnorm=11;
while(resnorm>10)
[x0,resnorm]=lsqcurvefit(@zhidao97,x0,xdate,ydate);
end
x0
resnorm
追问
resnorm返回值大于10.。肯定循环不止啊。。。
你再看看
谢谢啊!
追答
我又使用了别的软件进行了计算,
优化算法: 麦夸特法(Levenberg-Marquardt) + 通用全局优化法
计算结束原因: 达到收敛判断标准
均方差(RMSE): 240.252620084726
残差平方和(SSE): 865819.821863636
可见拟合函数不满足数据分布的规律,应该选择其他的函数式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询