بسم الله الرحمن الرحيم
حل معادلات الدرجة الثانية باستخدام فيجوال بيسيك 2005
ما هى معادلة الدرجة الثانية؟
هى المعادلة التى على الصورة التالية
http://tw.absba.org/teamwork14/ali/536027/1.gif
حيث أن a وb وc ثوابت وهى أرقام وa و b أكبر أو أقل من الصفر ولكنها لا تساوى صفر و X لا تساوى صفر
المطلوب فى حل هذة المعادلة هو إيجاد قيمة X الذى هو المتغير الوحيد الذى يمكن تمثيل الدالة بدلالتة
يمكن حل بعض معادلات الدرجة الثانية باستخدام طريقة تحليل المقدار الثلاثى ولكن هذة حالات محدودة وعلى ذلك لا بد من موجود طريقة مؤكدة لحل المعادلة
باستخدام طريقة إكمال المربع فإن
http://tw.absba.org/teamwork14/ali/536027/2.gif
ولكن هذة الطريقة أيضا لا يمكننا الإعتماد عليها فى بعض الحالات لأنة قد ينتج أحيانا رقم غير معرف أى أن ليس لة وجود مثل الذى يظهر فى الحالة التالية
http://tw.absba.org/teamwork14/ali/536027/3.gif
إذن X عدد معقد ولا يمكننا التعامل معة بأى صورة لأنة لا يوجد جذر تربيعى لعدد سالب فكيف يمكننا حل هذة النقطة لكى نقوم بعمل برنامج يقوم بحل المعادلة
الحل كالتالى
http://tw.absba.org/teamwork14/ali/536027/4.gif
وعلى ذلك فقد قمنا بتقسيم المعادلة إلى جزئين
-جزء حقيقى Real Part
-جزء تخيلى Imaginary Part
وعلى سبيل المثال فإنة لوكانت لدينا المعادلة التالية
http://tw.absba.org/teamwork14/ali/536027/5.gif
إذن الجزء الذى يجب أن نتعامل معة لأنشاء البرنامج هو المعادلة الأخيرة التى توصلنا إليها
http://tw.absba.org/teamwork14/ali/536027/6.gif
سنستخدم هذة وليست المعادلة العامة لحل معادلة الدرجة الثانية
وعلى ذلك نقوم بفتح مشروع جديد فى فيجوال بيسيك ونقوم بتصميم شكل مناسب مثل هذا
http://tw.absba.org/teamwork14/ali/536027/7.jpg
ثم نقوم بإنشاء هذة الدالة
كود:
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/