• ベストアンサー

漸化式を用いたπを求めるプログラム

下のプログラムの問題がわかりません。教えていただけませんか? 半径1の円に内接する正6・2^n角形の1辺の長さをa(n)とし  a(n)+1=a(n)/√2+√4-a^2(n) の式のπの近似値を計算するプログラムを作成しなさい。  ※()の中は添え字です。 あと√2+√4-a^2(n)の文章は √のなかに2+√4-a^2(n)の式が入ってる形です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Option Explicit On Option Compare Binary Option Strict On Option Infer Off 'VB2008以上 Class Q4333288A Shared Sub Main() System.Console.WriteLine(CalculatePI(50).ToString()) System.Console.ReadKey(true) End Sub Shared Function CalculatePI(Precision As Integer) As Double Dim pi As Double = SideLength(Precision) * 6 * Math.Pow(2,Precision) / 2 Return pi End Function 'クラスに分割しようと思ったけど,関数名が思いつかないので放置 Shared Function SideLength(n As Integer) As Double If n < 0 Then Throw new System.ArgumentOutOfRangeException() End If If n = 0 Then Return 1.0 End If Dim temp As Double = SideLength(n-1) Return temp / Math.Sqrt(2+Math.Sqrt(4-Math.Pow(temp,2))) End Function End Class 'a(n)+1=a(n)/√2+√4-a^2(n) 'これじゃ式が全然通じないよ 'a(n)+ 1 = ( a(n) / Math.Sqrt(2) )+ Math.Sqrt(4) - Math.Pow(a(n),2) 'とか 'a(n)+ 1 = a(n) / Math.Sqrt(2 + Math.Sqrt(4) - Math.Pow(a(n),2)) 'って読んじゃった。 'せめて 'a(n+1)=a(n)/√(2+√(4-(a(n))^2)) 'と書かないと。 'a(n+1) = a(n) / Math.Sqrt(2+Math.Sqrt(4-Math.Pow(a(n),2))) 'だともっと嬉しい。 'VBA/VB6だと後から言われても回答には戻ってこないつもり '問1:この漸化式を導出せよ 'わざわざ面積を求めんでも。周囲の長さでいいじゃん

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

>'わざわざ面積を求めんでも。周囲の長さでいいじゃん 比の関係からするとそうですけど、値は円周だと 2πになっちゃいますから。 2で割ればというのはまあそうなんですが。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

半径1の円に内接する正六角形の一辺の長さが 1 になります。 あとはこの値と質問にある式を使って、 a(n)+1=a(n)/√2+√4-a^2(n) 正十二角形、正二十四角形、…の値を求めていくと次のように変化します。 半径1の円の面積はπですが、正多角形のほうの変化に注目してください。 辺の数 6 辺の長さa 1 内接正多角形の面積 2.598076211353315940291 面積比 0.826993343132688074267 辺の数 12 辺の長さa 0.5176380902050415246978 内接正多角形の面積 3 面積比 0.9549296585513720146133 辺の数 24 辺の長さa 0.2610523844401031830968 内接正多角形の面積 3.1 05828541230249148187 円の面積 3.1 41592653589793238463 面積比 0.9886159294653692193848 辺の数 48 辺の長さa 0.1308062584602861336306 内接正多角形の面積 3.1 32628613281238197162 円の面積 3.1 41592653589793238463 面積比 0.9971466573496369329908 だんだんと本当の値に近づいていきます。 この手順を繰り返すようにプログラムを組めばいいだけです。

関連するQ&A

専門家に質問してみよう