« NHKスペシャル「ここまで来た!うつ病治療」のメモ - 2012/2/12 | トップページ | 「死ねばいいのに」(京極夏彦)を読んだ。 »

2012年2月13日 (月)

"円の弧長,弦長,矢高,半径のどれか2つを与えて残りを計算"をkeisan.casio.jpにUP!

こういう計算について、このブログに検索されてくる方多いんですよね。カシオの高精度計算サイトの自作式にも何種類か上げてますが、そこのヒット数も結構あるということでこの際、全部まとめて一つの式にしました。

内容は、

”弧長(円弧の長さ)L、弦長d、矢高(円弧の高さ)h、半径rのどれか2つに値を
入力して、残りの2つを0と入力すると、その残りの2つおよび中心角を計算します。
L=r*θ, d=2*r*sin(θ/2), h=r*(1-cos(θ/2))を用い、ニュートン・ラフソン法で
計算しています。

リンクはこちら↓

円の弧長,弦長,矢高,半径のどれか2つを与えて残りを計算

Circle

半径を入力するものはニュートン法じゃなくて単なる逆三角関数で計算できますが。

ニュートン・ラフソン法の説明はこちら

では自作式の中身も公開。keisan.casio.jpで公開してもいいけどこちらのブログを見てくれた方のみに公開しましょう。

「circle_calc.txt」をダウンロード

L=弧長;
d=弦長;
h=矢高;
r=半径;

if (L<>0 and h<>0 and d==0 and r==0) {
    /* 円弧の長さと矢高から弦長 */

    a=2.*h/L;
    x=1.0;
    for (j=0;j<=20;j=j+1) {
        x=x-(-a*x*x+x*(1.-cos(x)))/(x*sin(x)-1.+cos(x));
    }
    th=2*x;
    r=L/th;
    d=2.*r*sin(x);

} elseif (L<>0 and d<>0 and h==0 and r==0) {
    /* 円弧の長さと弦長から矢高 */

    c=d/L;
    x=1.0;
    for (j=0;j<=20;j=j+1) {
        x=x-((x*sin(x)-c*x*x)/(x*cos(x)-sin(x)));
    }
    th=2*x;
    r=L/th;
    h=r*(1.-cos(th/2.));

} elseif (L==0 and d<>0 and h<>0 and r==0) {
    /* 弦長と矢高から円弧 */

    a=h/d;
    x=1.0;
    for (j=0;j<=20;j=j+1) {
        f=(1.-cos(x))/(2.*sin(x)) - a;
        fd = (1.-cos(x))/(2.*sin(x)*sin(x));
        x=x-f/fd;
    }
    th=2*x;
    r=d/(2.*sin(x));
    L=r*th;

} elseif (L<>0 and d==0 and h==0 and r<>0) {
    /*円弧の長さと半径から弦長・矢高*/

    th=L/r;
    d=2.*r*sin(th/2.);
    h=r*(1.-cos(th/2.));

}  elseif (L==0 and d<>0 and h==0 and r<>0) {  
    /*弦長と半径から矢高・円弧 */
    th = 2.*asin(d/(2.*r));
    L=r*th;
    h=r*(1.-cos(th/2.));

}  elseif (L==0 and d==0 and h<>0 and r<>0) { 
   /*矢高と半径から弦長・弧長*/
   th = 2.*acos(1.-(h/r));
   L=r*th;
   d=2.*r*sin(th/2.);
}

println(L);
println(d);
println(h);
println(r);
println(th*180/pi);

« NHKスペシャル「ここまで来た!うつ病治療」のメモ - 2012/2/12 | トップページ | 「死ねばいいのに」(京極夏彦)を読んだ。 »

学問・資格」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/512682/53965990

この記事へのトラックバック一覧です: "円の弧長,弦長,矢高,半径のどれか2つを与えて残りを計算"をkeisan.casio.jpにUP!:

« NHKスペシャル「ここまで来た!うつ病治療」のメモ - 2012/2/12 | トップページ | 「死ねばいいのに」(京極夏彦)を読んだ。 »

2018年6月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フォト
無料ブログはココログ