مصطلحات
العربية: طريقة نوفيل إيتكن
الإنجليزية: Neville - Aitken's algorithm
الفرنسية: Algorithme de Neville-Aitken
المبدأ
Pn(x)لتكن حدودية معرفة كاتالي:
Pn(xi) = yi , i = 0,... n
نحسب حدودية الاستكمال Pn(x) باستعمال صيغة الترجع.
الخوارزم
تهيئ
Pi,i(x) = yi, i = 0,... n
تكرار
حدودية الاستكمال هي Pn(x) = P0,n(x)
مثال
نعتبر حدودية الاستكمال P(x) بحيث: P(0) = 0, P(1)=3, P(3)=5, P(9/2)=4, P(5)=3
احسب قيمةP(x) في 20 نقطة متباعدة بنفس المسافة من المجال [0, 5]
حسابP(2)
x0=0, x1=1, x2=3, x3=9/2, x4=5
y0=0, y1=3, y2=5, y3=4, y4=3
P0,0(2) = y0 = 0
P1,1(2) = y1 = 3
P2,2(2) = y2 = 5
P3,3(2) = y3 = 4
P4,4(2) = y4 = 3
P0,1(2) = ((2-0)*3-(2-1)*0)/(1-0) = 6
P1,2(2) = ((2-1)*5-(2-3)*3)/(3-1) = 4
P2,3(2) = ((2-3)*4-(2-9/2)*5)/(9/2-3) = 17/3
P3,4(2) = ((2-9/2)*3-(2-5)*4)/(5-9/2) = 9
P0,2(2) = ((2-0)*4-(2-3)*6)/(3-0) = 14/3
P1,3(2) = ((2-1)*17/3-(2-9/2)*4)/(9/2-1) = 94/21
P2,4(2) = ((2-3)*9-(2-5)*17/3)/(5-3) = 4
P0,3(2) = ((2-0)*94/21-(2-9/2)*14/3)/(9/2-0) = 866/189
P1,4(2) = ((2-1)*4-(2-5)*94/21)/(5-1) = 61/14
P0,4(2) = ((2-0)*61/14-(2-5)*866/189)/(5-0) = 283/63
P(2) = P0,4(2) = 283/63
البرمجة
#include <math.h> #include <conio.h> #define NMAX 5
double it_pol_neville(int n,double x[NMAX],double f[NMAX],double alpha);
main() { double alpha,ord; int j; double x[NMAX],f[NMAX]; clrscr(); printf("Méthode de Neville-Aitken\n"); x[0]=0;x[1]=1;x[2]=3;x[3]=4.5;x[4]=5; f[0]=0;f[1]=3;f[2]=5;f[3]=4;f[4]=3; for(j=0;j<=20;j++) { alpha=0.25*j; ord=it_pol_neville(4,x,f,alpha); printf("x =%6.2f y =%24.17e \n",alpha,ord); } }
نتيجة البرنامج
في كل عملية حسابية، البرنامج يظهر قيمة المتغير وقيمة الملائمة لحدودية الاستكمال.
x = 0.00 y = 0.0000000000000000e+00
x = 0.25 y = 9.3624751984126986e-01
x = 0.50 y = 1.7380952380952381e+00
x = 0.75 y = 2.4213169642857144e+00
x = 1.00 y = 3.0000000000000000e+00
x = 1.25 y = 3.4865451388888888e+00
x = 1.50 y = 3.8916666666666666e+00
x = 1.75 y = 4.2243923611111107e+00
x = 2.00 y = 4.4920634920634921e+00
x = 2.25 y = 4.7003348214285712e+00
x = 2.50 y = 4.8531746031746028e+00
x = 2.75 y = 4.9528645833333336e+00
x = 3.00 y = 5.0000000000000000e+00
x = 3.25 y = 4.9934895833333330e+00
x = 3.50 y = 4.9305555555555554e+00
x = 3.75 y = 4.8067336309523814e+00
x = 4.00 y = 4.6158730158730155e+00
x = 4.25 y = 4.3501364087301591e+00
x = 4.50 y = 4.0000000000000000e+00
x = 4.75 y = 3.5542534722222223e+00
x = 5.00 y = 3.0000000000000000e+00
الدالة الرئيسية it_pol_neville
- معايير الدالة هي كالتالي:
n :عدد نقاط الإستكمال
d : جدول يحتوي على معاملات حدوديات القاعدة
x : جدول يحتوي على أفاصيل الإستكمال
alpha : قيمة المتغير
ترجع هذه الدالة، بخصوص القيمة المعطاة للمتغير، قيمة حدودية الإستكمال المحسوبة باستعمال طريقة نوفيل إيتكن.
الثابتة الصحيحة NMAX تساوي العدد القصوي لنقاط الإستكمال.
double it_pol_neville(int n,double x[NMAX],double f[NMAX],double alpha)
{
int i,j;
double p;
double d[NMAX][NMAX];
for(j=0;j<=n;j++)
d[j][0]=f[j];
for(j=1;j<=n;j++)
for(i=0;i<=n-j;i++)
d[i][j]=((alpha-x[i])*d[i+1][j-1]-(alpha-x[i+j])*d[i][j-1])/(x[i+j]-x[i]);
p=d[0][n];
return(p);
}