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

برنامج رياضيات وفيزياء

مغلق
بدأه alr7al في 23 يونيو 2003 · 15 رد · 1,599 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في الحقيقة ودي اكتب برنامج لحل المعادلات الرياضية والمسائل الفيزيائية

المعادلات الرياضة :

حل معادلة من الدرجة الثانية والثالثة و + - * المصفوفات والتكامل والتفاضل .

الفيزياء :

قوانين نيوتن والكهرباء واشياء عديده

ولكن لا اعرف من اين ابدا فاريد منكم النصيحة والرشاد

وامرهم شورى بينهم

#2

اولا اعتقد انك تريد البرمجة في ++c اذا كان كذلك فعرف head File يحتوي على الclasses التالية

1 class لحل المعادلة من الدرجة الثانيةو الثالثة

2 class لتعريف المصفوفات و التعامل معها

في هذه الclass اعد تعريف ال operators + ,- , =+ ,=- ,*,=*

ايضا الدوال التالية det , output, و ما شابه ذلك

3 class للتعامل مع التفاضل و التكامل راجع التفاضل الرقمية بطريقة نيوتن او ما شابه ذلك

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#4

السلام عليكم

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

او تعطينا من اقتراحاتك وافكارك

مع السلامة

#5

شاهدوا الوصلة التالية

http://www.arabteam2000.com/vb/showthread....&threadid=29858

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#6

أنا موافق.....................................

أولاً أشارك رأي الأخ khwlani بما اقترح

أولاً أرجو وضع المعادلات التي تريد أن نكتب البرنامج من أجلها ومن ثم نقرر كيف سيتم الأمر , ولكن أعتقد أنه سيكون كما يلي :

سوف نُخصص تابع لكل معادلة وكل معادلة أقترح أن يكون لها صف خاص بها

نقوم بكتابة كل معادلة لوحدها ثم نجمع جميع المعادلات في برنامج واحد ونظم بطريقة جيدة تعتمد الـ OOP ( البرمجة غرضية التوجه ).

ولكن كما قلت أرجو أن يتم تحديد المعادلات المُراد حلها(f)

#7

في البداية لبدا بحل المعادلة من الدرجة الاولى والثانية والثالثة

الاولى : x+10=10

الثانبة : x^2+x+1=0

القوانين المطلوبة : دلتا=ب^2-4أج , س=(-ب(+ او -)*جذر دلتا)/2ا

طبعا في ثلاث حالاث : دلتا > 0 يوجد حلين ودلتا يساوي الصفر حل واحد

ودلتا اصغر من الصفر لايوجد حل للمعادلة

الثالثة :x^3+x^2+1=0

طريقة حل المعادلة من الدرجة الثالثة هو التعويض بالارقام حتى نجد رقم عند التعويض في المعادلة بحصل على صفر وبامعنى الاخر يكون صفر من اصفار الدالة وليكن مثلا 3 ثم نقوم بتقسيم س-3 من المعادلة الاصلية

لنحصل على معادلة من الدرجة الثانية

هذه بالنسبة حل المعادلة :

الان ناتي الى الاشتقاق : في الاشتقاق قوانين كثيرة ولنبدا ب

مثلا :y=x^n

الاشتقاق y=n*x^n-1

انتظر الرد

#8
اقتباس
كاتب الرسالة الأصلية : alr7al

في البداية لبدا بحل المعادلة من الدرجة الاولى والثانية والثالثة  

الاولى : x+10=10    

الثانبة :  x^2+x+1=0

المعادلة ألاولى والثانية تكون على شاكلة متغيرات  

aX^2 +bX+c

و يمكن عمل دالة بحيث ان المسخدم لا يدخل فقط المتغيرات a,b,c وانما بإمكانه ادخال الدالة على شكلstring

الثالثة :x^3+x^2+1=0

طريقة حل المعادلة من الدرجة الثالثة هو التعويض بالارقام حتى نجد رقم عند التعويض في المعادلة بحصل على صفر وبامعنى الاخر يكون صفر من اصفار  

الدالة وليكن مثلا 3  ثم نقوم بتقسيم س-3 من المعادلة الاصلية  

لنحصل على معادلة من الدرجة الثانية  

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

ليجاد نقط التقاطع مع محور السينات

هذه بالنسبة حل المعادلة :

الان ناتي الى الاشتقاق : في الاشتقاق قوانين كثيرة ولنبدا ب  

مثلا :y=x^n

الاشتقاق y=n*x^n-1

كذلك في التفاضل و التكامل فهناك باب في الرياضيات اسمه Numeric او الرياضيات الرقمية فهذا القسم من الرياضيات هو ما يمكن برمجته  

انتظر الرد

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#10

السلام عليكم

في الحقيقة البرنامج ممتاز ولكن كيف نستطيع كتابة المعادلة مرة واحدة ومن ثم نحصل على الاحابة

مثلا ندخل x^2+2x+1

لنحصل على الجواب واضن ان هذه الطريقة افضل

وشكرا

#11

الأخ اسماعيل ليس من الضروري كتابة كل معادلة في كلاس ولكن يمكن كتابة كلاس و تكون الدوال معرفة على هيئة static يمكن ان تشاهد الملف math.h وتجمع هذه الدوال في هذه الكلاس

class Math
{
public:
static double X2_equals(double a, double b, double c);
static double three_pol_equlas(double a, double b, double c,double d)
static double[] get_parameter_from_String(char* str);
}

ويمكن استدعاء الدوال بالطريقة التالية

double x = Math::X2_equals(1.0, 3.0,2.0);
اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#12

جيد فعلا فكرة الأخ khwlani أفضل , ولكن ...................

المعادلة من الدرجة الثانية إذا كان لها حلان كيف سنعيد النقطتين , أقترح

SPOINT

{

    double x1;

    double x2;

    int flag;

}

ولكن لماذا التوابع مسبوقة بـ static

#13

التوابع مسبوقه بstatic حتى تمكن المبرمج من استدعاء الداله دون انشاء كائن من هذه الكلاس

و بالنسبة للثانية عرف الدالة كما يلي اواستخدم كلاس للناتج

double[2]  X2_equals(double a, double b, double c);
or
X2_equals(double a, double b, double c,double &x1,double &x2);
اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#14

هذه البداية :

#include
#include

class SocendEq{
public:
	double root1(double a,double b,double c,double D);
	double root2(double a,double b,double c,double D);
    Solve();
    Menu();
};

SocendEq SocendEq;


double SocendEq::root1(double a,double b,double c,double D){
	return (-b+sqrt(D))/2*a;
}

double SocendEq::root2(double a,double b,double c,double D){
	return (-b-sqrt(D))/2*a;
}

Menu()
{

char s=(char)253;
     cout<<"ttt[ Solve ax"<	 cout<<"Enter a,b,c : ";
return 0;	
}
Solve()
{

  double a,b,c,D;
 cin>>a>>b>>c;

 D = b * b - ( 4 * a * c );

	 if (D>0)
	{
 cout<<"x1 = "< cout<<"x2 = "<
	}
	if(D==0)
	{
	 cout<	}
	if(D<0)
	{
	cout<<"no solution"<	}
return 0;
}


main()
{

Menu();
  Solve();
return 0;
}
#15

هذه تعديل لحل معادلة من الدرجة الاولى ايضا بادخال صفر للقيمة a

#include
#include

class SocendEq{
public:
    double root(double b,double c);
    double root1(double a,double b,double c,double D);
    double root2(double a,double b,double c,double D);
    Solve();
    Menu();
};

SocendEq SocendEq;


double SocendEq::root1(double a,double b,double c,double D){
    return (-b+sqrt(D))/2*a;
}

double SocendEq::root2(double a,double b,double c,double D){
    return (-b-sqrt(D))/2*a;
}
double SocendEq::root(double b,double c){
    return -c/b;
}
Menu()
{

char s=(char)253;
     cout<<"ttt[ Solve ax"<     cout<<"Enter a,b,c : ";
return 0;    
}
Solve()
{

  double a,b,c,D;
 cin>>a>>b>>c;
if(a==0)
{
	cout<<"x = "<}
else if(a !=0)
{
 D = b * b - ( 4 * a * c );

     if (D>0)
    {
 cout<<"x1 = "< cout<<"x2 = "<
    }
    if(D==0)
    {
     cout<    }
    if(D<0)
    {
    cout<<"no solution"<    }
return 0;
}
}

main()
{

Menu();
  Solve();
return 0;
}
#16

في المعادلة ألأولى من اللأمنطق اضافة المميز D كمتغير للدالة وليس من المنطق فصل النواتج ألأول عن الثاني ولكن ان أردت فعرفها كما يلي

void root( double a,double b,double c,double &x1,double &x2);

كما حاول ان تراعي في حالة ان يكون المميز سالب او ان تكون قيمة a =0

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء

هذا الموضوع مغلق.

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