裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

算額(その685)

2024年02月08日 | ブログラミング

算額(その685)

和算問題あれこれ 2 令和5年2月の問題-No.4(『算法求積通考』第6問)
https://gunmawasan.web.fc2.com/k-n-mondai.html

長径 2 寸,短径 1 寸の楕円形の周は何寸か。
小数点以下 4 位を四捨五入し,小数点以下 3 位まで答えよ。
円周率は 3.14159 を使用のこと。

コンピュータを使って正確な値を求めるならば,第二種完全楕円積分を使えばよい。
計算するためのパッケージ(ライブラリ)が用意されているのでそれを使えばよい。あるいは,区分求積法を使ってもよいし,逐次計算により求めてもよい。

しかし,今回のように要求される精度がほどほどに指定されている場合には,いくつかの近似式があるので精度に基づいて選択すればよい。

以下では,楕円のパラメータとして,長半径 a,短半径 b を使う。
長半径,短半径は長径,短径の半分である。

a = 2//2   # 長径 2
b = 1//2;  # 短径 1

まずは,関孝和の近似式

2sqrt(4(a - b)^2 + 3.14159^2*a*b)

    4.872286471072899

第二種完全楕円積分の近似式で,Gauss-Kummer の公式

h = (a - b)/(a + b)
3.14159*(a + b)*(1 + (h/2)^2 + h^4/64 + h^6/256)

    4.844218858908822

同じく近似式でシュリニヴァーサ・アイヤンガー・ラマヌジャンの近似式

3.14159*(3(a + b) - sqrt((3a + b)*(a + 3b)))

    4.844206457106038

名前が似ているが,もう少し精度が高いらしい,シュリニヴァーサ・ラマヌジャンの近似式

3.14159* (a + b)*(1 + 3*((a - b)/(a + b))^2/(10 + sqrt(4 - 3*((a - b)/(a + b))^2)))

    4.844220016323984

残念ながら,関孝和の近似式はちょっと精度が足りないが,他の近似公式では「小数点以下 4 位を四捨五入し,小数点以下 3 位まで答えよ」の要件を満たし,4.844 を与える。

なお,第二種完全楕円積分を用いた正確な値は 4.844224110273837 である

using Elliptic
m = 1.0 - (b / a)^2             # 楕円の離心率を計算
println(4 * a * ellipke(m)[2])  # 楕円の周長を計算(第二種完全楕円積分)

    4.844224110273837

コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その684) | トップ | 算額(その686) »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事