以下の内容はhttps://sangaku0418.hatenablog.com/entry/2024/12/20/002117より取得しました。


算額(その1486)

41 岩手県一関市滝沢字寺田下 熊野白山滝神社 文久元年(1861)

安富有恒:和算—岩手の現存算額のすべて,青磁社,東京都,1987.
http://www.wasan.jp/iwatenosangaku_yasutomi.pdf
キーワード:円7個,楕円,正三角形,正六角形
#Julia #SymPy #算額 #和算 #数学


大円と斜線 6 本で区分された領域に,小円 6 個,楕円 3 個を容れる。大円,小円の直径が 3 寸,1 寸のとき,楕円の長径はいかほどか。

算法助術の公式 97 を適用する。
⊿ABC に楕円が内接し,⊿ABC の底辺 BC と楕円の長軸が平行である。楕円の長軸,短軸をそれぞれ \(p, q, \text{BC} = a, \text{AC} = b, \text{AB} = c, \text{AH} = h\) とすると

\(-(b^2 - c^2)^2 h q^2 + (b^2 - c^2)^2 q^3 + a^4 h(2h - q)^2 - a^4 q (2h - q)^2 - a^2 h p^2(2h -  q)^2 = 0 \)

が成り立つ。
大円の半径と中心座標を \(r_1, (0, 0)\)
小円の半径と中心座標を \(r_2, (0, r_1 + r_2), (0, r_2 - r_1)\)
\(q = 2r_2, h = r_1 + 2r_2, a = b = c = 2h/\sqrt{3}\) である。

include("julia-source.txt");  # julia-source.txt ソース

using SymPy

@syms p, q, a, b, c, h
eq97 = -(b^2 - c^2)^2*h*q^2 + (b^2 - c^2)^2*q^3 + a^4*h*(2h - q)^2 - a^4*q*(2h - q)^2 - a^2*h*p^2*(2h -  q)^2

\(q = 1, a = b = c = 5/\sqrt{3}, h = 2.5\) が既知で,\(p\) が未知なので,以下の方程式を解いて \(p = \sqrt{5} = 2.23606797749979\) を得る。

eq97_2 = eq97(q => 1, a =>5/√Sym(3), b => 5/√Sym(3), c => 5/√Sym(3), h => 25//10)
eq97_2 |> println

    5000/3 - 1000*p^2/3

ans_p = solve(eq97_2,  p)[2] # 2 of 2
ans_p |> println
ans_p.evalf() |> println

    sqrt(5)
    2.23606797749979

描画関数プログラムのソースを見る

function draw(more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r1 = 3/2
    r2 = 1/2
    q = 1
    a = b = c = 5/√3
    h = 2.5
    θ = 0:60:360
    x = 5/√3 .*cosd.(θ)
    y = 5/√3 .*sind.(θ)
    plot()
    # circle(0, 0, 5/√3)
    ellipse(0, r1 + r2, √5/2, 1/2, color=:orange)
    ellipse( (r1 + r2)*cosd(30), -(r1 + r2)*sind(30), √5/2, 1/2, φ=60, color=:orange)
    ellipse(-(r1 + r2)*cosd(30), -(r1 + r2)*sind(30), √5/2, 1/2, φ=120, color=:orange)
    circle(0, 0, r1, :blue)
    rotate(0, r2 - r1, r2)
    rotate(0, r1 + r2, r2)
    for i = 1:3
        j = i + 3
        segment(x[i], y[i], x[i + 1], y[i + 1], :green)
        segment(x[j], y[j], x[j + 1], y[j + 1], :green)
        segment(x[i], y[i], x[i + 3], y[i + 3], :green)
    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", :blue, :center, delta=-delta)
        point(0, r1 + r2, "r1+r2", :red, :center, delta=-delta)
    end
end;

draw(true)


以下のアイコンをクリックして応援してください




以上の内容はhttps://sangaku0418.hatenablog.com/entry/2024/12/20/002117より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14