Newton Divided Difference polynomial not working at end point for higher values of "n"

2 Ansichten (letzte 30 Tage)
The code below is for generating a Newton Divided difference polynomial for a Runge's function 1/1+36x^2 between x = -1 to 1. I have generated the code which is working fine for n=6,11,21 with proper symmetry of oscillations about y axis, most importantly passing through the given data points. But at higher values of n, say 101, the polynomial does not pass through the point at x =1. Please spot the error in the code as I do not understand why its not working only for a certain n value.
n3 = 101;
X3 = vpa(linspace(-1,1,n3)); % x values of data points
Y3 = 1./(1.+(36.*(X3.^2))); % y values of data points
F3 = NaN(n3,n3+1);
for i = 1:n3
F3(i,1) = X3(1,i);
end
for i = 1:n3
F3(i,2) = Y3(1,i);
end
for i= 3:n3+1
for j = 1:n3-1
if (j<=n3-(i-2))
F3(j,i) = (F3(j+1,i-1) - F3(j,i-1))/(F3(j+i-2,1)- F3(j,1)); % generating newton divided diff. table
end
end
end
syms x
phi3 = sym(ones (1,n3));
for j = 2:n3
phi3(1,j) = phi3(1,j-1)*(x-X3(1,j-1)); % generating coefficients of newton polynomial
end
N3 = 0;
for i = 2:n3+1
N3 = N3 + F3(1,i)*phi3(1,i-1); % generating newton polynomial
end
N3
plot (X3,Y3,'o')
axis([-1.5 1.5 -0.2 1.25])
hold on
fplot(N3,'b-')
hold on
eval(subs(N3,vpa(x),1)) % checking whether the polynomials shows the correct values of y at x =1
  2 Kommentare
Muskan
Muskan am 23 Mär. 2023
Hi Vishnu,
I tried running your code in MATLAB R2022b, and for the higher value of n, which you mentioned n=101, it seemed to work fine. You can try clearing out your workspace and then running the code.
Let me know if there are any other issues.
Thanks,
Muskan

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Polynomials finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by