أنت هنا:برمجها»التحليل الرقمي»الإستكمال»طريقة لاغرونج
طريقة لاغرونج طريقة لاغرونج
قيم الموضوع
(1 تصويت)
 
 

مصطلحات

العربية: طريقة لاغرونج

الإنجليزية: Lagrange method

الفرنسية: Methode de Lagrange


المبدأ

Pn(x)لتكن   حدودية معرفة كالتالي:

Pn(xi) = yi ,    i = 0,... n

نحسب حدودية الاستكمالPn(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)
x
0=0, x1=1, x2=3, x3=9/2, x4=5
y0=0, y1=3, y2=5, y3=4, y4=3
L0(2) = ((2-1)(2-3)(2-9/2)(2-5))/((0-1)(0-3)(0-9/2)(0-5)) = -1/9
L1(2) = ((2-0)(2-3)(2-9/2)(2-5))/((1-0)(1-3)(1-9/2)(1-5)) = 15/28
L2(2) = ((2-0)(2-1)(2-9/2)(2-5))/((3-0)(3-1)(3-9/2)(3-5)) = 5/6
L3(2) = ((2-0)(2-1)(2-3)(2-5))/((9/2-0)(9/2-1)(9/2-3)(9/2-5)) = -32/63
L4(2) = ((2-0)(2-1)(2-3)(2-9/2))/((5-0)(5-1)(5-3)(5-9/2)) = 1/4
P(2) = 0*(-1/9)+3*(15/28)+5*(5/6)+4*(-32/63)+3*(1/4) = 283/63

البرمجة

#include <math.h>
#include <conio.h>
#define NMAX 5
void it_coef_lagrange(int n,double x[NMAX],double f[NMAX],double d[NMAX]); double it_pol_lagrange(int n,double d[NMAX],double x[NMAX],double alpha);
main() { double alpha,ord; int j; double x[NMAX],f[NMAX]; double d[NMAX]; clrscr(); printf("Méthode de Lagrange\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; it_coef_lagrange(4,x,f,d); for(j=0;j<=20;j++) { alpha=0.25*j; ord=it_pol_lagrange(4,d,x,alpha); printf("x =%6.2f y =%24.17e \n",alpha,ord); } }

نتيجة البرنامج

في كل عملية حسابية، يظهر البرنامج قيمة المتغير وقيمة ملائمة لحدودية الاستكمال.

x =  0.00     y =  0.0000000000000000e+00   
x =  0.25     y =  9.3624751984126964e-01  
x =  0.50     y =  1.7380952380952381e+00  
x =  0.75     y =  2.4213169642857140e+00  
x =  1.00     y =  3.0000000000000000e+00  
x =  1.25     y =  3.4865451388888884e+00  
x =  1.50     y =  3.8916666666666671e+00  
x =  1.75     y =  4.2243923611111116e+00  
x =  2.00     y =  4.4920634920634921e+00  
x =  2.25     y =  4.7003348214285712e+00  
x =  2.50     y =  4.8531746031746019e+00  
x =  2.75     y =  4.9528645833333327e+00  
x =  3.00     y =  5.0000000000000000e+00  
x =  3.25     y =  4.9934895833333339e+00  
x =  3.50     y =  4.9305555555555562e+00  
x =  3.75     y =  4.8067336309523814e+00  
x =  4.00     y =  4.6158730158730155e+00  
x =  4.25     y =  4.3501364087301582e+00  
x =  4.50     y =  4.0000000000000000e+00  
x =  4.75     y =  3.5542534722222223e+00  
x =  5.00     y =  3.0000000000000000e+00  

الدالتين it_pol_lagrange و it_coef_lagrange

يجب إستدعاء هاتين الدالتين بشكل متتابع:

معايير الدالة it_coef_lagrange:

  • n : عدد نقاط الإستكمال
    x : جدول يحتوي على أفاصيل الإستكمال
    f : جدول يحتوي على قيم f(x)i لنقاط الإستكمال
    d : جدول يضم معاملات الحدودية في البداية

    تكون النتائج في الجدول d بحيث يتم حساب معاملات الحدوديات بالقاعدة المرتبطة بـ  n+1 قسمة مختلفة للمتغير المعطى من خلال المعيار x.

 

معايير الدالة it_pol_lagrange:

  • n :عدد نقاط الإستكمال
    d : جدول يحتوي على معاملات حدوديات القاعدة
    x : جدول يحتوي على أفاصيل الإستكمال
    alpha : قيمة المتغير

ترجع هذه الدالة، بخصوص القيمة المعطاة للمتغير، قيمة حدودية الإستكمال المحسوبة انطلاقا من عناصر جدول معاملات حدوديات القاعدة.

الثابتة الصحيحة NMAX تساوي العدد القصوي لنقاط الإستكمال.

void it_coef_lagrange(int n,double x[NMAX],double f[NMAX],double d[NMAX]) 
{
int i,j;
for(i=0;i<=n;i++)
{
d[i]=f[i];
for(j=0;j<=n;j++)
if(j!=i) d[i]/=x[i]-x[j];
}
}

double it_pol_lagrange(int n,double d[NMAX],double x[NMAX],double alpha)
{
int i,j;
double l,p;
p=0;

for(i=0;i<=n;i++)
{
l=d[i];
for(j=0;j<=n;j++)
if(j!=i) l*=alpha-x[j];
p+=l;
}
return(p);
}
مقالات أخرى من نفس الفئة « الإستكمال الرياضي طريقة نوفيل إيتكن »

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث