سایتهای بسیاری وجود دارند که یکی از آنها را آقای @ناصرـآهنگرپور اشاره کردند. پیش از اشاره به چند سایت و مرجع دیگر ابتدا برایتان یادآور میشوم که این سایتها هرگز همهٔ عددهای یک عدد بدون نظم مانند عدد $\pi$ را ندارند. توجه کنید که عددهای نظمدار مترادف با عددهای گویا نیستند، برخی عددهای گنگ یا حتی متعالی نیز دارای نظم هستند. به هر حال، کاری که این سایتها کردهاند این است که تا مقدار ثابتی از عددهای پس از اعشار عدد مورد نظر را ذخیره کردهاند. برای نمونه سایت شمارهٔ ۱ در زیر را نگاه کنید، در ابتدایش اشاره کردهاست که «تا $2\times 10^9$ رقم پس از اعشار از عددهای $\pi$ و $e$ (عدد نپر) و $\sqrt{2}$ و $\phi$ (نسبت طلایی) را در حافظه دارد و کاری که میکند جستجوی عدد شما تنها در این قسمتِ حفظشده در بایگانیاش است.» بعلاوه در جستجو نیز محدودیت دارند، برای نمونه برخی فقط ۱۰ عدد متوالی را چک میکنند و غیره.
اما به جز سایتها میتوانید از نرمافزارهای ریاضی یا زبانهای برنامهنویسی هم کمک بگیرید. برای نمونه اگر میخواهید نرمافزار میپل Maple عدد $\pi$ را با ۲۰ رقم پس از اعشار محاسبه کند آنگاه از دستور evalf( Pi, 21)
استفاده کنید. آنگاه آن را به یک رشته (واژه، دنبالهای از کاراکترها) تبدیل کنید با دستورِ convert( -, string)
و سپس با دستورِ Search
در بستهٔ StringTools
رشته عددی که میخواهید را جستجو کنید. اگر خروجی صفر بود، یعنی رشتهتان یافت نشد، اگر عددی مثبت بود آنگاه این عدد شمارهٔ مکانی است که رشتهتان از آنجا شروع شدهاست. برای نمونه بیایید چک کنیم که آیا رشتهٔ ۱۲۳ در ۲۰ رقم نخستِ عدد پی دیده میشود یا خیر و همینطور رشتهٔ ۵۸۹.
num := evalf( Pi, 21 ):
numstr := convert( num, string ):
StringTools:-Search( "123", numstr );
StringTools:-Search( "589", numstr );
اگر از میپل بخواهید که numstr
را نشان دهد به شما این رشته را نشان میدهد.
"3.14159265358979323846"
و توجه کنید که رقم پایانی گرد شدهاست بنابراین به آن ۶ که در پایان آمدهاست نمیتوان ۱۰۰٪ اعتماد کرد، اگر از میپل خواسته بودید تا ۱۹ رقم پس از اعشار بیابد خروجیتان 3.1415926535897932385 میشد! این یعنی ۴۶ آخر را به ۵ گرد میکرد. به هر حال برای دو جستجویمان به ترتیب عددهای ۰ و ۱۲ ارائه میشوند. توجه کنید که ۱۲ با احتساب ۳ و ممیز است. اگر میخواهید دقیقا شمارش از پس از اعشار شروع شود باید به جای جستجو در رشتهٔ numstr
در برشدادهشدهاش که دو کاراکتر نخست را نداشته باشد جستجو کنید. در میپل همانند زبان برنامهنویسی پایتون Python، عملگرِ برش slice وجود دارد (در واقع method نه operator). در پایتون برای برشی که از بعد از اندیسِ ۲ تا آخر را شامل شود از numstr[2:]
یا numstr[2:-1]
استفاده میکردید، در میپل از numstr[3..]
یا numstr[3..-1]
استفاده میکنید. توجه کنید که برخلافِ پایتون که از صفر شمارهگذاری میکند، میپل از ۱ شمارهگذاری میکند پس کاراکتر سوم در میپل اندیس ۳ دارد نه ۲.
num := evalf( Pi, 21 ):
numstr := convert( num, string )[3..]:
StringTools:-Search( "123", numstr );
StringTools:-Search( "589", numstr );
که این دفعه به جای ۱۲ برای ۵۸۹ عدد ۱۰ را ارائه میکند. و در پایان حواستان باشد که نرمافزار میپل یا هر نرمافزار ریاضی یا بسته و الگوریتم دیگری ممکن است فقط تا تعداد خاصی عدد پس از اعشار خروجیاش با عدد اصلی برابر باشد، پس برای هر تعداد دلخواهی میپل نمیتواند عددهای درست را بدهد. البته من بررسی نکردهام که نرمافزار میپل عدد $\pi$ را تا چند رقم پس از اعشار ذخیره کردهاست یا از چه الگوریتمی برای محاسبهاش استفاده میکند تا بدانم تا چند رقم میتوانید ازش با اطمینان صحت بخواهید. اگر بیشتر از این دوست دارید، میتوانید به جای فقط گرفتن شمارهٔ جایگاه اولین باری که رشتهتان مشاهده میشود، بلکه تمام دفعههایی که مشاهده میشود را بخواهید. برای این کار به جای دستورِ Search
از دستورِ SearchAll
کمک بگیرید.
num := evalf( Pi, 101 ):
numstr := convert( num, string )[3..]:
StringTools:-SearchAll( "16", numstr );
که خروجیتان دو عدد ۴۰ و ۶۸ میشود. این بار اگر رشتهتان اصلا دیده نشود، به جای خروجیِ صفر، چیزی در خروجی داده نمیشود.
- http://www.subidiom.com/pi
- https://www.atractor.pt/mat/fromPI/PIsearch-_en.html