拉格朗日插值法MATLAB实现(附代码、实例、详解) 您所在的位置:网站首页 excel正弦函数公式如何编程 拉格朗日插值法MATLAB实现(附代码、实例、详解)

拉格朗日插值法MATLAB实现(附代码、实例、详解)

2023-11-21 09:11| 来源: 网络整理| 查看: 265

第一部分:问题分析

(1)实验题目:拉格朗日插值算法

具体实验要求:要求学生运用拉格朗日插值算法通过给定的平面上的n个数据点,计算拉格朗日多项式Pn(x)的值,并将其作为实际函数f(x)的估计值。用matlab编写拉格朗日插值算法的代码,要求代码实现用户输入了数据点(xi,f(xi))、插值点之后,程序能够输出插值点对应的函数估值。

(2)实验目的:让同学们进一步掌握拉格朗日插值算法的原理以及运算过程,并且通过matlab编程培养实际的上机操作能力和代码能力。

第二部分:数学原理 

 要估计任一点ξ,ξ≠xi,i=0,1,2,...,n,则可以用Pn(ξ)的值作为准确值f(ξ)的近似值,此方法叫做“插值法”。

称式(*)为插值条件(准则),含xi(i=0,1,...,n)的最小区间[a,b],其中a=min{x0,x1,...,xn},b=max{x0,x1,...,xn}。

具体实现形式:

 第三部分:程序设计流程

(1)langrange插值函数(被调用者):

(2)执行函数(面向用户:调用者):

 第四部分:代码实现

拉格朗日插值函数实现:

(每次最外层的for循环,打印一次插值点以及其期望值)

function[] = Lagrange(x,f,x0) %得出数据点的个数 n = length(x) ; %得出插值点的个数 m = length(x0); for i = 1:m D = x0(i); y = 0.0; for k = 1:n %置l(x)的初值 l = 1.0; for j = 1:n %迭代表示出l(xj) %记住,第k个是取不到的!!!! if j~=k l = l*(D-x(j))/(x(k)-x(j)); end end %Pn(x) y = y + l*f(k); end xx = num2str(D,'%.4f'); y =num2str(y,'%.4f'); disp('f(x)的近似值点坐标为:'); disp(['(',xx,',',y,')']); end end

 用户调用部分: 

(1)情形一:

(实现结果:给定插值函数的区间,给定原函数f(x),给定插值点-->实现拉格朗日估值的计算)

注意:

1.拉格朗日坐标点的x坐标向量,通过区间加步长实现:所以用户只需修改区间端点,程序便可以根据输入的区间等分次数n,自行合成

2.通过syms x将原函数f(x)表示出来(由用户自己输入),程序便可以根据输入的f(x)自动计算出对应数据节点的函数值 

%根据插值要求,自行算出所需要输出的坐标值 n = input("插值等分的次数n="); X = -5:(10/n):5; m = length(X);%获取节点的个数 Y = zeros(1,m);%创造全0向量为插值点函数值做铺垫 syms x; %在此输入测试的函数f(x) f(x) = (1+x^2)^(-1); for i = 1:m Y(i) = f(X(i)); end x0 = input('请输入插值点x0数组:'); Lagrange(X,Y,x0);

(2)情形二:

(实现结果:针对给定的无规律离散数据点,且未给定对应的原函数f(x))

%输入数据点的坐标 x = input("输入数据点x坐标的向量:"); y = input("输入数据点y坐标的向量:"); %输入所要估值的插值点的x坐标向量 x0 = input('请输入插值点x0数组:'); Lagrange(X,Y,x0);



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有