以下の内容はhttps://sangaku0418.hatenablog.com/entry/2025/02/03/223558より取得しました。


算額(その1586)

岡山県瀬戸内市長船町土師宮森 片山日子神社 明治6年(1873)

深川英俊,トニー・ロスマン:聖なる数学:算額,p. 104,森北出版株式会社,2010年4月22日.
キーワード:直角三角形
#Julia #SymPy #算額 #和算 #数学


AC = 30m,BC = 40m の直角三角形状の畑がある。この畑に,幅が 2 メートルのあぜ道 D, E, F, G, H, I, J を残りの面積が等しくなるように作りたい。BE, DE, HC, JC, AI, FG の長さを求めよ。

\(A\) の座標を \( (A_x, A_y)\) などとし,\(A ~ J\) までの合計 20 変数と,面積を \(S\) とおき,以下の連立方程式を解く。
いくつかの変数値は自明であるが,方程式の本数としては 7 本,変数は \(D_y, E_x, F_y, H_x, I_y, J_y, S\) の 7 個なので,過不足ない。

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

using SymPy
@syms Ax, Bx, Cx, Dx, Ex, Fx, Gx, Hx, Ix, Jx,
      Ay, By, Cy, Dy, Ey, Fy, Gy, Hy, Iy, Jy,
      S
Ax = Ix = Jx = Cx = 40
Ay = 30
Dx = Ex
Fx = Gx = Hx
Bx = By = Ey = Hy = Cy = 0
Gy = Iy
eq1 = Hx - Ex - 2
eq2 = Iy - Jy - 2
eq3 = (30*40//2 - 2(Ix - Gx) - ( (Dy - Ey) + (Fy - Hy)))/3 - S
eq4 = (Dy - Ey)/(Ex - Bx) - 3//4
eq5 = (Ay - Fy)/(Cx - Hx) - 3//4
eq6 = ( (Fy - Gy)+(Ay - Iy))*(Ix - Gx)/2 - S
eq7 = (Ex - Bx)*(Dy - Ey)/2 - S;
res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7],
        (Dy, Ex, Fy, Hx, Iy, Jy, S))[2]  # 2 of 2

    (1/6 + sqrt(9406)/6, 2/9 + 2*sqrt(9406)/9, 5/3 + sqrt(9406)/6, 20/9 + 2*sqrt(9406)/9, sqrt(9406)/24 + 107/12, sqrt(9406)/24 + 83/12, sqrt(9406)/27 + 9407/54)

このあと,該当する線分の長さは座標点から計算される。

\(3 区画の面積 = 177.79572351294942\)
\(BE = E_x - B_x = 21.77434107769659\)
\(DE = D_y - B_y = 16.330755808272443\)
\(HC = C_x - H_x = 16.22565892230341\)
\(JC = J_y - C_y = 10.95768895206811\)
\(AI = A_y - I_y = 17.04231104793189\)
\(FG = F_y - G_y = 4.873066856204332\)

深川は以下のように解いている。
小数点以下4桁までで示しているが本文(P.104)と解答編(P.125)で四捨五入の誤りなどがあるが,正確な値は上に示したものと同じである。

@syms t
eq = 3//8*t^2 - (38 - t)*( (3t + 110)/16)
BE = t = solve(eq, t)[2].evalf()
DE = (3/4)*t
CH = x = 38 - t
JC = y = (3t +110)/16
AI = 28 - y
FG = (3/4)t + (3/4)*2 - (y + 2);

(BE, 21.7743, 21.7743) |> println
(DE, 16.331, 16.331) |> println
(CH, 16.2255, 16.2257) |> println
(JC, 10.9577, 10.9576) |> println
(AI, 17.0423, 17.0424) |> println
(FG, 4.873, 4.873125) |> println

    (21.7743410776966, 21.7743, 21.7743)
    (16.3307558082724, 16.331, 16.331)
    (16.2256589223034, 16.2255, 16.2257)
    (10.9576889520681, 10.9577, 10.9576)
    (17.0423110479319, 17.0423, 17.0424)
    (4.87306685620433, 4.873, 4.873125)

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

function draw(more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (Dy, Ex, Fy, Hx, Iy, Jy, S) = (1/6 + sqrt(9406)/6, 2/9 + 2*sqrt(9406)/9, 5/3 + sqrt(9406)/6, 20/9 + 2*sqrt(9406)/9, sqrt(9406)/24 + 107/12, sqrt(9406)/24 + 83/12, sqrt(9406)/27 + 9407/54)
    Ax = Ix = Jx = Cx = 40
    Ay = 30
    Dx = Ex
    Fx = Gx = Hx
    Bx = By = Ey = Hy = Cy = 0
    Gy = Iy
    println("3 区画の面積 = ", S)
    println("BE = Ex - Bx = ", Ex - Bx)
    println("DE = Dy - By = ", Dy - By)
    println("HC = Cx - Hx = ", Cx - Hx)
    println("JC = Jy - Cy = ", Jy - Cy)
    println("AI = Ay - Iy = ", Ay - Iy)
    println("FG = Fy - Gy = ", Fy - Gy)
    plot([Bx, Cx, Ax, Bx], [By, Cy, Ay, By], seriestype=:shape, color=:goldenrod, fillcolor=:goldenrod, lw=0.5)
    plot!([Bx, Ex, Dx, Bx], [By, Ey, Dy, By], seriestype=:shape, color=:green, fillcolor=:green, lw=0.5)
    plot!([Hx, Cx, Jx, Hx, Hx], [Hy, Cy, Jy, Jy, Hy], seriestype=:shape, color=:green, fillcolor=:green, lw=0.5)
    plot!([Gx, Ix, Ax, Fx, Gx], [Gy, Iy, Ay, Fy, Gy], seriestype=:shape, color=:green, fillcolor=:green, lw=0.5)
    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(Ax, Ay, " A")
        point(Bx, By, "B", :green, :left, delta=-delta)
        point(Cx, Cy, " C", :green, :left, delta=-delta)
        point(Dx, Dy, " D", :green, :right, :bottom, delta=delta)
        point(Ex, Ey, "E", :green, :left, delta=-delta)
        point(Fx, Fy, "F", :green, :right, :bottom, delta=delta)
        point(Gx, Gy, "G", :green, :left, delta=-delta/2)
        point(Hx, Hy, "H", :green, :left, delta=-delta)
        point(Ix, Iy, " I")
        point(Jx, Jy, " J")
        ylims!(-5delta, Ay + 5delta)
    end
end;

draw(true)


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




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

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