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

2 ビュー (過去 30 日間)
Vishnu Sree Shanthanu
Vishnu Sree Shanthanu 2023 年 2 月 8 日
コメント済み: Muskan 2023 年 3 月 23 日
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 件のコメント
Sulaymon Eshkabilov
Sulaymon Eshkabilov 2023 年 2 月 9 日
It is working ok, e.g. n=105.
Muskan
Muskan 2023 年 3 月 23 日
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

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangePolynomials についてさらに検索

製品


リリース

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by