裏 RjpWiki

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

算額(その1591)

2025年02月05日 | Julia

算額(その1591)

岡山県瀬戸内市長船町土師宮森 片山日子神社 明治6年(1873)
深川英俊,トニー・ロスマン:聖なる数学:算額,p. 110,森北出版株式会社,2010年4月22日.

キーワード:円7個,正三角形2個,正六角形
#Julia, #SymPy, #算額, #和算, #数学

正六角形の中に対角線を 6 本引いて正三角形を 2 個作り,内部にできる小さな正六角形に内接する大円と,正三角形の一辺と正六角形の二辺に接する小円を 6 個容れる。大円の半径が 10 寸のとき,小円の半径はいかほどか。

正六角形の一辺の長さを R
大円の半径と中心座標を r1, (0, 0)
小円の半径と中心座標を r2, (0, r1 + r2)
とする。

大円の直径は正六角形の一辺の長さと等しい。
小円が内接している二等辺三角形の高さは大円の半径に等しい。

小円と大円の間には (r1 - r2)*cos(30°) = r2 の関係がある。
これを解いて,r2 = r1*(2√3 - 3) である。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive
eq = (r1 - r2)*cosd(Sym(30)) - r2
solve(eq, r2)[1] |> factor |> println

    r1*(-3 + 2*sqrt(3))

小円の半径 r2 は大円の半径 r1 の (2√3 - 3) 倍である。
大円の半径が 10 寸のとき,小円の半径は 4.641016151377544 寸である。

function draw(r1, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r2 = r1*(-3 + 2*sqrt(3))
    R = 2r1
    x = [R*cosd(z) for z in 90:60:510]
    y = [R*sind(z) for z in 90:60:510]
    @printf("大円の半径が %g のとき,小円の半径は %g である。\n", r1, r2)
    plot()
    circle(0, 0, r1, :green)
    rotate(0, r1 + r2, r2, angle=60)
    for i = 1:6
        segment(x[i], y[i], x[i + 1], y[i + 1], :blue)
        segment(x[i], y[i], x[i + 2], y[i + 2], :blue)
    end
    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)
        point(0, r1, "r1", :green, :center, :bottom, delta=delta/2)
        point(0, R, "R", :blue, :center, :bottom, delta=delta/2)
        point(0, r1 + r2, "r1+r2", :red, :center, delta=-delta/2)
    end
end;

draw(10, true)


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

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Julia」カテゴリの最新記事