アプリ版:「スタンプのみでお礼する」機能のリリースについて

下のプログラムの問題がわかりません。教えていただけませんか?

半径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)の式が入ってる形です。

A 回答 (3件)

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:この漸化式を導出せよ

'わざわざ面積を求めんでも。周囲の長さでいいじゃん
    • good
    • 0

>'わざわざ面積を求めんでも。

周囲の長さでいいじゃん
比の関係からするとそうですけど、値は円周だと 2πになっちゃいますから。
2で割ればというのはまあそうなんですが。
    • good
    • 0

半径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

だんだんと本当の値に近づいていきます。
この手順を繰り返すようにプログラムを組めばいいだけです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!