الفرنسية: Méthode de Simpson
المبدأ
الحساب العددي لـ I =
نجزئ المجال الاندماج [a, b] إلى n مجال ذي طول يساوي h = ، محدودة بنقط التجزيء
xi = a + nh , i = 0,... N (هو خطوة التكامل).
في كل مجال [xi, xi+1], i = 0,... n-2، نستبدل f بحدوديتها الإستكمالية من الدرجة 2 المار من النقط
(xi, f(xi)) و (xi+2, f(xi+2)) و (xi+1, f(xi+1))
وبذلك نستنتج القيمة المقربة لـ I.
الصيغة القاعدة (n=2)
الصيغة التركيب
(n زوجي)
الارتياب :
مثال
نعتبر التكامل المعرف:
القيمة المضبوط لهذا التكامل هو Log(2)
حساب الرقمي لقيمة I .
الحسبتين الأوليتين
f(a) = f(0) = 1/(0+1) = 1
f(b) = f(1) = 1/(1+1) = 1/2
f(1/2) = 1/(1/2+1) = 2/3
n=2(صيغة القاعدة):
S(1/2) = ((1/2)/3)(f(0) + 4f(1/2) + f(1)) = ((1/2)/3)(1 + 4(2/3) +(1/2))= 25/36
f(1/4) = 1/(1/4+1) = 4/5
f(3/4) = 1/(3/4+1) = 4/7
n=4 :
S(1/4) = ((1/4)/3)(f(0) + f(1) + 2f(1/2) + 4(f(1/4)+f(3/4))) = ((1/4)/3)(1 + (1/2) + 2(2/3) + 4((4/5)+(4/7))) = 1747/2540
البرمجة
#include <math.h> #include <conio.h>
double qu_f(double x) { return(1/(x+1)); }
double qu_simpson(double a,double b,long n);
main() { int i; long n; double a,b,s,vr_val,er; clrscr(); a=0;b=1; vr_val=log(2); printf("Méthode de Simpson\n"); printf("Vraie valeur = %.17e\n",vr_val); printf(" n Valeur calculée Erreur Taux\n"); n=1; for(i=1;i<=11;i++) { n *= 2; s=qu_simpson(a,b,n); er=fabs(s-vr_val); printf("%4ld %.17e %.3e %.3e\n",n,s,er,er*pow(n,4)); } }
(ملاحظة :سيكون مكلفا حساب القيمة بالأولى استكمال لطريقة غومبغج)
نتيجة البرنامج
في كل كرة، البرنامج يظهر قيمة n وقيمة شبه المنحرف والارتياب ونسبة التقارب (نسبة الخطأ وللقيمة h4).
القيمة الحقيقية= 6.9314718055994529e-01
n النسبة الارتياب القيمة المحسوبة
2 6.9444444444444453e-01 1.30e-03 2.08e-02
4 6.9325396825396834e-01 1.07e-04 2.73e-02
8 6.9315453065453070e-01 7.35e-06 3.01e-02
16 6.9314765281941904e-01 4.72e-07 3.09e-02
32 6.9314721028982318e-01 2.97e-08 3.12e-02
64 6.9314718242145490e-01 1.86e-09 3.12e-02
128 6.9314718067634251e-01 1.16e-10 3.12e-02
256 6.9314718056722124e-01 7.28e-12 3.12e-02
512 6.9314718056039981e-01 4.55e-13 3.12e-02
1024 6.9314718055997371e-01 2.84e-14 3.12e-02
2048 6.9314718055994728e-01 2.00e-15 3.52e-02
4096 6.9314718055994329e-01 2.00e-15 5.62e-01
الدالة الرئيسية qu_simpson
معايير هذه الدالة هي كالتالي:
a و b: حدي المجال [a, b]
n: العدد (الزوجي) للمجالات الصغرى (ذي الطول h)
تستدعي الدالة الرئيسة دالة أخرى هي كالتالي:
double qu_f(double x)
التي يجب أن تعرف في البرنامج الأساسي وهي تمثل الدالة الرياضية f.
ترجع الدالة القيمة المحسوبة باستعمال طريقة سيبسون.
double qu_simpson(double a,double b,long n)
{
long i;
double h,s,x;
h=(b-a)/n;
s=qu_f(a)+qu_f(b);
x=a;
for(i=1;i<=n-1;i++)
{
x += h;
if (fmod(i,2)==1) s += 4*qu_f(x);
else s += 2*qu_f(x);
}
return(s*h/3);
}