بسم الله الرحمن الرحيم
حل معادلات الدرجة الثانية باستخدام فيجوال بيسيك 2005[/CENTER]
ما هى معادلة الدرجة الثانية؟
هى المعادلة التى على الصورة التالية
حيث أن a وb وc ثوابت وهى أرقام وa و b أكبر أو أقل من الصفر ولكنها لا تساوى صفر و X لا تساوى صفر
المطلوب فى حل هذة المعادلة هو إيجاد قيمة X الذى هو المتغير الوحيد الذى يمكن تمثيل الدالة بدلالتة
يمكن حل بعض معادلات الدرجة الثانية باستخدام طريقة تحليل المقدار الثلاثى ولكن هذة حالات محدودة وعلى ذلك لا بد من موجود طريقة مؤكدة لحل المعادلة
باستخدام طريقة إكمال المربع فإن
ولكن هذة الطريقة أيضا لا يمكننا الإعتماد عليها فى بعض الحالات لأنة قد ينتج أحيانا رقم غير معرف أى أن ليس لة وجود مثل الذى يظهر فى الحالة التالية
إذن X عدد معقد ولا يمكننا التعامل معة بأى صورة لأنة لا يوجد جذر تربيعى لعدد سالب فكيف يمكننا حل هذة النقطة لكى نقوم بعمل برنامج يقوم بحل المعادلة
الحل كالتالى
وعلى ذلك فقد قمنا بتقسيم المعادلة إلى جزئين
-جزء حقيقى Real Part
-جزء تخيلى Imaginary Part
وعلى سبيل المثال فإنة لوكانت لدينا المعادلة التالية
إذن الجزء الذى يجب أن نتعامل معة لأنشاء البرنامج هو المعادلة الأخيرة التى توصلنا إليها
سنستخدم هذة وليست المعادلة العامة لحل معادلة الدرجة الثانية
وعلى ذلك نقوم بفتح مشروع جديد فى فيجوال بيسيك ونقوم بتصميم شكل مناسب مثل هذا
ثم نقوم بإنشاء هذة الدالة
- الكود:
-
[LEFT]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[/LEFT]
وفى الزر حساب
- الكود:
-
[LEFT]Dim Root(1) As String
Root = QuadRoots(TextBoxA.Text, TextBoxB.Text, _
TextBoxC.Text)
TextBox1.Text = Root(0)
TextBox2.Text = Root(1)[/LEFT]
ثم
End
ورابط تحميل المشروع
http://www.zshare.net/download/46275942b4c120/