lagrange interpolation, .m
Ältere Kommentare anzeigen
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 Kommentare
Jatin Arora
am 8 Aug. 2016
How to run this code
Hardipsinh Jadeja
am 24 Apr. 2018
Bearbeitet: Hardipsinh Jadeja
am 24 Apr. 2018
If size of pointx and pointy is same size then why not print the statement
Akzeptierte Antwort
Weitere Antworten (5)
Matt Fig
am 16 Mär. 2011
1 Stimme
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 Kommentare
Matt Tearle
am 16 Mär. 2011
It's from File Exchange, so I don't seem any great harm in posting it.
Matt Fig
am 16 Mär. 2011
Ah, but I wasn't talking about harm, just polite behavior. The author should have been contacted first, that's all.
Matt Tearle
am 16 Mär. 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.
SAM Arani
am 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 Kommentare
image-pro
am 18 Apr. 2022
how to imaplement this method for image?
Walter Roberson
am 18 Apr. 2022
X = 1:numel(YourImage);
Y = double(YourImage(:));
This is not likely to give good results.
Perhaps you want something different than this? Perhaps the image has a curve already drawn in it, and you want to extract the points from the image and then do interpolation on the curve?
image-pro
am 19 Apr. 2022
yes, but how to code all this?
Walter Roberson
am 19 Apr. 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.
norah
am 10 Mai 2023
0 Stimmen
how can i find error bound ?
John
am 31 Jul. 2023
Bearbeitet: Walter Roberson
am 10 Okt. 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 Kommentar
Oussama
am 10 Okt. 2023
bonsoir ,comment appliquer cette fonction sur un exemple
MUHAMMAD IQRAM HAFIZ
am 21 Mai 2024
0 Stimmen
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);
Kategorien
Mehr zu Spline Postprocessing finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!