البرمجة - الخوارزميات

2006-09-04, 05:19 PM #1
عضو متميز

تاريخ التسجيل: Aug 2006
المشاركات: 507
Thumbs Up
Received: 9
Given: 0
البرمجة - الخوارزميات
السلام عليكم:

بدايةً أود أن أقول أني ترددت قليلاً في وضع هذه المشاركة في ملتقى المهندسين المدنيين لأنها تخص جميع المهندسين، ولكن لكوني مهندساً مدنياً وسيكون تواصلي مع المهندسين المدنيين أكثر لذلك آثرت وضعها هنا، ولكن يبقى للمشرفين القرار النهائي في ترتيب المواضيع.
وقد تكون هذه المشاركة بداية لمجموعة من المشاركات الأخرى إن سمح الوقت لها وهي تتحدث عن الخوارزميات.

لماذا اخترت الخوارزميات:
نظراً لكثرة الدروس الخاصة بلغات البرمجة على الإنترنت ونظراً لوجود العديد من المهندسين الخبراء في هذا الملتقى الذين يمكنهم المساعدة في مجال الهندسة المدنية فقررت وضع مجموعة من المشاركات تفيد المهندس المدني في مجال البرمجة (إن شاء الله وإن سمح الوقت بذلك وقد تكون على فترات متباعدة) وهي عن كيفية الاستفادة من لغات البرمجة في عمل برامج هندسية.
أي لن أتطرق إلى شرح لغات البرمجة أو الأوامر البرمجية بشكل مفصل، فقد يكون في ملتقى هندسة الحاسب الآلي من هو أفضل مني في هذا، ولكن سأتطرق إلى شرح بعض الخوارزميات المهمة في مجال الرياضيات العددية والتي غالباً ما يصادفها المهندس أثناء البرمجة.

ماذا أقصد بالرياضيات العددية:
توجد مجموعة من المسائل الرياضية المعقدة لا يمكن حلها يدوياً أحياناً أو أنها تتطلب مجهوداً كبيراً لحلها تحليليياً مثل تكامل تابع معقد أو حل معادلة تفاضلية من درجة كبيرة أو حل مجموعة 500 معادلة خطية ب 500 مجهول، لذلك نلجأ إلى حلها تقريبياً أي إيجاد طرق رياضية (خوارزميات) تعطي جواباً قريباً جداً من الدقة بواسطة التقريب المتتالي وهو مايسمى بالرياضيات العددية.

ما هي الخوارزميات:
يمكن تعريف الخوارزمية بأنها مجموعة منتهية من التعليمات خالية من الغموض يتم بتطبيقها خطوة خطوة إنجاز مهمة محددة.
يعود اسم الخوارزمية إلى عالم الرياضيات محمد بن موسى الخوارزمي الذي ابتكر مفهوم الخوارزمية وهو عالم مسلم أصله من خوارزم في خراسان.
تستخدم الخوارزميات بشكل كبير في هذه الأيام وبشكل خاص في برامج الحاسوب، المصطلح الإنكليزي المقابل لكلمة خوارزمية هو Algorithm.

مثال عن خوارزمية (إيجاد جذور معادلة من الدرجة الثانية):
كلنا يعلم طريقة حل معادلة من الدرجة الثانية وهي من أبسط الخوارزميات في الرياضيات العددية، ولكن سأشرحها كمثال (مع العلم أنها تعتبر طريقة دقيقة وليست تقريبية)

1- نعيد ترتيب المعادلة لتصبح من الشكل:
ax^2+bx+c=0
حيث x هو المتحول و a,b,c ثوابت المعادلة.

2- نحسب delta من المعادلة:
delta=b^2-4ac






3- نختبر قيمة delta:
- إذا كانت delta أصغر من الصفر فليس للمعادلة جذور حقيقية (يمكن أن نتابع لإيجاد الجذور العقدية ولكن ليس هذا مجاله)
- أما إذا كانت delta = 0 فإن للمعادلة جذر مضاعف يحسب من العلاقة:
x1=x2=-b/2a



- أما إذا كانت delta > 0 فإن للمعادلة جذران حقيقيان يحسبان من العلاقة.

x1=(-b-sqr(delta)) / 2a

x2=(-b+sqr(delta)) / 2a

حيث أن sqr يشير إلى الجذر التربيعي في لغة Visual Basic.

باتباعنا للخطوات السابقة أو الخوارزمية السابقة نستطيع حل معادلة من الدرجة الثانية

وكما نلاحظ:
1- الخوارزمية يجب أن تكون واضحة وخالية من التعقيد.
2- يجب وجود قيم ابتدائية للخوارزمية وهي هنا ثوابت المعادلة a,b,c

يمكن كتابة برنامج بلغة فيجيوال بيسيك (في المرفق) لحل هذه المعادلة (يمكن تحويله بسهولة إلى أي لغة أخرى):

ÇáÈÑãÌÉ - ÇáÎæÇÑÒãíÇÊ-quadraticequation-gif quadraticequation-gif

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

من مواضيع عبد الجواد :

الصور المرفقة الصور المرفقة
2006-09-05, 05:12 PM #4
عضو فعال جداً

تاريخ التسجيل: Feb 2006
المشاركات: 185
Thumbs Up
Received: 2
Given: 0
سبقتني اخي العزيز عبدالجواد بطرح الموضوع فقد كنت سأضع عليك الفكره بأن تعمل على كتابة بعض المشاركات في استخدام لغات البرمجه في عمل البرامج الهندسيه
ولكن بارك الله فيك قرأت افكاري

منتظر هذه السلسله بفارغ الصبر
فلا تتأخر علينا


تحياتي

من مواضيع مهندس محمد الظبياني :

2006-09-05, 09:12 PM #5
عضو متميز

تاريخ التسجيل: Aug 2006
المشاركات: 507
Thumbs Up
Received: 9
Given: 0