新UI(Beta)を使用中です。旧バージョンに戻す場合はこちら
keisan生活や実務に役立つ高精度計算サイト

楕円の円周

作者: yangmask さん実行数: 430505

※ 本ライブラリは会員の方が作成した作品です。内容について当サイトは一切関知しません。

ブックマーク一覧
これは、楕円の円周を求めるプログラムです。

考え方としては、半径を等間隔に1000箇所に区切り、その区切り箇所の水平線と楕円が接する点を特定し、
その点と点とを結んだ線の長さの総和を求める・・・というものです。
要するに、多角形により、楕円の円周の近似値を得るということです。

詳しくは、下記リンクをご参照のこと。
精度としては、長半径1の時、計算結果は、0.00001の位までの正確さだとお考えください。
短半径
長半径
 
例えば、長半径0.5、短半径0.5、すなわち、直径1の真円として計算してみてください。そうすれば, 3.14158335634999245734 と出るはずです。つまり、円周率です。円周率の真値は,3.1415926535・・・だそうですので、精度としては、(長半径1の時)、 0.0001の位までだと分かります。

なぜ、1000箇所に区切ったのかというと、それ以上は、タイムアウトで計算できなかったなどの問題があったからです。もし、ご自分の計算機で計算されるなら、もっと精度の高い値が得られるかもしれません。

_____

以下に、プログラムを示します。精度=0.001の部分を改変し、もっと小さい値にして、かつ、2行目のn<=1000を、1÷精度の値になるように調整してください。

k=0;精度=0.001;縦横比率=短半径/長半径;
for(n=1;n<=1000;n=n+1)
{ j=(sqrt((精度^2)+(縦横比率^2*((sqrt(1-(精度*(n-1))^2)-sqrt(1-(精度*n)^2))^2))));
k=k+j;
答え=k*長半径*4;}
print(答え);

_____

あるいは、他の計算機なら、こう記述するかもしれません。

Σ (n=1,1/★) {√((★^2)+(▲^2*((√(1-(★*(n-1))^2)-√(1-(★*n)^2))^2)))}

★の部分が精度(例えば、0.001)で、▲が短半径/長半径の値です。ただし、この計算結果に、×長半径×4としたものが、その楕円の円周です。

この計算についてお客様の声はまだありません。