2021-11-08
2021/11/8 23:17:11
本文主要是介绍2021-11-08,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
题目
1949年—1994年我国人口数据资料如下:
年 份 xi 49 54 59 64 69 74 79 84 89 94
人口数 yi 5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8
建模分析我国人口增长的规律, 预报1999年我国人口数(亿)。
1. 在坐标系上作观测数据的散点图;
2. 根据散点分布的几何特征提出模型;
3. 利用数据估计模型的参数;
4. 计算拟合效果。
第一步–画出散点图
matlab代码如下:
x= [49 54 59 64 69 74 79 84 89 94] ; y=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8 ]; a=polyfit(x,y,1);
得到结果:
根据散点图的分布情况我们可以提出两个模型:
模型一:假设人口数量随时间线性增加
y = a*x + b
模型二:指数增长模型
y = a * exp(b * x)
转化为:
lny = lna + b*x
第二步–利用matlab画出两中模型的拟合函数
代码如下:
x= [1949 1954 1959 1964 1969 1974 1979 1984 1989 1994] ; y=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8 ]; x1=1949:10:1994; a=polyfit(x,y,1); %散点图 y1=a(2)+a(1)*x1; %模型一 b=polyfit(x,log(y),1); y2=exp(b(2))*exp(b(1)*x1); %模型二 用exp是要将ln转化回去 plot(x,y,'*') hold on plot(x1,y1,'--r') hold on plot(x1,y2,'-k') legend('原曲线','模型一曲线','二曲线')
得到拟合后的曲线图:
求得拟合函数为:
模型一:y = 0.146 * x - 1.93
模型二:y = 2.33*exp(0.0179 * x)
(此时的x带入年份的后两位)
第三步–利用拟合函数预测1999年的人口数量并计算拟合精度
预测结果:
模型一预测1999年的人口数量为:12.524亿
预测1999年的人口数量为:13.708亿
拟合精度计算公式:
- 总平方和 SST(total sum of squares) : ∑ i = 1 n ( s i − y i ) 2 \sum_{i=1}^{n} (s_i-y_i)^2 ∑i=1n(si−yi)2
利用matlab计算
代码如下:
x= [49 54 59 64 69 74 79 84 89 94]; s=0.146*x-1.93; %求得拟合函数对应得函数值 y=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8 ]; a=s-y; %两者相减得到每个函数值的误差 b=a.'; %对其进行转置方便计算误差的平方和 c=a*b; %拟合函数的精度
计算得到拟合精度为:0.3531
这篇关于2021-11-08的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?