算額(その1586)
岡山県瀬戸内市長船町土師宮森 片山日子神社 明治6年(1873)
深川英俊,トニー・ロスマン:聖なる数学:算額,森北出版株式会社,2010年4月22日.
キーワード:直角三角形の区分法
#Julia, #SymPy, #算額, #和算, #数学
AC = 30m,BC = 40m の直角三角形状の畑がある。この畑に,幅が 2 メートルのあぜ道 DEFGHIJ を残りの面積が等しくなるように作りたい。BE, DE, HC, JC, AI, FG の長さを求めよ。
A の座標を (Ax, Ay) などとし,A ~ J までの合計 20 変数と,面積を S とおき,以下の連立方程式を解く。
いくつかの変数値は自明であるが,方程式の本数としては 7 本,変数は Dy, Ex, Fy, Hx, Iy, Jy, S の 7 個なので,過不足ない。
include("julia-source.txt")
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
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 = Ex - Bx = 21.77434107769659
DE = Dy - By = 16.330755808272443
HC = Cx - Hx = 16.22565892230341
JC = Jy - Cy = 10.95768895206811
AI = Ay - Iy = 17.04231104793189
FG = Fy - Gy = 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)