预测美国人口

此示例说明,即使使用次数最适中的多项式外插数据也是有风险且不可靠的。

此示例比 MATLAB® 出现得更早。该示例最初作为一个练习出现在 Forsythe、Malcolm 和 Moler 合著的《Computer Methods for Mathematical Computations》一书中,该书由出版商 Prentice-Hall 在 1977 年出版。

现在,通过 MATLAB 可以更容易地改变参数和查看结果,但基础数学原理未变。

使用 1910 年至 2000 年的美国人口普查数据创建并绘制两个向量。

% Time interval

t = (1910:10:2000)';

% Population

p = [91.972 105.711 123.203 131.669 150.697...

179.323 203.212 226.505 249.633 281.422]';

% Plot

plot(t,p,'bo');

axis([1910 2020 0 400]);

title('Population of the U.S. 1910-2000');

ylabel('Millions');

那么猜想一下 2010 年美国的人口是多少?

p

p = 10×1

91.9720

105.7110

123.2030

131.6690

150.6970

179.3230

203.2120

226.5050

249.6330

281.4220

将这些数据与 t 中的一个多项式拟合,并使用它将人口数外插到 t = 2010。通过对包含 Vandermonde 矩阵的线性方程组求解来获得多项式中的系数,该矩阵为 11×11,其元素为缩放时间的幂,即 A(i,j) = s(i)^(n-j)。

n = length(t);

s = (t-1950)/50;

A = zeros(n);

A(:,end) = 1;

for j = n-1:-1:1

A(:,j) = s .* A(:,j+1);

end

通过对包含 Vandermonde 矩阵最后 d+1 列的线性方程组求解,获得与数据 p 拟合的 d 次多项式的系数 c:

A(:,n-d:n)*c ~= p

如果 d < 10,则方程个数多于未知数个数,并且最小二乘解是合适的。

如果 d == 10,则可以精确求解方程,而多项式实际上会对数据进行插值。

在任一种情况下,都可以使用反斜杠运算符来求解方程组。三次拟合的系数为:

c = A(:,n-3:n)\p

c = 4×1

-5.7042

27.9064

103.1528

155.1017

现在,计算从 1910 年到 2010 年每一年的多项式,然后绘制结果。

v = (1910:2020)';

x = (v-1950)/50;

w = (2010-1950)/50;

y = polyval(c,x);

z = polyval(c,w);

hold on

plot(v,y,'k-');

plot(2010,z,'ks');

text(2010,z+15,num2str(z));

hold off

将三次拟合与四次拟合进行比较。请注意,外插点完全不同。

c = A(:,n-4:n)\p;

y = polyval(c,x);

z = polyval(c,w);

hold on

plot(v,y,'k-');

plot(2010,z,'ks');

text(2010,z-15,num2str(z));

hold off

随着阶数增加,外插变得越来越不可靠。

cla

plot(t,p,'bo')

hold on

axis([1910 2020 0 400])

colors = hsv(8);

labels = {'data'};

for d = 1:8

[Q,R] = qr(A(:,n-d:n));

R = R(1:d+1,:);

Q = Q(:,1:d+1);

c = R\(Q'*p); % Same as c = A(:,n-d:n)\p;

y = polyval(c,x);

z = polyval(c,11);

plot(v,y,'color',colors(d,:));

labels{end+1} = ['degree = ' int2str(d)];

end

legend(labels, 'Location', 'NorthWest')

hold off

另请参阅

拟合美国人口matlab编码,预测美国人口 - MATLAB Simulink Example - MathWorks 中国相关推荐

  1. 欧式期权matlab编码蒙特卡罗方法,基于MATLAB的金融工程方法与实践第七章 基于蒙特卡洛方法的期权定价.ppt...

    蒙特卡洛的优缺点 MCMC方法的优点 分布假设更一般,描述市场因素可能变化的统计分布既可以是正态.对数正态的,也可以是带跳的扩散分布.t分布等. 随机生成风险因素的各种各样的未来假想情景,可在模型中融 ...

  2. crc校验matlab编码流程图,crc校验matlab

    关键词: MATLAB;C 语言 ;CRC 循环冗余校验码 2 1.概要 1.1... 结果:出错了 七.思考题 1.掌握按字节编码的过程,试着写出CRC 校验编码的Matlab 程序? %main ...

  3. 聚类 轮廓 matlab,聚类分析 - MATLAB Simulink Example - MathWorks 中国

    K 均值和层次聚类 Statistics and Machine Learning Toolbox 中的一些函数可执行 K 均值聚类和层次聚类. K 均值聚类是一种分区方法,它将数据中的观测值视为具有 ...

  4. matlab实现字符识别,字符识别 - MATLAB Simulink Example - MathWorks 中国

    定义问题 脚本 prprob 定义了一个包含 26 列的矩阵 X,每列对应一个字母.每列有 35 个值,值可能是 1,也可能是 0.每列(包含 35 个值)定义一个字母的 5×7 位图. 矩阵 T 是 ...

  5. matlab 读取mdf文件路径,访问 MDF 文件 - MATLAB Simulink Example - MathWorks 中国

    打开 MDF 文件 通过指定目标文件的名称来打开 MDF 文件.有关该文件的许多基本详细信息已提供.此示例文件是使用 Vector CANape 创建的. m = mdf("CANapeBa ...

  6. matlab 总谐波失真,分析谐波失真 - MATLAB Simulink Example - MathWorks 中国

    简介 在此示例中,我们将研究放大器的简化模型的输出,该放大器的噪声耦合到输入信号并且呈现非线性.我们将研究输入端的衰减如何降低谐波失真.我们还将举例说明如何对放大器输出端的失真在数学上进行校正. 查看 ...

  7. matlab中矩阵重排列,稀疏矩阵重新排序 - MATLAB Simulink Example - MathWorks 中国

    可视化稀疏矩阵 spy 图可以显示矩阵中的非零元素. 下面的 spy 图显示了从杠铃矩阵的一部分得到的稀疏对称正定矩阵.此矩阵描述类似杠铃的图中的连接. load barbellgraph.mat S ...

  8. 矩阵指数 matlab,矩阵指数 - MATLAB Simulink Example - MathWorks 中国

    方法 1:加权平方 expmdemo1 是以下著作中算法 11.3.1 的实现: Golub, Gene H. and Charles Van Loan.Matrix Computations, 3r ...

  9. matlab地震振幅属性分析,洛马普列塔地震分析 - MATLAB Simulink Example - MathWorks 中国...

    加载地震数据 文件 quake.mat 包含圣克鲁斯山脉在 1989 年 10 月 17 日发生的洛马普列塔地震的 200Hz 数据.该数据由加州大学圣克鲁斯分校的 Joel Yellin 通过 Ch ...

  10. matlab改成单精度运算,单精度运算 - MATLAB Simulink Example - MathWorks 中国

    创建双精度数据 首先创建一些数据,默认情况下为双精度. Ad = [1 2 0; 2 5 -1; 4 10 -1] Ad = 3×3 1 2 0 2 5 -1 4 10 -1 转换为单精度 可以使用 ...

最新文章

  1. 如何部署云服务器,保证应用高可用性,永不停机
  2. CSUOJ-1980 不堪重负的数(区间dp)
  3. 不安装oracle客户端如何用plsql连接oracle
  4. 华为Y9s海外官网上架:升降式全面屏+侧面指纹识别
  5. 【白皮书分享】抖音企业号-服装行业白皮书.pdf(附下载链接)
  6. Java面试中如何介绍自己的项目经验?
  7. 编译ElasticFusion过程(Ubuntu14.04)
  8. 关于U盘被写保护无法格式化的解决方法
  9. openBSD安装桌面
  10. 【Springboot整合ShardingSphere(ShardingJDBC)】扫盲文(并非代码实战)
  11. 一起来学linux:磁盘与文件系统:
  12. 根据中国时间求美国时间
  13. Android常用存储类型与简介
  14. 微软“黑屏”被严重误读
  15. Block,多态,数组排序
  16. coreseek/sphinx中的匹配模式
  17. vscode1.65.2 + anaconda 在python拓展为2022.2.1924087327版本上的问题及解决
  18. minio下载安装与API操作
  19. js 实现 hasClass(), addClass(), removeClass() 方法
  20. 国内代码托管中心-码云

热门文章

  1. 大工14秋计算机英语3,【大工作业】秋季《大学英语3》在线测试2包100
  2. 直接渲染管理器(Direct Rendering Manager, DRM)
  3. C++17 any类(万能容器)详解
  4. 微信登录收不到回调的解决方法
  5. Linux: ubuntu Appium连接手机
  6. 方舟手游修改服务器难度,方舟手游中途可以修改难度吗
  7. 壁纸控福音:私藏的100PC张壁纸一次打包分享
  8. Temporal Action Proposal Generation with Transformers TAPG transformer论文阅读笔记
  9. 小米下拉导航栏,36kr 下拉导航栏解决方法
  10. samba将远程服务器映射到本地磁盘