1. 第一题
问题提出:考虑在一个固定的区间上用插值逼近一个函数。显然Lagrange插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项的次数增加时,是否也更加靠近被逼近的函数。Runge给出的一个例子是极著名并富有启发性的,设区间[-1,1]上函数
实验内容:考虑区间[-1,1]的一个等距划分,分点为
则拉格朗日插值多项式为
其中,是n次Lagrange插值基函数。
实验要求:
(1)选择不断增大的分点数目n=2,3,..., 画出原函数f(x)及插值多项式函数在 [-1,1]上的图像 , 比较并分析实验结果。
(2)选择其他函数,例如定义在区间[-5,5]上的函数
重复上述的实验看其结果如何。
答:
Matlab不自带Largrange 函数,所以需要编写一个Largange函数
% HOMEWORK Jingyi Tian 2021.9.21
% Mid-Autumn Festival
%% largange function
function y = largange(x0,y0,x)
n = length(x0);
m = length(x);
for i=1:m
z = x(i);
s = 0.0;
for k=1:n
p =1.0;
for j=1:n
if(j ~=k)
p = p*(z-x0(j))/(x0(k)-x0(j));
end
end
s = s+p*y0(k);
end
y(i) = s;
end
% HOMEWORK Jingyi Tian 2021.9.21
% Mid-Autumn Festival
%% f(x)
clc,clear
close all
x = linspace(-1,1,100);
y = 1./(1+25*x.^2);
plot(x,y);
legend('f(x)');
hold on;
%% for different nodes
for i=2:2:10
x0 = linspace(-1,1,i+1);
y0 = 1./(1+25*x0.^2);
y = largange(x0,y0,x);
plot(x,y,'r-')
hold on
end
%% result
% the result fit better around the origin point as the n number rises,
% while has futher diviation at the boundary.
% HOMEWORK Jingyi Tian 2021.9.21
% Mid-Autumn Festival
%% h(x)
clc,clear
close all
x = linspace(-5,5,100);
y = x./(1+x.^4);
plot(x,y);
legend('h(x)');
hold on;
%% for different nodes
for i=2:2:10
x0 = linspace(-5,5,i+1);
y0 = x0./(1+x0.^4);
y = largange(x0,y0,x);
plot(x,y,'r-')
hold on
end
%% result
% the result fit better around the origin point as the n number rises,
% while has futher diviation at the boundary.
% HOMEWORK Jingyi Tian 2021.9.21
% Mid-Autumn Festival
%% h(x)
clc,clear
close all
x = linspace(-5,5,100);
y = atan(x);
plot(x,y);
legend('g(x)');
hold on;
%% for different nodes
for i=2:2:10
x0 = linspace(-5,5,i+1);
y0 = atan(x0);
y = largange(x0,y0,x);
plot(x,y,'r-')
hold on
end
%% result
% the result fit better around the origin point as the n number rises,
% while has futher diviation at the boundary.
绘制出在[-1,1]上的拉格朗日插值图像,可以看到在原点附近n越大时拟合越接近蓝线,但是在边缘处波动更大。
绘制出在[-5,5]上的拉格朗日插值图像,可以看到在原点附近n越大时拟合越接近蓝线,但是在边缘处波动更大。
绘制出在[-5,5]上的拉格朗日插值图像,可以看到在原点附近n越大时拟合越接近蓝线,但是在边缘处波动更大。
三个函数现象基本一致,这时龙格现象的表现,常用分区法解决问题。
2. 第二题
实验3.1
编制以函数为基的多项式最小二乘拟合程序,并用于对表3.11中的数据作3次多项式最小二乘拟合。
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 | 1.5 | 2.0 | |
-4.447 | -0.452 | 0.551 | 0.048 | -0.447 | 0.549 | 4.552 |
取权数,求拟合曲线
中的参数{
},平方误差
,并作离散数据{
}的拟合函数
的图形。
解3.1:
代码:
% HOMEWORK Jingyi Tian 2021.9.21
% Mid-Autumn Festival
%% 2.1 least square fit
x = -1:0.5:2;
y = [-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552]
alpha = polyfit(x,y,3); % parameter:alpha-k
y1 = polyval(alpha,x);
delta2 = sum((y-y1).^2); % square error:delta^2
clf;
plot(x,y,'*');
hold on;
% plot
x0 = -1:0.01:2;
plot(x0,polyval(alpha,x0),'r-');
axis([-1.5,2.5,-5,5]);
xlabel('x');
ylabel('y');
title('cubic polynomial least squares fitting');
disp(['square error:',sprintf('%g',delta2)]);
disp(['parameter:',sprintf('%g\t',alpha)]);
拟合图形:
运算结果:
y = -4.4470 -0.4520 0.5510 0.0480 -0.4470 0.5490 4.5520
square error:2.17619e-05
parameter:1.99911 -2.99767 -3.96825e-05 0.549119
实验3.2
编制正交化多项式最小二乘拟合程序,并用于求解上题中的3次多项式最小二乘拟合问题,作拟合曲线的图形,计算平方误差,并与上题结果进行比较。
解3.2:
代码:
% HOMEWORK Jingyi Tian 2021.9.21
% Mid-Autumn Festival
%% Orthogonalization
x = -1:0.5:2;
y = [-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552];
w = [1,1,1,1,1,1,1];
n = 3;
[a,b,c,alpha,r] = flp(x,y,w,n)
disp(['square error:',sprintf('%g',r)]);
disp(['parameter:',sprintf('%g\t',alpha)]);
clf;
plot(x,y,'*');
hold on;
x0=[-1:0.01:2];
plot(x0,polyval(alpha,x0),'r-');
axis([-1.5,2.5,-5,5]);
xlabel('x');ylabel('y');title('orthogonalization least squares fitting');
function [a,b,c,alpha,r] = flp(x,y,w,n)
m = length(x);
s1 = ones(1,m);
v1 = sum(w);
d(1) = y*w';
c(1) = d(1)/v1;
for k=1:n
xs = x.*s1.^2*w';
a(k) = xs/v1;
if (k == 1)
s2 = (x-a(k)).*s1;
else
b(k) = v2/v11;
s2 = (x-a(k)).*s1-b(k)*s0;
end
v2 = s2.^2*w';
d(k+1) = y.*s2*w';c(k+1)=d(k+1)/v2;
v11 = v1;v1 = v2;s0 = s1;s1 = s2;
end
% square error
r = y.*y*w'-c*d';
% parameter
syms x
p0 = 1;
T = c(1)*p0;
for k = 2:n+1
if (k == 2)
p2 = x-a(k-1);
else
p2 = (x-a(k-1))*p1-b(k-1)*p0;
p0=p1;
end
T = T+c(k)*p2;
p1 = p2;
end
T = collect(T);
alpha = sym2poly(T);
end
拟合图形:
运行结果:
r = 2.1762e-05
square error:2.17619e-05
parameter:1.99911 -2.99767 -3.96825e-05 0.549119
结果比较:
两种拟合的结果基本一致。