MATLAB插值与数据拟合
一、实验目的及要求
1、掌握 MATLAB的一维数据插值法 2、通过比较不同次数的多项式拟合效果,了解多项式拟合的原理 3、掌握 MATLAB的多项式拟合的特点和方法 4、掌握 MATLAB的多项式表示与运算
二、实验设备及要求
1、Matlab中,多项式的表示,多项式的四则运算; 2、MATLAB的polyval、poly2sym、root、poly、conv函数; 3、数据插值可以根据有限个点的取值状况,合理估算出附近其他点的取值。MATLAB的interp1函数,用于实现一维插值的,method用于指定插值方法,可取值如下:'nearest’是最邻近插值; 'linear’线性插值(默认值); 'spline’三次样条插值; 'cubic’立方插值。; 4、MATLAB的polyfit函数用于求最小二乘拟合多项式的系数; PC机100台及MATLAB软件
三、实验内容与步骤
(1)求一元高次多项式的根f(x)=x9-5x8-30x7+150x8+273x5-1365x4-820x3+4100X2+576x-2880
coefficients = [1, -5, -30, 150, 0, 273, -1365, -820, 4100, 576, -2880];
roots = roots(coefficients)
(2) 求多项式f(x)=x3+3x2+5x+7和g(x)=8x3-6x2-2的乘积
f = [1, 3, 5, 7];
g = [8, -6, 0, -2];
product = conv(f, g)
(3)在飞机制造中,机翼的加工是一项关键技术。由于机翼尺寸很大,通常在图纸中只能标出一些关键点的数据。下表给出了某型飞机机翼的下缘轮廓线数据,求每改变0.1时y的值。要求:插值方式分别用nearest、linear、spline、pchip四种,并在一个图像窗口中以子图形式绘制。
x | 0 | 3 | 5 | 7 | 9 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|
y | 0 | 1.2 | 1.7 | 2.0 | 2.1 | 2.0 | 1.8 | 1.2 | 1.0 | 1.6 |
% 存储机翼下缘轮廓线的数据
x = [0, 3, 5, 7, 9, 11, 12, 13, 14, 15];
y = [0, 1.2, 1.7, 2.0, 2.1, 2.0, 1.8, 1.2, 1.0, 1.6];
% 生成插值点
xi = 0:0.1:15;
% 使用nearest插值方式
yi_nearest = interp1(x, y, xi, 'nearest');
% 使用linear插值方式
yi_linear = interp1(x, y, xi, 'linear');
% 使用spline插值方式
yi_spline = interp1(x, y, xi, 'spline');
% 使用pchip插值方式
yi_pchip = interp1(x, y, xi, 'pchip');
% 绘制图像
figure;
subplot(2, 2, 1);
plot(x, y, 'o', xi, yi_nearest, '-');
title('nearest');
subplot(2, 2, 2);
plot(x, y, 'o', xi, yi_linear, '-');
title('linear');
subplot(2, 2, 3);
plot(x, y, 'o', xi, yi_spline, '-');
title('spline');
subplot(2, 2, 4);
plot(x, y, 'o', xi, yi_pchip, '-');
title('pchip');
以下是某市家庭收入x与家庭储蓄y之间的一组调查数据(单位:万元),请用数据拟合的方法试建立x与y的函数经验公式,要求:通过不断实验找一个函数,去逼近这些数据,并在屏幕输出该函数的符号形式。
x | 0.6 | 1.0 | 1.4 | 1.8 | 2.2 | 2.6 | 3.0 | 3.4 | 3.8 |
---|---|---|---|---|---|---|---|---|---|
y | 0.08 | 0.22 | 0.31 | 0.4 | 0.48 | 0.56 | 0.67 | 0.75 | 0.8 |
% 输入数据
x = [0.6, 1.0, 1.4, 1.8, 2.2, 2.6, 3.0, 3.4, 3.8];
y = [0.08, 0.22, 0.31, 0.4, 0.48, 0.56, 0.67, 0.75, 0.8];
% 使用polyfit函数拟合2阶多项式
coefficients = polyfit(x, y, 2);
% 使用拟合的系数计算拟合数据的y值
y_fit = polyval(coefficients, x);
% 绘制原始数据和拟合数据
figure
scatter(x, y, 'b', 'filled')
hold on
plot(x, y_fit, 'r')
xlabel('x')
ylabel('y')
legend('原始数据', '拟合数据')
% 输出多项式函数的符号形式
fprintf('拟合的多项式函数为: y = %.4fx^2 + %.4fx + %.4f\n', coefficients(1), coefficients(2), coefficients(3));
声明
题目答案不保证全对,参考使用。