필터 지우기
필터 지우기

lagrange interpolation, .m

조회 수: 314 (최근 30일)
buxZED
buxZED 2011년 3월 16일
답변: MUHAMMAD IQRAM HAFIZ 2024년 5월 21일
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
Jatin  Arora
Jatin Arora 2016년 8월 8일
How to run this code
Hardipsinh Jadeja
Hardipsinh Jadeja 2018년 4월 24일
편집: Hardipsinh Jadeja 2018년 4월 24일
If size of pointx and pointy is same size then why not print the statement

댓글을 달려면 로그인하십시오.

채택된 답변

Matt Tearle
Matt Tearle 2011년 3월 16일
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
Russell
Russell 2020년 10월 15일
@Matt Tearle
That link is dead, I don't suppose you have an updated one?
Walter Roberson
Walter Roberson 2020년 10월 15일
Note: the File Exchange has some more advanced polyinterp functions.

댓글을 달려면 로그인하십시오.

추가 답변 (5개)

Matt Fig
Matt Fig 2011년 3월 16일
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
Matt Fig
Matt Fig 2011년 3월 16일
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 2011년 3월 16일
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.

댓글을 달려면 로그인하십시오.


SAM Arani
SAM Arani 2021년 1월 30일
%% 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
image-pro
image-pro 2022년 4월 19일
yes, but how to code all this?
Walter Roberson
Walter Roberson 2022년 4월 19일
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.

댓글을 달려면 로그인하십시오.


norah
norah 2023년 5월 10일
how can i find error bound ?

John
John 2023년 7월 31일
편집: Walter Roberson 2023년 10월 10일
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
Oussama
Oussama 2023년 10월 10일
bonsoir ,comment appliquer cette fonction sur un exemple

댓글을 달려면 로그인하십시오.


MUHAMMAD IQRAM HAFIZ
MUHAMMAD IQRAM HAFIZ 2024년 5월 21일
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);

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by