freeCodeCamp/guide/arabic/mathematics/simpsons-rule/index.md

116 lines
4.5 KiB
Markdown
Raw Normal View History

---
title: Simpson's Rule
localeTitle: حكم سيمبسون
---
# حكم سيمبسون
في التحليل العددي ، تعتبر قاعدة سيمبسون طريقة للتكامل _العددي (التقريب_ الرقمي للاندماجات _المحددة)_ .
تقارب قاعدة سيمبسون تكامل النموذج ،
![](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim1.png)
أين،
* `f(x)` يسمى _integrand_
* `a` = الحد الأدنى للتكامل
* `b` = الحد الأعلى للتكامل
## حكم سيمبسون 1/3
![Simpson's Rule](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim01.jpg)
كما هو موضح في الرسم البياني أعلاه ، يقترب الرقم integre `f(x)` من متعدد الحدود من الدرجة الثانية ؛ يكون interpolant التربيعي `P(x)` .
يتبع التقريب ،
![](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim3.png)
استبدال `(ba)/2` as `h` ، we get،
![](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim4.png)
كما ترى ، هناك عامل `1/3` في التعبير أعلاه. لهذا السبب ، يطلق عليه اسم **قاعدة سيمبسون 1/3** .
إذا كانت الوظيفة متذبذبة للغاية أو تفتقر إلى المشتقات في نقاط معينة ، فقد تفشل القاعدة المذكورة أعلاه في الحصول على نتائج دقيقة. تتمثل إحدى الطرق الشائعة لمعالجة هذه المشكلة في تقسيم الفاصل الزمني `[a,b]` إلى عدد من subintervals الصغيرة. ثم يتم تطبيق قاعدة سيمبسون على كل فئة فرعية ، مع جمع النتائج لإنتاج تقريب للتكامل خلال الفترة الزمنية بأكملها. يطلق على هذا النوع من النهج اعدة سيمبسون المركبة_ .
لنفترض أن الفاصل `[a,b]` مقسم إلى `n` subintervals ، مع `n` رقم زوجي. ثم ، يتم إعطاء القاعدة المركبة سيمبسون من قبل ،
![](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim7.png)
حيث **x j = a + jh** لـ **j = 0،1،…، n-1، n** with **h = (ba) / n** ؛ على وجه الخصوص ، **x 0 = a** و **x n = b** .
#### مثال:
**تقريبًا قيمة التكامل المضمن أدناه ، مع أخذ n = 8.**
![](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim9.png)
تنفيذ قاعدة 1/3 من Simpson في C ++ كما يلي:
`#include<iostream>
#include<cmath>
using namespace std;
float f(float x)
{
return x*sin(x); //Define the function f(x)
}
float simpson(float a, float b, int n)
{
float h, x[n+1], sum = 0;
int j;
h = (ba)/n;
x[0] = a;
for(j=1; j<=n; j++)
{
x[j] = a + h*j;
}
for(j=1; j<=n/2; j++)
{
sum += f(x[2*j - 2]) + 4*f(x[2*j - 1]) + f(x[2*j]);
}
return sum*h/3;
}
int main()
{
float a,b,n;
a = 1; //Enter lower limit a
b = 4; //Enter upper limit b
n = 8; //Enter step-length n
if (n%2 == 0)
cout<<simpson(a,b,n)<<endl;
else
cout<<"n should be an even number";
return 0;
}
`
## سيمبسون 3/8 القاعدة
تشبه قاعدة 3/8 لـ Simpson قاعدة 1/3 الخاصة بـ Simpson. والفرق الوحيد هو ، هنا ، أن interpolant هو متعدد الحدود التكعيبية. قاعدة 3/8 تقارب ضعف دقة القاعدة 1/3 ، ولكنها تستخدم قيمة دالة واحدة أكثر.
تنص قواعد 3/8 لـ Simpson على ما يلي:
![](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim6.png)
استبدال `(ba)/3` as `h` ، we get،
![](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim5.png)
قاعدة 3/8 لـ Simpson للفترات n (يجب أن تكون n مضاعفات 3):
![](https://raw.githubusercontent.com/pranabendra/articles/master/Simpson-Method/sim8.png)
حيث **x j = a + jh** لـ **j = 0،1،…، n-1، n** with **h = (ba) / n** ؛ على وجه الخصوص ، **x 0 = a** و **x n = b** .
### معلومات اكثر:
1. [حكم سيمبسون](https://en.wikipedia.org/wiki/Simpson%27s_rule)
2. [حكم سيمبسون 1/3](w3.gazi.edu.tr/~balbasi/mws_gen_int_txt_simpson13.pdf)