【数值分析实验】(一)插值法(含matlab代码)

这篇具有很好参考价值的文章主要介绍了【数值分析实验】(一)插值法(含matlab代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 背景简介

        实际问题中许多变量的关系可以用数学函数概念进行刻画,但是在大多数情况下,这些函数的表达式是未知的,或者已知但十分复杂,需要我们将这个函数的未知解析式近似地构造出来,或者用一个简单的函数表达式来代替复杂的函数表达式。基于上述过程,我们设计实验,通过提供未知函数或复杂函数的某些已知信息,来实现以下目的:
        (1)构造该函数的近似表达式;
        (2)计算该函数在其他点处的函数值;
        (3)计算所构造的近似表达式与真实函数的误差。

2 案例设计

matlab插值法代码,数值分析实验,matlab,算法,数据分析

3 数学模型

matlab插值法代码,数值分析实验,matlab,算法,数据分析

3.1 拉格朗日插值法

3.1.1 算法过程

matlab插值法代码,数值分析实验,matlab,算法,数据分析

3.1.2 代码

function y=Lagrange(xi,fx,x)
xi_num=length(xi); % 已知节点的个数
x_num=length(x);   % 需要估计的节点个数
for i=1:x_num      % 对每个估计节点执行循环
    z=x(i);
    f=0.0;
    for m=1:xi_num
        L=1.0;     % L为基函数
        for n=1:xi_num
            if n~=m
                L=L*(z-xi(n))/(xi(m)-xi(n));
            end
        end
        f=L*fx(m)+f; 
    end
    y(i)=f;
end
end
%% 输入参数
% 输入节点
xi=(1:2:11); 
% 输入节点处函数值
fx=[2.7183 2.2317 5.9365 22.3803 100.0381 494.8276];
% 输入需要估计的节点
x=[3.57 6.91 9.36];
%% 利用Lagrange计算x处函数值
y=Lagrange(xi,fx,x) % 结果为y=[1.5326 21.1960 135.2998]

3.1.3 计算结果

matlab插值法代码,数值分析实验,matlab,算法,数据分析

3.2 牛顿插值法

3.2.1 算法过程

matlab插值法代码,数值分析实验,matlab,算法,数据分析

3.2.2 代码

function y=Newton(x,xi,yi)
xi_num=length(xi); % 已知节点的个数
x_num=length(x);   % 需要估计的节点个数
f=zeros(xi_num,xi_num);
for i=1:x_num      % 对每个估计节点执行循环
    z=x(i);
    N=0.0;
    for m=1:xi_num
        f(m)=yi(m);
    end
    for n=2:xi_num % 构造差商表   
        for m=n:xi_num
            f(m,n)=(f(m,n-1)-f(m-1,n-1))/(xi(m)-xi(m+1-n));
        end
    end
    for m=2:xi_num
        t=1;
        for j=1:m-1
            t=t*(z-xi(j));
        end
        N=f(m,m)*t+N;
    end
    N=f(1,1)+N;
    y(i)=N;
end
disp('差商表如下:');
disp(f);
end
%% 输入参数
% 输入节点
xi=(1:2:11); 
% 输入节点处函数值
fx=[2.7183 2.2317 5.9365 22.3803 100.0381 494.8276];
% 输入需要估计的节点
x=[3.57 6.91 9.36];
%% 利用Newton计算x处函数值
y=Newton(x,xi,fx) % 结果为y=[2.7854 20.9903 132.5689]

3.2.3 计算结果

matlab插值法代码,数值分析实验,matlab,算法,数据分析

3.3 埃尔米特插值法

3.3.1 算法过程

matlab插值法代码,数值分析实验,matlab,算法,数据分析

3.3.2 代码

function y=Hermite(xi,fx,fx1,x)
xi_num=length(xi); % 已知节点的个数
x_num=length(x);   % 需要估计的节点个数
for i=1:x_num
    f=0.0;
    for m=1:xi_num
        H=1.0;
        a=0.0;
        for n=1:xi_num
            if n~=m
                H=H*((x(i)-xi(n))/(xi(m)-xi(n)))^2;
                a=a+1/(xi(m)-xi(n));
            end
        end
        f=f+H*((xi(m)-x(i))*(2*a*fx(m)-fx1(m))+fx(m));
    end
    y(i)=f;
end
%% 输入参数
% 输入节点
xi=(1:2:11); 
% 输入节点处函数值
fx=[2.7183 2.2317 5.9365 22.3803 100.0381 494.8276];
% 输入节点处导数值
fx1=[-2.7183 0.7439 3.5619 15.9859 77.8074 404.8590];
% 输入需要估计的节点
x=[3.57 6.91 9.36];
%% 利用Lagrange计算x处函数值
y=Hermite(xi,fx,fx1,x) % 结果为y=[2.7854 20.9903 132.5689]

3.3.3 计算结果

matlab插值法代码,数值分析实验,matlab,算法,数据分析

4 分析与讨论

        在本设计案例中,三种插值方法都能够有效地估算插值节点外其他点的函数值,插值结果也比较接近真实值。其中,埃尔米特插值法需要用到被插函数的导数信息,估计误差最小,效果最好。而拉格朗日插值方法和牛顿插值法的估计精度相同且次于埃尔米特插值法。
matlab插值法代码,数值分析实验,matlab,算法,数据分析文章来源地址https://www.toymoban.com/news/detail-522220.html

到了这里,关于【数值分析实验】(一)插值法(含matlab代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 二次插值法详细步骤及其matlab代码举例

    基本思想:在搜索区间中不断使用二次多项式去近似目标函数,并逐步用插值多项式的极小点去逼近搜索问题(什么鬼?)其实就是模拟目标函数,求出模拟出来的函数的极小值近似等于目标函数极小值 mini f(x)    区间[a,b] 精度e=0.3(自己设置) 确定目标函数区间[a,b],精度e

    2024年02月10日
    浏览(10)
  • 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践

    【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践

    温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就 需要使用一些数学的方法,“模拟产生”一些新的但又比较靠谱的值来满足

    2024年02月05日
    浏览(7)
  • 基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    要求 1、 利用Lagrange插值公式 L n ( x ) = ∑ k = 0 n ( ∏ i = 0 , i ≠ k n x − x i x k − x i ) y k {L_n}(x) = sumlimits_{k = 0}^n {left( {prodlimits_{i = 0,i ne k}^n {frac{{x - {x_i}}}{{{x_k} - {x_i}}}} } right)} {y_k} L n ​ ( x ) = k = 0 ∑ n ​ ( i = 0 , i  = k ∏ n ​ x k ​ − x i ​ x − x i ​ ​ ) y k ​ 编写出

    2024年02月07日
    浏览(17)
  • Matlab图像处理-灰度插值法

    Matlab图像处理-灰度插值法

    最近邻法 最近邻法是一种最简单的插值算法,输出像素的值为输入图像中与其最邻近的采样点的像素值。是将 ( u 0 , v 0 ) (u_0,v_0) 点最近的整数坐标 u , v (u,v) 点的灰度值取为 ( u 0 , v 0 ) (u_0,v_0) 点的灰度值。 在 ( u 0 , v 0 ) (u_0,v_0) 点各相邻像素间灰度变化较小时,这种方法是一

    2024年02月10日
    浏览(13)
  • 深度学习基础知识 最近邻插值法、双线性插值法、双三次插值算法

    深度学习基础知识 最近邻插值法、双线性插值法、双三次插值算法

    最邻近插值:将每个目标像素找到距离它最近的原图像素点,然后将该像素的值直接赋值给目标像素 优点 :实现简单,计算速度快 缺点 :插值结果缺乏连续性,可能会产生锯齿状的边缘,对于图像质量影响较大,因此当处理精度要求较高的图像时,通常会采用更加精细的插

    2024年02月03日
    浏览(12)
  • 算法--插值法

    插值法是一种数学方法,主要用于通过已知的离散数据来估算未知值。常见的插值法有线性插值、最近邻插值、双线性插值和双三次插值。以下是其基本原理和应用: 线性插值:假设在两个已知数据点之间,数据的变化是线性的,因此可以通过已知的两点的坐标来计算经过这

    2024年01月18日
    浏览(8)
  • 25.2 matlab里面的10中优化方法介绍——插值法(matlab程序)

    25.2 matlab里面的10中优化方法介绍——插值法(matlab程序)

    1. 简述        插值法又称“内插法”,是 利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值, 这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。常见 分段线性插值法 和

    2024年02月15日
    浏览(9)
  • 数据分析缺失值处理(Missing Values)——删除法、填充法、插值法

    数据分析缺失值处理(Missing Values)——删除法、填充法、插值法

    缺失值指数据集中某些变量的值有缺少的情况,缺失值也被称为NA(not available)值。在pandas里使用浮点值NaN(Not a Number)表示浮点数和非浮点数中的缺失值,用NaT表示时间序列中的缺失值,此外python内置的None值也会被当作是缺失值。需要注意的是,有些缺失值也会以其他形式

    2024年02月05日
    浏览(14)
  • 牛顿插值法、拉格朗日插值法、三次插值、牛顿插值多项式、拉格朗日插值多项式

    牛顿插值法、拉格朗日插值法、三次插值、牛顿插值多项式、拉格朗日插值多项式

    两点式线性插值 调用Matlab库函数 拉格朗日二次插值: 牛顿二次插值 结果分析:通过对比不同插值方法,可以看到在一定范围内(高次会出现龙格现象),插值次数越高,截断误差越小(插值结果越接近于真实函数值);同时,对于相同次数的插值,由于不同的插值方法它们

    2024年02月11日
    浏览(10)
  • 浅谈拉格朗日插值法

    浅谈拉格朗日插值法

    好像FFT要用到,所以就学习一手 版题 其意义在于: 理解一下: 就是把一个足球踢出去,假设球始终在一个平面上飞行,它的轨迹就可以抽象为 (f(x)) (假设这个函数至于时间有关) 现在你有一些照片,所以你可以得到某几个时间点球的位置,想要还原出这个函数 (f(x)) 的

    2023年04月25日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包