MATLAB: Interpolating a table of data by Newton’s forward and backward difference interpolation formula


Problem :
            Write a program to find out y(10) and y(1) for the following tabular data:
x
x0 = 3
x1 = 4
x2 = 5
x3 = 6
x4 = 7
x5 = 8
x6 =9
y
y0 = 2.7
y1 = 6.4
y2 = 12.5
y3 = 21.6
y4 = 34.3
y5 = 51.2
y6 = 72.9


Solution:
Input: for y(1)
clc
clear all
close all

x = [3 4 5 6 7 8 9];
y = [2.7 6.4 12.5 21.6 34.3 51.2 72.9];

n = length(x);
p=1;

d(:,1)=y’;

for j = 2:n
    for k = j:n
        d(k,j)=(d(k-1,j-1) – d(k,j-1))/(x(k-j+1)-x(k));
    end
end

a = diag(d)’;
df(1)=1;
c(1) = a(1);

for j = 2:n
    df(j) = (p-x(j-1))*df(j-1);
    c(j) = a(j) * df(j);
end
fp = sum(c)
Output:
fp = 0.1000



Input: for y(10)
clc
clear all
close all

x = [3 4 5 6 7 8 9];
y = [2.7 6.4 12.5 21.6 34.3 51.2 72.9];

n = length(x);
p=10;

d(:,1)=y’;

for j = 2:n
    for k = j:n
        d(k,j)=(d(k-1,j-1) – d(k,j-1))/(x(k-j+1)-x(k));
    end
end

a = diag(d)’;
df(1)=1;
c(1) = a(1);

for j = 2:n
    df(j) = (p-x(j-1))*df(j-1);
    c(j) = a(j) * df(j);
end
fp = sum(c)

Output:
fp = 100.0000


أحدث أقدم