Effacer les filtres
Effacer les filtres

lagrange interpolation, .m

314 vues (au cours des 30 derniers jours)
buxZED
buxZED le 16 Mar 2011
can anyone explain me how to use this program
function y=lagrange(x,pointx,pointy)
%
%LAGRANGE approx a point-defined function using the Lagrange polynomial interpolation
%
% LAGRANGE(X,POINTX,POINTY) approx the function definited by the points:
% P1=(POINTX(1),POINTY(1)), P2=(POINTX(2),POINTY(2)), ..., PN(POINTX(N),POINTY(N))
% and calculate it in each elements of X
%
% If POINTX and POINTY have different number of elements the function will return the NaN value
%
% function wrote by: Calzino
% 7-oct-2001
%
n=size(pointx,2);
L=ones(n,size(x,2));
if (size(pointx,2)~=size(pointy,2))
fprintf(1,'\nERROR!\nPOINTX and POINTY must have the same number of elements\n');
y=NaN;
else
for i=1:n
for j=1:n
if (i~=j)
L(i,:)=L(i,:).*(x-pointx(j))/(pointx(i)-pointx(j));
end
end
end
y=0;
for i=1:n
y=y+pointy(i)*L(i,:);
end
end
  2 commentaires
Jatin  Arora
Jatin Arora le 8 Août 2016
How to run this code
Hardipsinh Jadeja
Hardipsinh Jadeja le 24 Avr 2018
Modifié(e) : Hardipsinh Jadeja le 24 Avr 2018
If size of pointx and pointy is same size then why not print the statement

Connectez-vous pour commenter.

Réponse acceptée

Matt Tearle
Matt Tearle le 16 Mar 2011
pointx and pointy are two vectors of data values, x is a vector of points where you want to interpolate. For example:
x = 0:10;
y = x.^2;
xx = linspace(0,10);
yy = lagrange(xx,x,y);
plot(x,y,'o',xx,yy,'.')
As an aside, with no offense intended to Calzino, there are other options available for interpolation. Firstly, of course, interp1 is a standard MATLAB function, with options for linear, cubic spline, and PCHIP interpolation. Cleve Moler (aka The Guy Who Wrote MATLAB) also has a Lagrange interpolation function available for download.
  7 commentaires
Russell
Russell le 15 Oct 2020
@Matt Tearle
That link is dead, I don't suppose you have an updated one?
Walter Roberson
Walter Roberson le 15 Oct 2020
Note: the File Exchange has some more advanced polyinterp functions.

Connectez-vous pour commenter.

Plus de réponses (5)

Matt Fig
Matt Fig le 16 Mar 2011
This is really a question for the author of the program. I believe it is also bad etiquette to post somebody's code like that without permission.
Did you try to contact the author?
  3 commentaires
Matt Fig
Matt Fig le 16 Mar 2011
Ah, but I wasn't talking about harm, just polite behavior. The author should have been contacted first, that's all.
Matt Tearle
Matt Tearle le 16 Mar 2011
Fair call. I guess it does open the door for people to bash the author's code in a separate location, which would be uncool.

Connectez-vous pour commenter.


SAM Arani
SAM Arani le 30 Jan 2021
%% Lagrangian interpolation
clear;clc;close all;
X=[-3 -2.5 -1 0 2 3.75 4.25 7];
Y=(sqrt(1+abs(X)));
xq=min(X):0.1:max(X);
f=(sqrt(1+abs(xq)));
syms x
S=0;
for i=1:length(X)
temp=X;
A=temp(i);
temp(i)=[];
L=prod((x-temp)./(A-temp),'all');
S=(L*Y(i))+S;
L=[];
end
figure()
fplot(S,'black--',[min(X) max(X)]);
hold on
F=interp1(X,Y,xq);
plot(xq,F,"bo");
hold on
plot(xq,f,"r*");
legend("Lagrangian","interp1","f(x)",'Location','north');
xlabel(" X axis ");
ylabel(" Y axis");
title("Lagrangian interpolation VS interp1-MatlabFunction")
Above we can see an easy way to implement lagrangian interpolation which has been checked with matlab interp1() function;
From MohammadReza Arani
mohammadrezaarani@ut.ac.ir
  4 commentaires
image-pro
image-pro le 19 Avr 2022
yes, but how to code all this?
Walter Roberson
Walter Roberson le 19 Avr 2022
See https://www.mathworks.com/matlabcentral/fileexchange/?term=tag:%22digitize%22 for a number of File Exchange contributions that try to extract data from images of graphs.

Connectez-vous pour commenter.


norah
norah le 10 Mai 2023
how can i find error bound ?

John
John le 31 Juil 2023
Modifié(e) : Walter Roberson le 10 Oct 2023
function Y = Lagrange_371(x,y,X)
n = length(x) - 1;
Y = 0;
for i = 0:n
prod = 1;
for j = 0:n
if i ~= j
prod = prod.*(X - x(j+1))./(x(i+1) - x(j+1));
end
end
Y = Y + prod*y(i+1);
end
end
  1 commentaire
Oussama
Oussama le 10 Oct 2023
bonsoir ,comment appliquer cette fonction sur un exemple

Connectez-vous pour commenter.


MUHAMMAD IQRAM HAFIZ
MUHAMMAD IQRAM HAFIZ le 21 Mai 2024
function P = lagrange_interpolation_3point(x1, y1, x2, y2, x3, y3, x)
% Compute the Lagrange basis polynomials
L1 = ((x - x2) .* (x - x3)) / ((x1 - x2) * (x1 - x3));
L2 = ((x - x1) .* (x - x3)) / ((x2 - x1) * (x2 - x3));
L3 = ((x - x1) .* (x - x2)) / ((x3 - x1) * (x3 - x2));
% Compute the Lagrange polynomial
P = y1 * L1 + y2 * L2 + y3 * L3;
end
% Given points
x0 = 0; y0 = 0;
x1 = 2; y1 = 10;
x2 = 4; y2 = 20;
x3 = 8; y3 = 100;
% Point at which to evaluate the polynomial
x = 4.5;
% Calculate the interpolation polynomial at x = 4.5
P = lagrange_interpolation_3point(x1, y1, x2, y2, x3, y3, x);
% Display the result
fprintf('The interpolated value at x = %.1f is P = %.2f\n', x, P);

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by