最小二乘法拟合二次函数及误差分析(附MATLAB代码)
最小二乘法拟合二次函数及误差分析(附MATLAB代码)
本文将介绍如何使用最小二乘法对给定数据进行二次函数拟合,并利用MATLAB进行编程实现。此外,还会对拟合结果进行误差分析。
实验目的与要求:
- 熟悉最小二乘法的基本原理2. 能够编制最小二乘法的程序,对给定的数据进行拟合3. 能够对误差进行分析
问题描述
给定以下数据:
| X | -3 | -2 | -1 | 0 | 1 | 2 | 3 ||---|---|---|---|---|---|---|---|| Y | 4 | 2 | 3 | 0 | -1 | -2 | -5 |
要求使用最小二乘法拟合函数 f(x) = a0 + a1*x + a2*x^2,并绘制拟合函数图形以及数据点,最后分析误差。
MATLAB代码实现
以下是使用最小二乘法进行拟合并分析误差的MATLAB代码:matlab% 给定数据X = [-3, -2, -1, 0, 1, 2, 3];y = [4, 2, 3, 0, -1, -2, -5];
% 构建矩阵A和向量bA = [ones(length(X), 1), X', X'.^2];b = y';
% 使用最小二乘法求解拟合系数coefficients = (A' * A) \ (A' * b);
% 生成拟合函数的数据点x_vals = linspace(min(X), max(X), 100);y_vals = coefficients(1) + coefficients(2) * x_vals + coefficients(3) * x_vals.^2;
% 绘制数据点和拟合函数图形plot(X, y, 'ro', 'MarkerSize', 8, 'LineWidth', 1.5);hold on;plot(x_vals, y_vals, 'b-', 'LineWidth', 1.5);xlabel('x');ylabel('y');title('最小二乘法拟合');legend('数据点', '拟合函数');grid on;hold off;
% 计算拟合误差error = norm(A * coefficients - b);
disp('拟合系数为:');disp(coefficients);disp('拟合误差为:');disp(error);
代码解释
- 数据准备: 将给定的X和Y数据存储在MATLAB数组中。2. 构建矩阵: 根据最小二乘法公式,构建矩阵A和向量b。3. 计算拟合系数: 利用矩阵运算计算拟合系数。4. 生成拟合函数: 使用计算得到的系数和一系列x值生成拟合函数的y值。5. 绘制图形: 将原始数据点和拟合函数绘制在同一张图上。6. 计算误差: 使用欧几里得范数计算拟合误差。7. 输出结果: 显示拟合系数和误差值。
总结
本文介绍了如何使用最小二乘法进行二次函数拟合,并通过MATLAB代码实现。通过修改代码中的拟合函数,可以将其应用于其他类型的函数拟合。
原文地址: https://www.cveoy.top/t/topic/0GR 著作权归作者所有。请勿转载和采集!