الاثنين، 17 يونيو 2013

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


                                         حل معادلات الدرجة الثانية باستخدام فيجوال بيسيك 2008
ما هى معادلة الدرجة الثانية؟
هى المعادلة التى على الصورة التالية

حيث أن a وb وc ثوابت وهى أرقام وa و b أكبر أو أقل من الصفر ولكنها لا تساوى صفر و X لا تساوى صفر
المطلوب فى حل هذة المعادلة هو إيجاد قيمة X الذى هو المتغير الوحيد الذى يمكن تمثيل الدالة بدلالتة
يمكن حل بعض معادلات الدرجة الثانية باستخدام طريقة تحليل المقدار الثلاثى ولكن هذة حالات محدودة وعلى ذلك لا بد من موجود طريقة مؤكدة لحل المعادلة
باستخدام طريقة إكمال المربع فإن

ولكن هذة الطريقة أيضا لا يمكننا الإعتماد عليها فى بعض الحالات لأنة قد ينتج أحيانا رقم غير معرف أى أن ليس لة وجود مثل الذى يظهر فى الحالة التالية


إذن X عدد معقد ولا يمكننا التعامل معة بأى صورة لأنة لا يوجد جذر تربيعى لعدد سالب فكيف يمكننا حل هذة النقطة لكى نقوم بعمل برنامج يقوم بحل المعادلة
الحل كالتالى


وعلى ذلك فقد قمنا بتقسيم المعادلة إلى جزئين
-جزء حقيقى Real Part
-جزء تخيلى Imaginary Part
وعلى سبيل المثال فإنة لوكانت لدينا المعادلة التالية


إذن الجزء الذى يجب أن نتعامل معة لأنشاء البرنامج هو المعادلة الأخيرة التى توصلنا إليها


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


ثم نقوم بإنشاء هذة الدالة

كود:
Private Function QuadRoots(ByVal A As Decimal, ByVal B As Decimal _ , ByVal C As Decimal) As String() Dim Root(1) As String Dim X1 As Decimal = Nothing Dim X2 As Decimal = Nothing Dim Discriminant As Decimal = B ^ 2 - 4 * A * C Dim RealPart As Double = (-B) / (2 * A) Dim ImaginaryPart As Double = (Math.Sqrt(-Discriminant)) / (2 * A) If Discriminant >= 0 Then X1 = (-B + Math.Sqrt(B ^ 2 - 4 * A * C)) / (2 * A) X2 = (-B - Math.Sqrt(B ^ 2 - 4 * A * C)) / (2 * A) Root(0) = X1.ToString Root(1) = X2.ToString End If If Discriminant < 0 Then X1 = (RealPart) + (ImaginaryPart) X2 = (RealPart) - (ImaginaryPart) Root(0) = RealPart.ToString & "+" & ImaginaryPart.ToString & "i" Root(1) = RealPart.ToString & "-" & ImaginaryPart.ToString & "i" End If Return Root End Function
وفى الزر حساب
كود:
Dim Root(1) As String Root = QuadRoots(TextBoxA.Text, TextBoxB.Text, _ TextBoxC.Text) TextBox1.Text = Root(0) TextBox2.Text = Root(1)
ثم
End

ليست هناك تعليقات:

إرسال تعليق