算額あれこれ

算額問題をコンピュータで解きます

算額(その1720)

03014 岩手県一関市釣山 八幡神社 天保9年(1838)

今有如図
https://w.atwiki.jp/sangaku/pages/198.html
キーワード:円5個,楕円
#Julia #SymPy #算額 #和算 #数学


楕円の中に甲円 1 個,乙円 2 個,丙円 2 個を容れる。丙円は楕円の周端で接する(曲率円である)。甲円の直径が与えられたとき楕円の長径を求める術を述べよ。


楕円の長半径,短半径と中心座標を \(a,\ b,\ (0,\ 0);\ b = r_1\)
甲円の半径と中心座標を \(r_1,\ (0,\ 0)\)
乙円の半径と中心座標を \(r_2,\ (r_1 + r_2,\ 0)\)
丙円の半径と中心座標を \(r_3,\ (a - r_3,\ 0)\)
とおき,以下の連立方程式を解く。

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

using SymPy

@syms a::positive, b::positive, r1::positive, r2::positive, r3::positive
b = r1
eq1 = r3 - b^2/a  # 丙円は曲率円
eq2 = (r1 + r2)^2 - (a^2 - b^2)*(b^2 - r2^2)/b^2  # 算法助術-公式84
eq3 = (r1 + 2r2 + 2r3) - a  # 長径の内訳
res = solve([eq1, eq2, eq3], (a, r2, r3))[1];

# a 長半径
res[1]

\( \displaystyle r_{1} \left(1 + \sqrt{5}\right)\)

長半径 \(a\) は,甲円の半径 \(r_1\) の \(1 + \sqrt{5}\) 倍である。
甲円の直径が 1 寸のとき,楕円の長径は \(1 + \sqrt{5} = 3.23606797749979\) 寸である。

# r2 乙円の半径
res[2] |> factor

\( \displaystyle \frac{r_{1} \left(1 + \sqrt{5}\right)}{4}\)

# r3 丙円の半径
res[3] |> factor

\( \displaystyle \frac{r_{1} \left(-1 + \sqrt{5}\right)}{4}\)

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

function draw(r1, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    b = r1
    (a, r2, r3) = (√5 + 1, (√5 + 1)/4, (√5 - 1)/4)
    plot()
    ellipse(0, 0, a, b, color=:green)
    circle(0, 0, r1)
    circle2(r1 + r2, 0, r2, :blue)
    circle2(a - r3, 0, r3, :magenta)
    if more
        delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /  3  # size[2] * fontsize * 2
        vline!([0], color=:gray80, lw=0.5)
        hline!([0], color=:gray80, lw=0.5)
        point(0, 0, "甲円:r1,(0,0)", :red, :center, delta=-2delta)
        point(r1 + r2, 0, "乙円:r2\n(r1+r2,0)", :blue, :center, :bottom, delta=2delta)
        point(a - r3, 0, "丙円:r3,(a-r3,0)", :magenta, :right, delta=-2delta)
        point(a, 0, "a", :green, :left, :bottom, delta=2delta)
        point(0, b, "b=r1", :green, :center, :bottom, delta=2delta)
    end
end;

draw(1, true)


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