1 背景简介
研究中用简单的函数或性质好的函数去近似替代复杂的或未知的函数,是数值计算科学的基本任务。与插值法相比,最佳逼近法的优点之一是它不要求指导被逼近函数在某些点的准确值,使得该方法在处理许多带误差的实验数据时更加有效。
2 案例设计
3 数学模型
3.1 最佳平方逼近
3.1.1 算法过程
3.1.2 代码
function y=Legendre(x,k) %勒让德多项式函数
if k==0
y=ones(size(x));
elseif k==1
y=x;
elseif k==2
y=(3.*x.^2-1)/2;
elseif k==3
y=1/2.*(5.*x.^3-3*x);
end
end
function S=Approximation(f,a,b,n) %定义逼近函数
global i j
if nargin<3
n=1;
end
X=zeros(n+1);
for i=0:n
for j=0:n
fun1_integral=@(x)Legendre(x,i).*Legendre(x,j);
X(i+1,j+1)=integral(fun1_integral,a,b);
end
end
Y=zeros(n+1,1);
for i=0:n
fun2_integral=@(x)Legendre(x,i).*f(x);
Y(i+1)=integral(fun2_integral,a,b);
end
S=X\Y;
end
%% 输入参数
% 在函数Legendre中设置勒让德多项式
% 设置被逼近函数
f=@(x)exp(x);
% 定义x上下界
xa=-1; xb=1;
%% 构造二次、三次最佳平方逼近
p2=Approximation(f,xa,xb,2);
p3=Approximation(f,xa,xb,3);
%% 绘图对比
fplot(@(x)exp(x),[xa,xb],'-','color',[0.98 0.50 0.45],'linewidth',1.5);
hold on
x=-1:0.1:1;
y2=polyval(flipud(p2),x);
y3=polyval(p3,x);
plot(x,y2,'--','color',[0.2 0.63 0.79],'linewidth',1.5)
plot(x,y3,'--','color',[0.63 0.40 0.83],'linewidth',1.5);
legend('原函数','二次最佳平方逼近','三次最佳平方逼近');
3.1.3 计算结果
4 分析与讨论
用正交组构造基函数,正规方程组的系数矩阵为对角矩阵,大大降低了求解难度。在本实验案例中,可以看出基于勒让德基底的二次最佳平方逼近效果比三次最佳平方逼近效果更好,因此并非最佳平方逼近的次数越高,效果就越好。