LATEX

لكن ماهى طريقة مونتى كارلو?...


من يهمه الامر فعليه ان يصبر..سآخذكم فى جولة من الميكانيك الاحصائى الى رياضيات التحليل العددى و نظرية الخوارزميات الى الحاسوبية العلمية ولغات التشفير ثم ارجع بكم الى الفيزياء النظرية-التجريبية-العددية...
من يهمه الامر يصبر..فالعلم لا يرحم و انا لن ارحم...
نعتبر جملة فيزيائية ذات N درجة حرية او متغير ديناميكى s_i ...
عند درجة حرارة T ..
مثلا جملة مغناطيسية مشكلة من عزوم لف-سبينات- على شبكة متقطعة..كل عزم لف لا يأخذ الا قيمتين زائد او ناقص واحد....
هذا هو المثال النموذجى الذى يعطى فى مثل هذه الحالات..فى الصورة شبكة لفات فى بعدين للتبسيط...
احتمال ان تكون الجملة فى حالة احصائية معينة طاقتها مثلا E_i يعطى باحتمال بولتزمان Blotzmann
P_i=exp(-E_i/k*T)/Z
حيث k i هو ثابت بولتزمان..و Z هى دالة التقسيم التى تعطى بالشرط ان مجموع الاحتمالات P_i يساوى واحد...
ليكن O مقدار فيزيائى ما يأخذ فى الحالة ذات الطاقة E_i القيمة O_i ..
القيمة المتوسطة لهذا المقدار تعطى ب
<O>=\sum_i P_i O_i (I)
هذا واضح جدا...المتوسط هو كل قيمة يأخذها المقدار مضروبة فى احتمالها ونجمع على جميع القيم...
لكن كيف نحسب المتوسط <O> فى الواقع?
اهم الطرق و اقواها هى الطرق العددية و اقوى هذه هى طريقة مونتى كارلو Monte Carlo...
واقوى طرق مونتى كارلو هى خوارزمية ميتروبوليس Metropolis...
هذه الطريقة هى الاقدم و الاكثر عمومية فى جميع طرق مونتى كارلو..
تصبح غير فعالة فقط فى الجمل غير الموضعية non-local مثل الجمل الفرميونية fermionic systems و جمل المصفوفات matrix systems...
لكن كيف تعمل بالضبط...
خطوات طريقة ميتروبوليس...
-الخطوة الاولى..
نبدأ من حالة ابتدائية ما نختارها كما نشاء-مثلا التى فى الصورة- طاقتها مثلا E..
-الخطوة الثانية...
نبدأ من عزم اللف الاول..نغير قيمته وهذا يسمى اقتراح proposal..نحسب الفرق الناجم فى الطاقة و لنسميه delta E ..اذا كان هذا الفرق سالب فإننا نقبل هذا التغيير للعزم الاول..لانه ادى الى نقصان الطاقة..اى انه نقلنا اقرب الى الحالة الاساسية ذات الطاقة الاقل للجملة...
-الخطوة الثالثة..
اذا كان الفرق فى الطاقة من الخطوة السابقة موجب..يعنى اننا ابتعدنا عن الحالة الاساسية للجملة..فى هذه الحالة نقبل الاقتراح لتغيير عزم اللف الاول فقط باحتمال يعطى بالضبط بمعامل بولتزمان كالتالى
P=exp(-delta E/k*T)
لكن فى المونتى كارلو كيف نفعل هذا بالضبط?
نختار عدد عشوائى r منتظم بين الصفر و الواحد..ثم نقارن..
اذا كان العدد العشوائى اصغر من معامل بولتزمان نقبل الاقتراح...
اما اذا كان العدد العشوائى اكبر من معامل بولتزمان نرفض الاقتراح...
-الخطوة الرابعة..
نعيد الخطوتين الثانية و الثالثة من احل باقى عزوم اللف فى الشبكة كلها..بعد ان نكمل هذه الخطوة نقول انه قمنا بمسح مونتى كارلو واحد a single Monte Carlo sweep...
-الخطوة الخامسة..
نعيد الخطوة الثانية و الثالثة و ايضا الرابعة عدد كبير من المرات -تحددونه فى التجربة الافتراضية-حتى نصل الى ما يسمى التوازن الحرارى thermalization ..اى تغير الجملة عدد كافى من المرات حتى نصل الى حالة التوازن...
اذا كان للجملة حالة اساسية واذا لم يكن هناك انسدادات obstructions-لا استطيع ان اذكرها الان-فإنه من المؤكد ان هذه الطريقة ستصل بنا الى التوازن الحرارى...أكيد لا شك فى ذلك....
عدديا ترون التوازن الحرارى عن طريق ما يسمى تاريخ مونتى كارلو Monte Carlo history خاصة المقدار الفيزيائى O ...انظروا كيف تتصرف قيم O كدالة فى زمن مونتى كارلو..ستجدون انها تتزداد او تتناقص ثم تستقر و تبدأ بالاهتزاز حول قيمة معينة لما تصل الى التوازن الحرارى.. انظروا الصورة الثانية من اجل مثال لمقدار كدالة فى زمن مونتى كارلو متوازن حراريا...
-الخطوة السادسة..
نختار حالات للجملة i غير مرتبطة احصائيا-لن اشرح معنى هذه الكلمة الأخيرة هنا-من بين الحالات فى زمن التوازن الحرارى..لنفترض اننا اخترنا مثلا M حالة من هذه الحالات...نحسب قيم المقدار الفيزيائى O_i فى هذه الحالات.. ثم نحسب المتوسط الحسابى كالتالى
<O>=\sum_i O_i/M (II)
المعادلة (I) المحصل عليها من المجموعة القانونية canonical ensemble هى بالضبط المعادلة اعلاه (II) المحصل عليها من سلاسل ماركوف Marlov chain التى مونتى كارلو حالة خاصة لها...
ايضا فإن طريقة ميتروبوليس التى شرحناها اعلاه تحقق عدة خواص اساسية اشهرها التوازن التفصيلى detailed balance..
لن احكى ايضا كيف نحسب الاخطاء..فهذه تتطلب خوارزميات اخرى..
لم يتبق الا استعمال احدى لغات البرمجة و افضل الفورترون Fortran او ال C لكن افضل منها فى هذا العصر هو أل C++ ..قلت استعمال احدى هذه اللغات وترجمة الخوارزمية اعلاه الى سابروتينات subroutines فى حالة ال F او كلاسات classes فى حالة ال C ثم ربط كل شيئ ببعضه البعض..وهذا يسمى التنفيذ implementation..ثم عليكم الانجاز execution و الديباغين debugging و اجراء running الشفرة المحصل عليها على حاسوب و البدء بالمحاكاة simulation..
هنا ينتهى تحالف الفيزياء الاساسية و الرياضيات و الحاسوبية العلمية..
ويبدأ دور الفيزياء النظرية-التجريبية التى تسمى الفيزياء العددية...
مع تحياتى و تمنياتى بالحظ الجيد..
ملحوظة: من اراد البرهان على كل هذه الرياضيات و علاقتها بالفيزياء فإننى مستعد ان اقصفه بها....فهذه ليست عددية البريكولاج التى يمارسها البعض..كل شيئ قائم على رياضيات و فيزياء غير هينة...وشخصيا والحمد لله لست مقلدا فإننى اعرفها و الحمد لله كلها من الداخل...و فى رأيى متعة الامر فى النهاية هى رؤية البرهان الرياضى التحليلى و البرهان الحسى التجريبى الذى نجريه هنا عن طريق اجراء المحاكاة نفسها...


No comments:

Post a Comment