Your SlideShare is downloading. ×
Pi
Pi
Pi
Pi
Pi
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Pi

200

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
200
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 圖 4 主題二 : Archimedean π Let π be the arc length of semicircle with radius 1 (圖 1) 我們的目的是利用 Vpython 來計算π 的值 我們首先證明 , 給任兩個 convex E1 , E2 假設 E1 包住 E2 , 則 E1 的邊長和會大於 E2 的邊長和 給一例子 我們將圖 2 沿著 L1 線切割得到圖 3 我們知道 E1 的邊長和 > E3 的邊長和 我們再將圖 3 沿著 L2 線切割得到圖 4 相同 E1 的邊長和 > E3 的邊長和 > E4 的邊 長和 依此類推 , 我們可得知 E1 的邊長和會大於 E2 的邊長和 圖 1 圖 2 圖 3
  • 2. 由上面的推論就可得知圖 5 的正方形邊 長會大於圓的圓周長也就是 4 > π 我們將圖 6 的三角形分割成圖 7 由角平分限定理可得 k1=k0 / (sqrt(k0*k0+1)+1) 則以 2*k1 為邊長所形成的正八邊形也會把 圓給剛好包住 (圖 8) 就可得到 4=4*k0 > 8*k1 > π 相同我們再將圖 9 得三角形分割成圖 10 由角平分限定理可得 k2=k1 / (sqrt(k1*k1+1)+1) 則以 2*k2 為邊長所形成 的正 16 邊形也會把圓給 剛好包住 (圖 11) 連續以上步驟所形成的以 圖 5 圖 6 圖 7 圖 8 圖 9 圖 10 圖 11
  • 3. 2*kn 為邊長所形成的正 8*n 邊形也會把圓給剛好包住 則 (2*2*…….*2)*kn > π n+2 個 當 n 很大時 , 所形成的正 8*n 邊形 , 就會非常接近圓 , 則 其邊長和的一半也就會非常接近π 則我們要如何以 Vpython 來寫出程式呢 ? 我們要設計出一個可以讓使用者按一下得 ………… ………… 首先我們先利用圖 5 中的 a1, 讓 a1 以原點為軸 旋轉負 90 度可得 a1--1, 相同 a1--1 以原點為軸旋 轉負 90 度可得 a1--2, a1--2 以原點為軸旋轉負 90 度可得 a1--3 再來我們利用圖 8 中的 a2, 讓 a2 以原點為軸 旋轉負 45 度可得 a2--1, 相同 a2--1 以原點為 軸旋轉負 45 度可得 a2--2, 依此類推得 a2—3 , a2--4 , a2—5 , a2--6 , a2--7 重複上面的動作讓 am 以原點為軸旋轉負(180/(2 的 m 次方)) 按一下 按一下 按一下 正八邊形 正 16 邊形
  • 4. 度可得 an--1, 相同an--1以原點為軸旋轉負(180/(2 的m次方)) 度可得 an--2 , 想同 an--3, an--4, an--5, an—6……… 所以根據上面所得的結果 , 我們現在只要定義一個旋轉函 數 , 就能依上面所說的想法寫出程式了 我們知道 A = 是一旋轉矩陣 亦即讓 得到的 (x2 , y2) 是 (x , y) 以原點(0 , 0) 為 軸旋轉θ角 (圖 12) 但我們現在想做一個讓 (x , y) 可以 以任何 一點 (a , b) 為軸旋轉得到 (x2 , y2 ) 的函數 , 因為我們在下一主題也會用到此函數(圖 13) 所以我們就用 (x , y) 向量減掉 (a , b) 向量 , 得到 (x-a,y-b) 向量 , 再讓 (x-a,y-b) 以原點為軸旋轉θ角得到 (x3 , y3) 圖 12 圖 13
  • 5. 亦即 再讓 (x3 , y3) 向量加上之前減掉的 (a , b) 向量 , 就可得 到我們所要的 (x2 , y2) 所以綜合以上所說的 , 就可以定義出一個旋轉函數 r ,如下 def r( v , u ,θ) : v=vector(v) u=vector(u) w=v-u w=vector(w.x*cos(θ)-w.y*sin(θ),w.x*sin(θ)+w.y*cos(θ)) w=w+u return (w.x,w.y) v : 所要旋轉的那一點 u : v 這一點所要旋轉的軸心 θ :所要旋轉的角度 則我們就可以依上面所說的完成程式了

×