
رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )
المجموعة الثانية
2.1-حل معادلات الدرجة الثانية
حل معادلات الدرجة الثانية باستخدام فيجوال بيسيك 2005
ما هى معادلة الدرجة الثانية؟
هى المعادلة التى على الصورة التالية

حيث أن a وb وc ثوابت وهى أرقام وa و b أكبر أو أقل من الصفر ولكنها لا تساوى صفر و X لا تساوى صفر
المطلوب فى حل هذة المعادلة هو إيجاد قيمة X الذى هو المتغير الوحيد الذى يمكن تمثيل الدالة بدلالتة
يمكن حل بعض معادلات الدرجة الثانية باستخدام طريقة تحليل المقدار الثلاثى ولكن هذة حالات محدودة وعلى ذلك لا بد من موجود طريقة مؤكدة لحل المعادلة
باستخدام طريقة إكمال المربع فإن
ولكن هذة الطريقة أيضا لا يمكننا الإعتماد عليها فى بعض الحالات لأنة قد ينتج أحيانا رقم غير معرف أى أن ليس لة وجود مثل الذى يظهر فى الحالة التالية
إذن X عدد معقد ولا يمكننا التعامل معة بأى صورة لأنة لا يوجد جذر تربيعى لعدد سالب فكيف يمكننا حل هذة النقطة لكى نقوم بعمل برنامج يقوم بحل المعادلة
الحل كالتالى
C:\Documents and Settings\the golden2008\My Documents\the golden«\أهـــــــــــم الأعمال و الأنشطه و المستعجله\المشاغب\34.gif
وعلى ذلك فقد قمنا بتقسيم المعادلة إلى جزئين
-جزء حقيقى 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
ورابط تحميل المشروع
http://www.zshare.net/download/46275942b4c120
يـــــــــــــــــــــــــــــــــــتبع.........