【数值分析实验】(二)函数逼近与离散数据拟合(含matlab代码)

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 分析与讨论

        用正交组构造基函数,正规方程组的系数矩阵为对角矩阵,大大降低了求解难度。在本实验案例中,可以看出基于勒让德基底的二次最佳平方逼近效果比三次最佳平方逼近效果更好,因此并非最佳平方逼近的次数越高,效果就越好。

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值