• Like

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
176
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

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