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

۱۳۴۵ بازدید
آخرین به‌روزرسانی: ۱۶ اردیبهشت ۱۴۰۲
زمان مطالعه: ۹ دقیقه
دانلود PDF مقاله
تقریب عدد پی با روش سوزن بوفون – پیاده‌سازی در متلب و پایتونتقریب عدد پی با روش سوزن بوفون – پیاده‌سازی در متلب و پایتون

عدد پی که با نماد π\pi نشان داده می‌شود، یک عدد حقیقی و گنگ است که در ریاضیات، فیزیک و مهندسی کاربرد فراوانی دارد. این عدد اغلب به عنوان نسبت محیط دایره به قطر آن تعریف می‌شود. اگر تاریخچه عدد پی را مطالعه کنید، خواهید دید که دانشمندان زیادی تلاش کرده‌اند مقدار این عدد را با دقتی بیش از آنچه که وجود داشته است، تقریب بزنند و از این رو، روش‌های مختلفی را برای این منظور به کار برده‌اند. در این آموزش، یکی از این روش‌ها را برای تقریب عدد پی معرفی می‌کنیم. مسئله سوزن بوفون یا قضیه سوزن بوفون، عنوان روشی است که با آن آشنا می‌شویم.

997696

مسئله سوزن بوفون (Buffon's Needle Problem) به پرسشی بر می‌گردد که «ژرژ-لوئی لکرک کنت دو بوفون» (Georges-Louis Leclerc, Comte de Buffon)، ریاضی‌دان، زیست‌شناس و ستاره‌شناس فرانسوی، در قرن هجدهم آن را مطرح کرد:

فرض کنید سطحی داریم که از نوارهای چوبی موازی با عرض یکسان ساخته شده است. سوزنی را روی این سطح می‌اندازیم. احتمال اینکه سوزن خط بین دو نوار را قطع کند (با آن متقاطع باشد) چقدر است؟

در ادامه، نسخه ساده و عمومی از مسئله سوزن بوفون برای تقریب عدد پی را شرح خواهیم داد. همچنین، برای کسانی که به برنامه‌نویسی علاقه‌مندند، کدهای متلب و پایتون تقریب عدد پی با استفاده از روش بوفون ارائه شده است.

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

فرض کنید مجموعه‌ای از نوارهای چوبی در کنار یکدیگر به طور موازی قرار گرفته‌اند که عرض هرکدام از آن‌ها برابر با یک واحد است.

سوزنی به طول یک واحد را روی این سطح چوبی می‌‌اندازیم.

سوزن و تخته

نمودار یک سوزن بعد از قرار گرفتن روی سطح، مطابق شکل زیر است. از آنجایی که سوزن کاملاً تصادفی روی سطح انداخته می‌شود، موقعیت آن را می‌توان با دو متغیر مستقل بیان کرد. متغیر اول dd است که فاصله نقطه میانی سوزن از نزدیک‌ترین لبه نوار چوبی را نشان می‌دهد. متغیر دوم نیز θ\theta است که معرف زوایه سوزن نسبت به خطوط موازی است.

متغیرهای سوزن

در نمودار شکل بالا سوزن خط لبه نوار را قطع نکرده است. اما چه زمانی سوزن خط را قطع می‌کند؟ با توجه به نمودار بالا، سوزن زمانی خط لبه نوار چوبی را قطع می‌کند که اندازه dd کوچک‌تر یا مساوی 12sinθ\frac {1 }{2} \sin \theta باشد. این گفته را به صورت بصری بررسی می‌کنیم.

اندازه زاویه θ\theta بین 0 و π\pi است (طبق خاصیت تقارن، اگر زاویه بیش از این مقدار باشد، گویی که سوزن مشابهی در جهت معکوس قرار گرفته است). همچنین، طبق آنچه که گفتیم، اندازه dd می‌تواند بین 0 و 12\frac { 1 } { 2 } باشد (نقطه میانی سوزن هیچگاه نمی‌تواند فاصله‌ای بیش از 12\frac {1}{2} از هریک از لبه‌ها داشته باشد).

هر ترکیبی (با احتمال برابر) از θ\theta و dd را می‌توان با نقطه‌ای روی نمودار زیر نشان داد. با اعمال شرط d1/2sinθd \le 1/2 \sin \theta برای تقاطع سوزن و خط، ناحیه مشخص شده شکل زیر را خواهیم داشت. بنابراین، احتمال اینکه سوزن خط را قطع کند، برابر با نسبت ناحیه مشخص (آبی) به کل مساحت مستطیل است.

ناحیه تقاطع سوزن

مساحت کل فضای جواب برابر با 12π\frac{1}{2}\pi است. مساحت ناحیه آبی نیز برابر با انتگرال معین عبارت 12sinθ\frac{1}{2} \sin \theta از ۰ تا π\pi است.

A=0π12sinθdθ\large A = \int _ 0 ^ \pi { \frac { 1 } { 2 } } \sin \theta d \theta

A=[12cosθ]0π=[12][12]=1\large A = \left [ - \frac{ 1 } { 2 } \cos \theta \right ] _ 0 ^ \pi = \left [ \frac { 1 } { 2 } \right ] - \left [ - \frac { 1 } { 2 } \right ] = 1

احتمال اینکه سوزن از یک لبه عبور کند و با آن متقاطع باشد، برابر با نسبت مساحت زیر منحنی بر مساحت کل مستطیل است:

Pr=1π/2=2π\large Pr = \frac { 1 } { \pi / 2 } = \frac { 2 } { \pi }

این بدین معنی است که اگر آزمایش انداختن سوزن را بارها و بارها تکرار کرده و تعداد دفعاتی که سوزن خطوط موازی را قطع می‌کند، ثبت کنیم، می‌توانیم تقریبی از عدد π\pi را به دست آوریم. به عبارت دیگر، اگر تعداد دفعات انداختن سوزن را در دو ضرب کرده و آن را بر تعداد دفعاتی که سوزن با خط تقاطع داشته، تقسیم کنیم، تقریب عدد π\pi به دست می‌آید.

برای مثال، اگر سوزنی را ۱۰۰ بار بیندازیم و ۶۴ بار از آن خط را قطع کند، تقریب عدد π\pi برابر با 2×10064\frac {2 \times 100} { 64} خواهد بود که تقریباً برابر با ۳٫۱۲۵ است. بدیهی است که برای گرفتن نتایج دقیق‌تر، باید تعداد دفعات آزمایش را افزایش دهیم.

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

آنچه در بخش قبل شرح دادیم، حالت ساده‌ای بود که یک سوزن با طولی برابر با فاصله خطوط، روی سطح انداخته می‌شد.

حال مسئله را با نگاهی کلی‌تر بررسی می‌کنیم.

مسئله سوزن بوفون

فرض کنید سوزنی به طول ll داریم و فاصله بین خطوط موازی برابر با tt است. در این صورت باید دو حالت را بررسی کنیم:

  • در حالت اول، سوزن کوتاه است (ltl \le t). برای یک سوزن کوتاه، بسته به زاویه‌ای که روی سطح قرار می‌گیرد، ممکن است خطی را قطع کند.
  • در حالت دوم، اگر سوزن بلند باشد (l>tl > t)، علاوه بر اینکه می‌تواند بین خطوط قرار بگیرد یا یکی از آن‌ها را قطع کند، حداقل زاویه‌ای برای آن وجود دارد که به ازای مقادیر بزرگ‌تر از این زاویه، سوزن حداقل یکی از خطوط را قطع خواهد کرد.

حالت اول (سوزن کوتاه)، مشابه مورد ساده‌ای است که در بخش قبل آن را بررسی کردیم. احتمال برابر با نسبت ناحیه تقاطع سوزن و خط به کل فضای جواب است. اکنون کل فضای جواب (مخرج)، بزرگ‌تر است (tπt \pi) و اندازه ناحیه نیز برابر با l2sinθ\frac { l } { 2 } \sin \theta خواهد بود. برای هر زاویه ممکن قرارگیری سوزن کوتاه روی سطح، احتمال برابر است با:

Pr=02πl2sinθdθπt=40π/2l2sinθdθπt\large \operatorname {Pr} = \frac { \int _ { 0 } ^ { 2 \pi } \frac { l } { 2 } | \sin \theta | d \theta } { \pi t } = \frac { 4 \int _ { 0 } ^ { \pi / 2 } \frac { l } { 2 } | \sin \theta | d \theta } { \pi t }

که حاصل آن به صورت زیر است:

Pr=2lπt\large \operatorname {Pr} =\frac { 2 l } { \pi t }

اگر lt=1\frac {l}{t} = 1 را در رابطه اخیر قرار دهیم، می‌بینیم که نتیجه، مشابه مورد ساده‌ای است که در بخش قبل بررسی کردیم.

اکنون، حالت دوم را در نظر می‌گیریم که مربوط به سوزن بلند است و بررسی آن از نظر هندسی اندکی پیچیده‌تر است. دلیل این پیچیدگی آن است که در زوایای خاصی، صرف‌نظر از موقعیت نقطه میانی، سوزن یکی از خطوط را قطع می‌کند. معادله زیر احتمال را براساس طول سوزن و عرض تخته‌ها بیان می‌کند:

Pr=2πcos1(tl)+2lπt(11(tl)2)\large \operatorname {Pr} = \frac { 2 } { \pi } \cos ^ { - 1 } \left ( \frac { t } { l } \right ) + \frac { 2 l } { \pi t } ( 1-\sqrt { 1 - \left ( \frac { t } { l } \right ) ^ { 2 } } )

برای ساده کردن معادله بالا، نسبت طول سوزن به عرض تخته‌ها را xx فرض می‌کنیم و در نتیجه، خواهیم داشت:

x=ltPr=2π(xx21+sec1x)Pr={2xπx12π(xx21+sec1x)\large \begin {array} {c} { x = \frac { l } { t } \quad \operatorname {Pr} = \frac { 2 } { \pi } \left ( x - \sqrt { x ^ { 2 } - 1 } + \sec ^ { - 1 } x \right ) } \\ { \operatorname {Pr} = \left \{ \begin {array} {cc} { \frac { 2 x } { \pi } \quad x \leq 1 } \\ { \frac { 2 } { \pi } \left ( x - \sqrt { x ^ { 2 } - 1 } + \sec ^ { - 1 } x \right ) } \end {array} \right . } \end{array}

معادله بالا در شکل زیر رسم شده است که در آن، محور افقی مقدار xx و محور عمودی مقدار احتمال را نشان می‌دهد.

نمودار احتمال برحسب x

همان‌طور که نمودار بالا نشان می‌دهد، وقتی سوزن کوتاه باشد، احتمال خطی خواهد بود. همچنین، وقتی سوزن بلند باشد، با بزرگ‌تر شدن نسبت طول سوزن به عرض نوارها، احتمال به یک مقدار قطعی میل می‌کند.

جالب است بدانید که در سال ۱۹۰۱، ریاضی‌دان ایتالیایی، ماریو لازارینی (Mario Lazzarini)، آزمایش سوزن بوفون را انجام داد. او یک سوزن را ۳۴۰۸ بار انداخت و تقریب شناخته شده 355113\frac {355}{113} را تا شش رقم اعشار برای π\pi به دست آورد.

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

در این بخش،‌ طبق آنچه که درباره روش بوفون گفتیم، تقریب عدد پی را در متلب پیاده‌سازی می‌کنیم. این کار را به سادگی و طی مراحلی که در ادامه می‌آید، انجام می‌دهیم.

تعریف پارامترها

قبل از همه چیز، تعداد سوزن‌ها را تعیین (در اینجا ۱۰۰۰) و آن را به صورت زیر تعریف می‌کنیم:

طول هر سوزن را نیز ۰٫۲ در نظر می‌گیریم:

می‌خواهیم نقاط ابتدای سوزن‌ها بین LL و 1L1 - L باشند، بنابراین، به بیرون از مربع واحد نمی‌رویم.

رسم سوزن‌ها

اکنون، پس از تعریف پارامترها و سوزن‌ها، برای درک بهتر، آن‌ها را رسم می‌کنیم. برنامه لازم برای رسم این خطوط به صورت زیر است:

شکل زیر، از اجرای این برنامه به دست آمده است.

خطوط

تعریف خطوط موازی

اکنون خطوط موازی را با دستور‌های زیر مشخص می‌کنیم که فاصله ‌آن‌ها از هم برابر با LL است:

خطوط موازی در شکل زیر مشخص شده‌اند.

خطوط موازی

شمارش تعداد سوزن‌های متقاطع و تقریب پی

با اجرای دو دستور زیر، مقدار تقریبی pipi به دست می‌آید:

در مورد خاص این مثال، نتیجه برابر است با:

piEstimate = 3.1153

رسم نمودار نهایی

با دستور زیر، شکل نهایی رسم خواهد شد که شامل سوزن‌ها، خطوط موازی و مقدار تقریبی به دست آمده عدد π\pi است.

تقریب عدد پی

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

پیاده‌سازی تقریب عدد پی در پایتون

برنامه پایتون تقریب عدد پی با استفاده از روش بوفون، به صورت زیر است:

نتیجه حاصل از اجرای این برنامه به صورت زیر خواهد بود:

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

اگر این مطلب برایتان مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۹ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
DataGeneticsMATLAB Central BlogsPython Fiddle
دانلود PDF مقاله
۱ دیدگاه برای «تقریب عدد پی با روش سوزن بوفون – پیاده‌سازی در متلب و پایتون»

چرا گفتین نقطه میانی سوزن هیچوقت نمیتونه فاصله ای بیش از 1/2 از لبه ها داشته باشه؟علت چیه؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *