这两天宅在家里闲着是在是没什么意思,就总结一下以前数模时自己学到的一些算法吧,都是一些非常非常基础的算法,就作为学习笔记总结一下学到的最最干货的东西吧,以后学习科研都能用得上,也希望对各位学弟学妹们有所帮助吧,刚好2020MCM/ICM马上快开始了(今年没有参赛),希望对各位参加建模的同学有所帮助。关于数模的一些其他的干货(建模流程、写作、时间安排等等)我都放到这两个视频里面了,感兴趣的同学可以看一下:AV73775318(美赛)、AV66218067(国赛/省赛/校赛)。
多项式拟合
多项式拟合是数据拟合的一种,与插值有一定区别(插值要求曲线经过给定的点,拟合不一定经过给定的点),数据拟合有很多种类型,其中的最小二乘法求线性回归方程相信各位上过高中的人都听说过(没错,在北师大版数学必修三里就讲过最小二乘法,在选修2-3里还有回归分析。。。)但是听说过没掌握不要紧,因为我也没掌握。。。(当时只会用来做题,高考完了没复习过就忘记了)
言归正传,本次介绍MATLAB中三种多项式拟合的方法,我称之为代码法、代码窗口法、窗口法。
0.先说问题:给定以下点(1,9)(2,5)(3,4)(4,4)(5,2)(6,3)(7,2)(8,4)(9,9),要求进行多项式拟合,求出x=5.5、x=10时的y值
可以由上图看出,题目给定的点分布都很“乱”,而且x=5.5与x=10的点都不存在,这时需要拟合曲线,根据曲线的函数,求出对应的y值(这里说一下,因为x=5.5在所给x区间[1,9]内,这时求对应的y值为内插法,反之因为x=10在区间外,此时求y值为外插法。一般用拟合法求内插,外插法多为预测类,还有很多外插的方法,这里不一一赘述,但是也不是一定如此,如本题,10离9不远,因此最后预测的值理论上是较为可信的)
1.代码法
MATLAB代码如下:(使用时只需修改部分数据即可)
x=[1 2 3 4 5 6 7 8 9];
y=[9 5 4 4 2 3 2 4 9];
z=polyfit(x,y,3);
xi=0:1:10;
yi=polyval(z,xi);
plot(xi,yi,x,y,'r*');
其中,z=polyfit(x,y,3);的3指拟合的最高次幂为3,该最高次幂需要不断调整,以得出最佳拟合方案(尽量不要出现欠拟合或过拟合现象即可)
据图可以读出,x=5.5时y约为2,x=10时y约为13.5
该方法较为简便,但是需要自行修改、调整函数系数,而且不能得出拟合曲线的具体函数值。
2.代码窗口法
先输入以下代码,绘出点图:
x=[1 2 3 4 5 6 7 8 9];
y=[9 5 4 4 2 3 2 4 9];
plot(x,y,'r*')
再按照下图所示操作即可
不同的拟合方法对应的函数都不同,根据函数图像,估计对应的y值即可
3.窗口法
值得注意的是:上述两种方法都能方便地得到函数图像,但是却不能得到具体的拟合函数表达式。而窗口法却能快速得到表达式(但是有的表达式的系数是以概率表达的)。
首先输入给定的x值与y值:x=[1 2 3 4 5 6 7 8 9];y=[9 5 4 4 2 3 2 4 9];
具体的拟合函数表达式需要视所用的拟合方法的不同而定。
这篇文章就写到这里,有什么意见或建议可以留言,谢谢大家:—)
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪