数值分析实验四 最小二乘法曲线拟合

本文通过实验对比了直线和抛物线模型对世界人口和石油产量的最小二乘法拟合效果。实验结果显示,抛物线模型在人口数据拟合中的RMSE更小,而立方曲线模型在石油产量数据拟合中具有最优的RMSE,从而得出最佳拟合模型。
摘要由CSDN通过智能技术生成

一、实验目的

1.使用不同的模型对数据进行最小二乘拟合;
2.分析使用不同模型最小二乘法对数据进行拟合的RMSE(均方根误差);
3.根据分析结果求出最合理的拟合模型。

二、实验题目

1.用表1-1中的世界人口统计数值估计1980年的人口,求最佳最小二乘法数值估计:
在这里插入图片描述(a) 直线;(b) 抛物线。它们都通过这些数据点,并求这些拟合的RMSE。在每一种情形下,估计1980年的人口。哪一种拟合给出最佳估计。(40分)
2. 世界石油产量以每天百万桶计,如表1-2所示,求最佳最小二乘法数值估计:
在这里插入图片描述(a) 直线;(b) 抛物线;© 立方曲线。它们都通过10个数据点。并求这些拟合的RMSE。利用上面的每一种拟合来估计2010年的生产水平。就RMSE而言,那一种拟合最好的代表了这些数据。(60分)
说明:RMSE(root-mean-square error,均方根误差)。

三、实验原理

1、最小二乘法

已知:一组数据(xi,yi)(i = 0,1,…,m),在函数集合
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、实验内容与结果

1.用表1-1中的世界人口统计数值估计1980年的人口,求最佳最小二乘法数值估计:
(a) 直线拟合估计1980年的人口结果及RMSE分析(15分)

1. 程序源码

拟合函数代码
function [population,RMSE] = fit(x,y,n,year)
%FIT 此处显示有关此函数的摘要
%   此处显示详细说明
count_x = length(x);
G = zeros(n+1,n+1);
Gf = zeros(n+1,1);
 
%计算法方程组等式最左边
for i=1:n+1
    for j=1:n+1
        m = 0;
        for k=1:count_x
            m = m + x(k)^(i+j-2);
        end
        G(i,j) = m;
    end
end
 
%计算法方程组等式右边
for i=1:n+1
    m = 0;
    for k = 1:count_x
        m = m + x(k)^(i-1)*y(k);
    end
    Gf(i) = m;
end
 
%列主消元法求系数
[augmentedMatrix,a] = ColMain(G,Gf);
 
%对系数矩阵进行翻转
a = fliplr(a');
x_new = x(1):5:x(count_x);
pre = polyval(a,x_new);
population = polyval(a,year);
plot(x,y,'r*',x_new,pre,'kx-',year,population,'bo');
legend('原始数据','拟合曲线','1980预测','Location','NorthWest');
 
 
%计算RMSE
Gx =  polyval(a,x);
sum = 0;
for i=1:count_x
    sum = sum + (Gx(i)-y(i))^2;
end
RMSE = sqrt((sum)/count_x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值