拉格朗日Lagrange插值多项式

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                本文转载自:http://hwiechern.blog.163.com/blog/static/106796622007913104859712/

设函数f(x)在区间[a,b]上连续,在给定n+1个不同节点拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学上的值分别为拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学,要求构造一个不超过n次的多项式: 拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学, 去近似函数y=f(x),使之满足插值条件:拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

它的几何意义是,用过n+1个不同点拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学的n次代数曲线Ln(x)近似地代替曲线 y=f(x)

                 拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

现在来构造一般插值多项式Ln(x),设在给定n+1个不同节点拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学上的n次插值基函数分别为拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学,则所求不超过n次的插值多项式表示为:拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

下面求插值基函数拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学由条件:拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

可得插值基函数拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学在各节点上函数值表为:

                    拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

作为任一拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学点的n次插值基函数分别为拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学,由于在除拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学外所有节点取值皆为0,因此,拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

含有因子拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学,又因为拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学为n次多项式,故拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

可表示为:拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

再由条件拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

其中

拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

将Ln称为函数f(x)的拉格朗日值多项式。下面是算法的Matlab实现:

function [p]=Lag_Polyfit(X,Y)
%Matlab函数文件Lag_Polyfit.m
%拉格朗日插值法多项式拟合
%[p]=Lag_polyfit(X,Y)
% X 拟合自变量
% Y 拟合函数值
% p 所得的拟合多项式系数
if size(X)~=size(Y)
   error('变量不匹配');
end                    %如果要拟合的函数值与自变量维数不一样,则退出报错
tic                        %开始记时
format long g              %设置最合适的数字格式                 
r=size(Y); n=r(2);         %n为要拟合的数据长度
p=zeros(1,n);              %保存所得多项式系数
p0=p;  b=0;                %工作变量
W=poly(X);                 %W为以X为根的多项式
dW=polyder(W);             %dW为对多项式W求导后的多项式系数
z=polyval(dW,X);           %z为以dW为系数的多项式对X的值
A=[1 1]; r=A;              %A,r为长度为2的(1,2)向量
for i=1:n                  %计算循环开始
     A=[1,-X(i)];            %A为一次多项式x-x(i)系数
    [p0,r]=deconv(W,A);     %进行多项式除法W/A,p0为商
     b=Y(i)/z(i);
     p0=b.*p0;               %p0为累加项
     p=p+p0;
end                         %循环结束                                                                                 
disp(toc)                   %

例如
%Matlab命令文件LagSin.m
%用拉格朗日插值法拟合[0,2*pi]上的sin函数
x0=linspace(0,2*pi,10);
y0=sin(x0);               %拟合数据采样
p=Lag_Polyfit(x0,y0);     %调用Lag_polyfit计算拟合多项式
x=0:0.02:2*pi;             
y1=sin(x);                %sin函数值
y2=polyval(p,x);          %拟合多项式值
plot(x0,y0,'+',x,y2,'r')       %sin函数(蓝色)与多项式(红色)效果图
命令窗口中输入lagsin观察图形输出窗口
>>logsin        %函数(文件)名不区分大小写

            拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

Ruger现象:

      拉格朗日Lagrange插值多项式 - hubingforever - 民主与科学

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/fjjjyf/article/details/84095279