هندسهٔ اقلیدسی یعنی $\mathbb{R}^n$ به همراه چند اصل، مانند اصل توازی و غیره. مطمئن نیستم اجازهٔ استفاده از ابزار جزو اصلها و تعریفِ هندسهٔ اقلیدسی باشد. ولی ترسیمپذیری که به صورت پیشفرض منظور ترسیمپذیری با خطکش و پرگار است و منظور از خطکش نیز، خطکش مدرج نیست، درست است.
به هر حال، یک روش برای انجام کاری که میخواهید انجام بدهید، میتواند کمک گرفتن از نیمسازکشی باشد. یعنی اگر با تقریب مشکلی ندارید و حتما نیازی نیست دقیقا خود مقدار زاویه ایجاد شود (مثلا تا دو رقم اعشار برایتان کافی است)، آنگاه ابتدا توجه کنید که یک جمع متناهی یکتای $\alpha\simeq k\pi+a_1\frac{\pi}{2}+\dots+a_n\frac{\pi}{2^n}$ که $k\in\mathbb{Z}$ و $n\in\mathbb{N}$ و $a_1,\dots,a_n\in\lbrace 0,1\rbrace$ و تفاضل دو طرف رابطه از مقدار دقتِ تقریب خواستهشده کمتر باشد، میتوان یافت. اکنون هر یک از $\frac{\pi}{2^i}$ها برابر با نیمی از $\frac{\pi}{2^{i-1}}$ است که با نیمسازکشی میتوان آن را بدستآورد و کشیدن نیمساز به کمک پرگار و خطکش شدنیاست. جمع دو زاویهٔ رسمپذیر نیز با کمک خطکش و پرگار رسمپذیر است. یکی را بکشید و سپس دیگری را از خطِ انتهای زاویهٔ پیشین شروع به کشیدن کنید.
اگر یافتن مقدارهای $k$ و $a_i$ها برایتان روشن نیست، اینجا به صورت الگوریتمی برایتان یک روش یافتن آنها را قرار میدهم. اثبات یکتا بودن ضرایب با توجه به شرطی که گذاشتیم نباید برایتان سخت باشد. فرض کنید یک زاویهٔ $\alpha$ و یک مقدار برای دقت تقریب مانند $\epsilon$ به شما دادهشدهاست. نخست بگذارید $k=[\frac{\alpha}{\pi}]$ و سپس حاصل عبارت تقریب که در حال حاضر همگیِ $a_i$ها را صفر فرض کنید، را از $\alpha$ کم کنید و قرار دهید $a_1=[\frac{\alpha-k\pi}{\frac{\pi}{2}}]$ که چون تفاضل روی صورت نامنفی و کوچکتر اکید از $\pi$ است، حاصل تقسیم بزرگتریامساوی صفر و کوچکتر اکید از ۲ است، یعنی دستآوردِ جزءصحیح یا ۰ میشود یا ۱. همین اُلگو را ادامه دهید تا تفاضل ترکیب از $\alpha$ کوچکتر (اکید) از $\epsilon$ شود. در زیر برایتان برنامهای با پایتون نوشتهام که تابع approximateAngle
(به معنای تقریببزن-زاویه) دو ورودی میگیرد (توجه کنید که بستهٔ math
که جزو بستههای بهطور پیشفرض همراه پایتون است باید فراخواندهشدهباشد تا عدد پی، تابع جزءصحیح و قدرمطلق را دسترسی داشته باشید و نیاز به تعریفکردنِ دستیشان نباشد). خروجیِ این تابع، سه چیز هستند. نخست مقدار بدستآمده بوسیلهٔ ترکیب یعنی حاصلِ $k\pi+\sum_{i=1}^na_i\frac{\pi}{2^{i+1}}$، دوم، $k$ و سوم، بردارِ $a=(a_1,\dots,a_n)$. در برنامهنویسی با پایتون توجه کنید که اندیسِ $-1$ برای یک آرایهٔ یکبعدی (بردار) یعنی اندیسِ آخر.
# 2021.04.18
# Related to the link https://math.irancircle.com/22144
import math # we need things from this module such as pi constant, floor and fabs functions.
# a python function to find the closest sum of bisections of pi to a given angle.
def approximateAngle(alpha,epsilon):
k = math.floor(alpha/math.pi)
temporaryAnswer = k*math.pi
a = []
i = 0
while math.fabs(alpha-temporaryAnswer)>=epsilon:
i += 1
a.append(math.floor((alpha-temporaryAnswer)/(math.pi/(2**i))))
temporaryAnswer = temporaryAnswer+a[-1]*math.pi/(2**i)
return(temporaryAnswer,k,a)
# Let's test our function with alpha=pi, pi/3 and pi/5 and epsilon=0.1
print(approximateAngle(math.pi,0.1))
print(approximateAngle(math.pi/3,0.1))
print(approximateAngle(math.pi/5,0.1))
# alpha=pi/5 and epsilon=0.01
print(approximateAngle(math.pi/5,0.01))
پس از تعریف تابع، برایتان روی چند ورودی آن را اثر دادهام که در جدول زیر نتیجهشان را گذاشتهام.
$$\begin{array}{l|r}
\text{ ورودی } & \text{ خروجی }\\
\hline
\begin{array}{l|l}
\alpha & \epsilon\\
\hline
\pi & 0.1\\
\frac{\pi}{3} & 0.1\\
\frac{\pi}{5} & 0.1\\
\frac{\pi}{5} & 0.01
\end{array} & \begin{array}{l}
k\pi+\sum_{i=1}^na_i\frac{\pi}{2^{i+1}},k,[a_1,\dots,a_n]\\
\hline
\texttt{(3.141592653589793, 1, [])}\\
\texttt{(0.9817477042468103, 0, [0, 1, 0, 1])}\\
\texttt{(0.5890486225480862, 0, [0, 0, 1, 1])}\\
\texttt{(0.6258641614573416, 0, [0, 0, 1, 1, 0, 0, 1, 1])}
\end{array}
\end{array}$$
توجه کنید که پایتون یک زبان برنامهنویسی است و نه نرمافزار ریاضیای که با محاسبههای نمادین مانند میپل کار کند که حاصل را عبارت جبریای از کسرهای $pi$دار نمایش دهد. به هر حال، برای نمونه تعبیر خروجی برای $\frac{\pi}{5}$ که در دیدگاهتان خواستید به این شکل میشود که $\frac{\pi}{5}\simeq\frac{\pi}{8}+\frac{\pi}{16}$ اگر تا $0.1$ تفاضل برایتان پذیرفتنی باشد و اگر بخواهید دقت را تا $0.01$ بالاتر ببرید دارید $\frac{\pi}{5}\simeq\frac{\pi}{8}+\frac{\pi}{16}+\frac{\pi}{128}+\frac{\pi}{256}$. خود مقدار عددیِ $\frac{\pi}{5}$ در پایتون 0.6283185307179586
زده میشود. که میتوانید چک کنید که واقعا تفاضلش با دو ترکیب دادهشده (مقدارهای عددیشان در جدول بالا هست) از دقت تقریب کمتر میشود.