تقریب عدد پی با روش سوزن بوفون – پیادهسازی در متلب و پایتون


عدد پی که با نماد نشان داده میشود، یک عدد حقیقی و گنگ است که در ریاضیات، فیزیک و مهندسی کاربرد فراوانی دارد. این عدد اغلب به عنوان نسبت محیط دایره به قطر آن تعریف میشود. اگر تاریخچه عدد پی را مطالعه کنید، خواهید دید که دانشمندان زیادی تلاش کردهاند مقدار این عدد را با دقتی بیش از آنچه که وجود داشته است، تقریب بزنند و از این رو، روشهای مختلفی را برای این منظور به کار بردهاند. در این آموزش، یکی از این روشها را برای تقریب عدد پی معرفی میکنیم. مسئله سوزن بوفون یا قضیه سوزن بوفون، عنوان روشی است که با آن آشنا میشویم.
مسئله سوزن بوفون (Buffon's Needle Problem) به پرسشی بر میگردد که «ژرژ-لوئی لکرک کنت دو بوفون» (Georges-Louis Leclerc, Comte de Buffon)، ریاضیدان، زیستشناس و ستارهشناس فرانسوی، در قرن هجدهم آن را مطرح کرد:
فرض کنید سطحی داریم که از نوارهای چوبی موازی با عرض یکسان ساخته شده است. سوزنی را روی این سطح میاندازیم. احتمال اینکه سوزن خط بین دو نوار را قطع کند (با آن متقاطع باشد) چقدر است؟
در ادامه، نسخه ساده و عمومی از مسئله سوزن بوفون برای تقریب عدد پی را شرح خواهیم داد. همچنین، برای کسانی که به برنامهنویسی علاقهمندند، کدهای متلب و پایتون تقریب عدد پی با استفاده از روش بوفون ارائه شده است.
نسخه ساده تقریب عدد پی با روش سوزن بوفون
فرض کنید مجموعهای از نوارهای چوبی در کنار یکدیگر به طور موازی قرار گرفتهاند که عرض هرکدام از آنها برابر با یک واحد است.
سوزنی به طول یک واحد را روی این سطح چوبی میاندازیم.
نمودار یک سوزن بعد از قرار گرفتن روی سطح، مطابق شکل زیر است. از آنجایی که سوزن کاملاً تصادفی روی سطح انداخته میشود، موقعیت آن را میتوان با دو متغیر مستقل بیان کرد. متغیر اول است که فاصله نقطه میانی سوزن از نزدیکترین لبه نوار چوبی را نشان میدهد. متغیر دوم نیز است که معرف زوایه سوزن نسبت به خطوط موازی است.
در نمودار شکل بالا سوزن خط لبه نوار را قطع نکرده است. اما چه زمانی سوزن خط را قطع میکند؟ با توجه به نمودار بالا، سوزن زمانی خط لبه نوار چوبی را قطع میکند که اندازه کوچکتر یا مساوی باشد. این گفته را به صورت بصری بررسی میکنیم.
اندازه زاویه بین 0 و است (طبق خاصیت تقارن، اگر زاویه بیش از این مقدار باشد، گویی که سوزن مشابهی در جهت معکوس قرار گرفته است). همچنین، طبق آنچه که گفتیم، اندازه میتواند بین 0 و باشد (نقطه میانی سوزن هیچگاه نمیتواند فاصلهای بیش از از هریک از لبهها داشته باشد).
هر ترکیبی (با احتمال برابر) از و را میتوان با نقطهای روی نمودار زیر نشان داد. با اعمال شرط برای تقاطع سوزن و خط، ناحیه مشخص شده شکل زیر را خواهیم داشت. بنابراین، احتمال اینکه سوزن خط را قطع کند، برابر با نسبت ناحیه مشخص (آبی) به کل مساحت مستطیل است.
مساحت کل فضای جواب برابر با است. مساحت ناحیه آبی نیز برابر با انتگرال معین عبارت از ۰ تا است.
احتمال اینکه سوزن از یک لبه عبور کند و با آن متقاطع باشد، برابر با نسبت مساحت زیر منحنی بر مساحت کل مستطیل است:
این بدین معنی است که اگر آزمایش انداختن سوزن را بارها و بارها تکرار کرده و تعداد دفعاتی که سوزن خطوط موازی را قطع میکند، ثبت کنیم، میتوانیم تقریبی از عدد را به دست آوریم. به عبارت دیگر، اگر تعداد دفعات انداختن سوزن را در دو ضرب کرده و آن را بر تعداد دفعاتی که سوزن با خط تقاطع داشته، تقسیم کنیم، تقریب عدد به دست میآید.
برای مثال، اگر سوزنی را ۱۰۰ بار بیندازیم و ۶۴ بار از آن خط را قطع کند، تقریب عدد برابر با خواهد بود که تقریباً برابر با ۳٫۱۲۵ است. بدیهی است که برای گرفتن نتایج دقیقتر، باید تعداد دفعات آزمایش را افزایش دهیم.
نسخه عمومی تقریب عدد پی با روش سوزن بوفون
آنچه در بخش قبل شرح دادیم، حالت سادهای بود که یک سوزن با طولی برابر با فاصله خطوط، روی سطح انداخته میشد.
حال مسئله را با نگاهی کلیتر بررسی میکنیم.
فرض کنید سوزنی به طول داریم و فاصله بین خطوط موازی برابر با است. در این صورت باید دو حالت را بررسی کنیم:
- در حالت اول، سوزن کوتاه است (). برای یک سوزن کوتاه، بسته به زاویهای که روی سطح قرار میگیرد، ممکن است خطی را قطع کند.
- در حالت دوم، اگر سوزن بلند باشد ()، علاوه بر اینکه میتواند بین خطوط قرار بگیرد یا یکی از آنها را قطع کند، حداقل زاویهای برای آن وجود دارد که به ازای مقادیر بزرگتر از این زاویه، سوزن حداقل یکی از خطوط را قطع خواهد کرد.
حالت اول (سوزن کوتاه)، مشابه مورد سادهای است که در بخش قبل آن را بررسی کردیم. احتمال برابر با نسبت ناحیه تقاطع سوزن و خط به کل فضای جواب است. اکنون کل فضای جواب (مخرج)، بزرگتر است () و اندازه ناحیه نیز برابر با خواهد بود. برای هر زاویه ممکن قرارگیری سوزن کوتاه روی سطح، احتمال برابر است با:
که حاصل آن به صورت زیر است:
اگر را در رابطه اخیر قرار دهیم، میبینیم که نتیجه، مشابه مورد سادهای است که در بخش قبل بررسی کردیم.
اکنون، حالت دوم را در نظر میگیریم که مربوط به سوزن بلند است و بررسی آن از نظر هندسی اندکی پیچیدهتر است. دلیل این پیچیدگی آن است که در زوایای خاصی، صرفنظر از موقعیت نقطه میانی، سوزن یکی از خطوط را قطع میکند. معادله زیر احتمال را براساس طول سوزن و عرض تختهها بیان میکند:
برای ساده کردن معادله بالا، نسبت طول سوزن به عرض تختهها را فرض میکنیم و در نتیجه، خواهیم داشت:
معادله بالا در شکل زیر رسم شده است که در آن، محور افقی مقدار و محور عمودی مقدار احتمال را نشان میدهد.
همانطور که نمودار بالا نشان میدهد، وقتی سوزن کوتاه باشد، احتمال خطی خواهد بود. همچنین، وقتی سوزن بلند باشد، با بزرگتر شدن نسبت طول سوزن به عرض نوارها، احتمال به یک مقدار قطعی میل میکند.
جالب است بدانید که در سال ۱۹۰۱، ریاضیدان ایتالیایی، ماریو لازارینی (Mario Lazzarini)، آزمایش سوزن بوفون را انجام داد. او یک سوزن را ۳۴۰۸ بار انداخت و تقریب شناخته شده را تا شش رقم اعشار برای به دست آورد.
پیادهسازی تقریب عدد پی با روش بوفون در متلب
در این بخش، طبق آنچه که درباره روش بوفون گفتیم، تقریب عدد پی را در متلب پیادهسازی میکنیم. این کار را به سادگی و طی مراحلی که در ادامه میآید، انجام میدهیم.
تعریف پارامترها
قبل از همه چیز، تعداد سوزنها را تعیین (در اینجا ۱۰۰۰) و آن را به صورت زیر تعریف میکنیم:
طول هر سوزن را نیز ۰٫۲ در نظر میگیریم:
میخواهیم نقاط ابتدای سوزنها بین و باشند، بنابراین، به بیرون از مربع واحد نمیرویم.
رسم سوزنها
اکنون، پس از تعریف پارامترها و سوزنها، برای درک بهتر، آنها را رسم میکنیم. برنامه لازم برای رسم این خطوط به صورت زیر است:
شکل زیر، از اجرای این برنامه به دست آمده است.
تعریف خطوط موازی
اکنون خطوط موازی را با دستورهای زیر مشخص میکنیم که فاصله آنها از هم برابر با است:
خطوط موازی در شکل زیر مشخص شدهاند.
شمارش تعداد سوزنهای متقاطع و تقریب پی
با اجرای دو دستور زیر، مقدار تقریبی به دست میآید:
در مورد خاص این مثال، نتیجه برابر است با:
piEstimate = 3.1153
رسم نمودار نهایی
با دستور زیر، شکل نهایی رسم خواهد شد که شامل سوزنها، خطوط موازی و مقدار تقریبی به دست آمده عدد است.
برنامه کامل متلب برای تقریب عدد پی با استفاده از روش بوفون به صورت زیر است:
پیادهسازی تقریب عدد پی در پایتون
برنامه پایتون تقریب عدد پی با استفاده از روش بوفون، به صورت زیر است:
نتیجه حاصل از اجرای این برنامه به صورت زیر خواهد بود:
Buffon Needle Experiment (Google it) Runs Number Hits estimate of pi 0 2557 3.12866640594 1 2535 3.15581854043 2 2564 3.12012480499 3 2550 3.13725490196 4 2595 3.08285163776
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای محاسبات عددی
- آموزش محاسبات عددی با MATLAB
- مجموعه آموزشهای دروس ریاضیات
- آموزش ریاضی پایه دانشگاهی
- شبیه سازی مونت کارلو (Monte Carlo Simulation) – محاسبه انتگرال به روش عددی
- روش نیوتن — به زبان ساده
- تقریب خطی — به زبان ساده
^^
چرا گفتین نقطه میانی سوزن هیچوقت نمیتونه فاصله ای بیش از 1/2 از لبه ها داشته باشه؟علت چیه؟