裏 RjpWiki

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

算額(その1504)

2024年12月29日 | Julia

算額(その1504)

参考文献

1).  七十一 岩手県一関市川崎町薄衣諏訪前 浪分神社 明治35年(1902)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html

2).  今有如図 03054
https://w.atwiki.jp/sangaku/pages/138.html

キーワード:球13個,円錐
#Julia, #SymPy, #算額, #和算



円錐の中に大球 1 個,小球 12 個を容れる。大球は円錐の側面に内接し,小球と外接する。小球は円錐の側面に内接し,大球に外接し,互いに外接し合っている。
小球の直径が 1 寸のとき,円錐の底面の直径はいかほどか。

算額(その1495)の類題である。

左図は横から見た図,右図は上から見た図 青は大球,赤は小球,オレンジ色は円錐の外縁(右の図では底面の円)。小球の中心は灰色の円周上にある。

円錐の底面の半径と座標を a, (0, 0, 0)
円錐の高さを h
大球の半径と中心座標を r1, (0, 0, r1)
小球の半径と中心座標を r2, (b, 0, r2)
とおき,以下の連立方程式を r2 を既知として解き (a, r1, h) を求める。

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy

@syms a, b, h, r1, r2
b = r2/sind(Sym(30)/2)
eq1 = r1/(h - r1) - a/sqrt(a^2 + h^2)
eq2 = 2sqrt(r1*r2) - b
eq3 = r2/(a - b) - r1/a;
res = solve([eq1, eq2, eq3], (a, r1, h))[1]

    (r2*(sqrt(6) + 2*sqrt(2)), r2*(sqrt(3) + 2), 4*r2*(sqrt(3) + 2))

底面の円の半径 a は,小球の半径 r2 の (√6 + 2√2) 倍である。

小球の直径が 1 寸のとき,底面の円の直径は 5.27791686752936 寸である。

ちなみに円錐の高さは 7.46410161513775 寸,大球の直径は 3.73205080756888 寸である。

res[2](r2 => 1).evalf() |> println

    3.73205080756888

術は sqrt(√192 + 14) であるが,二重根号を外すと上と同じく √6 + 2√2 である。

function draw(r2, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (a, r1, h) = (r2*(sqrt(6) + 2*sqrt(2)), r2*(sqrt(3) + 2), 4*r2*(sqrt(3) + 2))
    b = r2/sind(30/2)
    @printf("小球の直径が %g のとき,底面の円の直径は %g, 高さは %g, 大球の直径は %g である。\n", 2r2, 2a, h, 2r1)
    p1 = plot([a, 0, -a, a], [0, h, 0, 0], color=:green, lw=0.5)
    circle(0, r1, r1)
    circle(b, r2, r2, :blue)
    if more
        delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
        hline!([0], color=:gray80, lw=0.5)
        vline!([0], color=:gray80, lw=0.5)
    end
    p2 = plot()
    rotate(b, 0, r2, angle=30, :blue)
    circle(0, 0, b, :gray80)
    circle(0, 0, r1)
    circle(0, 0, a, :green)
    plot(p1, p2)
end;

draw(1/2, true)


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

コメントを投稿

Julia」カテゴリの最新記事