بسم الله الرحمن الرحيم
لى غيبة طويلة على المنتدى الرائع منتدى عرب تيم
بصرحة ليكم وحشة والله
عدت اليوم اليكم مع فكرة احاول تنفيذها وهى حل المعادلات الرياضية باستخدام C أو C++ والتى يتم حلها عن طريق التحليل العددى
فمثلا لدينا دالة
f(x)=ax^3 + bx^2 + cx + d = 0
ونريد ايجاد احد حلولها فيمكننا ذلك يدويا عن طريق وضع x فى جانب والكميات الاخرى فى جانب فستكون على سبيل المثال
x = -d/((a*x*x)+(b*x)+c)
ثم نقوم بوضع قيمة ابتدائية وتسمى start solution مثلا
x0 = 1
وسنحصل على الناتج من x= قيمة
القيمة الناتجة سنقوم بتمسيتها x1 ونقوم بتعويضها بنفس المعادلة لنحصل على x2 ونعوض بها ونحصل على x3
مثال حى
لدينا المعادلة
f(x) = X^3 + x - 1 = 0
سنقوم بوضع X فى جانب والباقين فى جانب اخر لنحصل على
x = 1 /((x^2)+1)
وعند التعويض عن x0=1 مثلا ستحصل على قيمة لـ x وسنقوم بتسميتها x1 مثلا
ثم نأخذ x1 ونعوض بنفس المعادلة السابقة لنحصل على x2 وهكذا
ليكون لدينا ناتج هو
x0 و x1 و x2 و x3 و ....
الان اتسائل ماذا لو كان الأس عبارة عن x^n حيث n هو قيمة الاس وليكن مثلا 4 او 5 او اى رقم كبير
كيف يمكننا الحصول على x فى جانب و الباقي فى جانب اخر
بمعنى اخر كيف يمكن ان اتعامل مع المعادلات بهذه الطريقة داخل السى ؟
فمثلا
f(x) = ax^n + bx^(n-1) + cx^(n-2) + .......
ونحصل على x فى طرف وليكن
x = g(x) = شوية حاجات بقى
هذه الفكرة موجود فى الآلات الحاسبة المتقدمة ولكنى اريد ان اقوم بفعلها باستخدام c او حتى c++
كود السى الذى قمت بانشائة اذا كان الاس عبارة عن X اس 2
#include<stdio.h>
main(){
float a,b,c,x;
int n ;
printf("Enter a : ");
scanf("%f",&a); // store value of a
printf("Enter b : ");
scanf("%f",&b); // store value of b
printf("Enter c : ");
scanf("%f",&c); // store value of c
printf("Enter x[0] : ");
scanf("%f",&x); // store value of x0
printf("Enter number of solution ( n ) : ");
scanf("%d",&n); // store value of x0
printf("result : \n x[0]= %f \n",x);
for(int i = 1 ; i <= n ; i++){
x = (-c)/((a*x)+b);
printf(" x[%d] = %f \n",i,x);
}
}واخر ل X اس 3
#include<stdio.h>
main(){
float a,b,c,d,x;
int n ;
printf("Enter a : ");
scanf("%f",&a); // store value of a
printf("Enter b : ");
scanf("%f",&b); // store value of b
printf("Enter c : ");
scanf("%f",&c); // store value of c
printf("Enter d : ");
scanf("%f",&d); // store value of c
printf("Enter x[0] : ");
scanf("%f",&x); // store value of x0
printf("Enter number of solution ( n ) : ");
scanf("%d",&n); // store value of x0
printf("result : \n x[0]= %f \n",x);
for(int i = 1 ; i <= n ; i++){
x = -d/((a*x*x)+(b*x)+c) ;
printf(" x[%d] = %f \n",i,x);
}
}ولكن اتسائل هل اقوم بعمل عدد لا نهائى من البرامج ام هل يمكننى ان اجد حلال لهذه المسألة
بانتظار افكاركم واقتراحاتكم
عبدالعزيز
