الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[دعونا نفكر سويا] هل يمكن ان ننشئ برنامجا لحل المعادلات مثل الاله

بدأه zizozoro في 25 ديسمبر 2009 · 1 رد · 686 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

لى غيبة طويلة على المنتدى الرائع منتدى عرب تيم

بصرحة ليكم وحشة والله

عدت اليوم اليكم مع فكرة احاول تنفيذها وهى حل المعادلات الرياضية باستخدام 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);
	}
}

ولكن اتسائل هل اقوم بعمل عدد لا نهائى من البرامج ام هل يمكننى ان اجد حلال لهذه المسألة

بانتظار افكاركم واقتراحاتكم

عبدالعزيز

http://cit4pc.com

#2

السلام عليكم

حياك الله وبياك.

من الدرجة الاولى الي الرابعة تستطيع باستخدام قوانين المعادلات لكل درجة قانون لكن بعد الرابعة يستخدم التحليل العددي.

والله أعلم.

1
tvquran_6.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…