算額(その1075)
九十九 江刺市 雨宝堂 現中善観音堂 文政10年(1827)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
キーワード:円9個,正方形,斜線
正方形の中に 8 本の斜線と大円,中円,小円を容れる。中円と小円の直径の和が 1 寸のとき,大円の直径はいかほどか。
正方形の一辺の長さを 2a
大円の半径と中心座標を r1, (0,0)
中円の半径と中心座標を r2, (cx2, cy2)
小円の半径と中心座標を r3, (cx3, cy3)
とおき,逐次的に解を求める。
1. 大円の半径
最も単純には,大円の中心から斜線までの距離が r1 になるように r1 を求めればよい。
半径は r1 = √5a/5 である。
include("julia-source.txt")
using SymPy
@syms a::positive, r1::positive
eq0 = dist2(0, 0, 2a, a, a, a, r1)
solve(eq0, r1)[1] |> println
sqrt(5)*a/5
図形を丁寧に描き,計算に必要ないくつかの交点の座標を求めておくと(図参照),大円の直径は線分 AC に等しく,その長さは sqrt((8a/5 - 4a/5)^2 + (4a/5 - 2a/5)^2) = 2√5a/5 である。
sqrt((8a/5 - 4a/5)^2 + (4a/5 - 2a/5)^2) |> println
2*sqrt(5)*a/5
2. 中円の半径と中心座標
大円と中円は,⊿OAB,⊿OCD に内包されている。⊿OAB と ⊿OCD は相似で,相似比は OA:OC = 2:1 なので,中円の半径は大円の半径の 1/2 で,r2 = r1/2 = √5a/10 である。
@syms r2::positive, cx2::positive, cy2::positive
r1 = √Sym(5)a/5
r2 = r1/2
sqrt(5)*a/10
中円の中心座標 (cx2, cy2) は,2 本の斜線までの距離が r2 に等しいという連立方程式を解けばよい。
eq1 = dist2(0, 0, a, 2a, cx2, cy2, r2)
eq2 = dist2(0, 0, 2a, a, cx2, cy2, r2)
res1 = solve([eq1, eq2], (cx2, cy2))[1]
(a/2, a/2)
中円の中心座標は (a/2, a/2) である。
3. 小円の半径と中心座標
中円と小円は,⊿OEF, ⊿HEG に内包されている。⊿OEF, ⊿HEG は相似で,相似比は OF:HG = a:2a/3 = 3:2 なので,小円の半径は中円の半径の 2/3 で,r3 = √5a/15 である。
小円の中心座標 (cx3, cy3) は,中心から線分 GH,GE までの距離が r3 に等しいという連立方程式を解けばよい。
@syms r3::positive, cx3::positive, cy3::positive
r3 = √Sym(5)a/15
eq3 = dist2(0, a, 2a, 2a, cx3, cy3, r3)
eq4 = dist2(0, a, 2a, 0, cx3, cy3, r3)
res2 = solve([eq3, eq4], (cx3, cy3))[1]
(a/3, a)
小円の中心座標は (a/3, a) である。
4. 小円の半径が与えられたときの大円の半径
これまでをまとめると,小円,中円,大円の半径は √5a/15, √5a/10, √5*a/5 である。
r3, r2, r1
(sqrt(5)*a/15, sqrt(5)*a/10, sqrt(5)*a/5)
「問」は「中円と小円の直径の和が 1 寸のとき,大円の直径はいかほどか」なので,以下の方程式を解き a を求め,r1 の式に代入すれば大円の半径が求まる。
eq = r2 + r3 - 1//2
solve(eq, a)[1] |> println
3*sqrt(5)/5
r1(a => 3√Sym(5)/5) |> println
3/5
大円の半径は 3/5 寸,すなわち,直径は 6/5 = 1.2 寸である。
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
a = 1
r1 = sqrt(5)*a/5 # = sqrt((x1 - 2a + y1)^2 + (y1 - x1)^2)/2
r2 = r1/2
r3 = 2r2/3
plot([0, 2a, 2a, 0, 0], [0, 0, 2a, 2a, 0], color=:green, lw=0.5)
plot!([0, 2a, 0, a, 2a, 0, 2a, a, 0], [0, a, 2a, 0, 2a, a, 0, 2a, 0], color=:blue, lw=0.5)
circle(a, a, r1, :red, lw=1)
circle(a/2, a/2, r2, :orange)
circle(a/3, a, r3, :green)
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, 0, "O:(0,0)", :black, :left, delta=-delta/2)
point(8a/5, 4a/5, " A:(8a/5,4a/5)", :black, :left, delta=-delta/2)
point(a, 2a, " B:(a,2a)", :black, :center, :bottom, delta=delta/2)
point(4a/5, 2a/5, " C:(4a/5,2a/5)", :black, :left, delta=-delta/2)
point(a/2, a, " D:(a/2,a)", :black, :left, :vcenter)
point(2a/5, 4a/5, "E:(2a/5,4a/5) ", :black, :right, :vcenter)
point(a, a/2, " F:(a,a/2)", :black, :left, :vcenter)
point(0, a, "G:(0,a) ", :black, :right, :vcenter)
point(2a/3, 4a/3, "H:(2a/3,4a/3) ", :black, :right, :vcenter)
plot!([a/2, 0, 8a/5, a, a/2, 4a/5], [a, 0, 4a/5, 2a, a, 2a/5], color=:blue, lw=1.5)
plot!([0, 2a/3,0, a, 0], [0, 4a/3, a, a/2, 0], color=:magenta, lw=1)
plot!(xlims=(-12delta, 2a + 3delta), ylims=(-5delta, 2a + 3delta))
end
end;