算額(その1303)
百十五 群馬県富岡市一宮 貫前神社 明治4年(1871)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円2個,外円,斜線,弦2本
外円の中に等斜を 2 本引き,全円を容れる。外円の直径が 10 寸,斜の長さが 8 寸のとき,全円の直径はいかほどか。
外円の半径と中心座標を R, (0, 0)
全円の半径と中心座標を r, (0, R - r)
斜と外円の交点座標を (0, -R), (x, sqrt(R^2 - x^2)
斜の長さを 「斜」
とおき,以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms R::positive, r::positive, x::positive,
斜::positive;
eq1 = (x^2 + (R - sqrt(R^2 - x^2))^2) - 斜^2
eq2 = dist2(0, -R, x, sqrt(R^2 - x^2), 0, R - r, r)
res = solve([eq1, eq2], (r, x))[1] # 1 of 2
(2*R*斜*(2*R*sqrt(128*R^8 - 128*R^6*斜^2 + 64*R^6*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) + 48*R^4*斜^4 - 32*R^4*斜^2*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) - 6*R^2*斜^6 + 8*R^2*斜^4*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) - 斜^6*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4)) - 斜*(2*R - 斜)*(2*R + 斜)*(2*R^2 + sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4)))/(32*R^6 - 24*R^4*斜^2 + 16*R^4*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) + 6*R^2*斜^4 - 4*R^2*斜^2*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) + 斜^4*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4)), 斜*sqrt(4*R^2 - 斜^2)/(2*R))
全円の半径を表す式は長くなり,SymPy では簡約化できないが,式は正しい。
外円の直径が 10 寸,斜が 8 寸のとき,全円の直径は 15/2 = 7.5 寸である。
2res[1](R => 10//2, 斜 => 8) |> println
15/2
function draw(R, 斜, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r, x) = (2*R*斜*(2*R*sqrt(128*R^8 - 128*R^6*斜^2 + 64*R^6*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) + 48*R^4*斜^4 - 32*R^4*斜^2*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) - 6*R^2*斜^6 + 8*R^2*斜^4*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) - 斜^6*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4)) - 斜*(2*R - 斜)*(2*R + 斜)*(2*R^2 + sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4)))/(32*R^6 - 24*R^4*斜^2 + 16*R^4*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) + 6*R^2*斜^4 - 4*R^2*斜^2*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4) + 斜^4*sqrt(4*R^4 - 4*R^2*斜^2 + 斜^4)), 斜*sqrt(4*R^2 - 斜^2)/(2*R))
@printf("外円の直径が %g,等斜の長さが %g のとき,全円の直径は %g である。\n", 2R, 斜, 2r)
y = sqrt(R^2 - x^2)
plot([-x, 0, x], [y, -R, y], color=:green, lw=0.5)
circle(0, 0, R, :blue)
circle(0, R - r, r)
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, R - r, "全円:r,(0,R-r)", :red, :center, delta=-delta/2)
point(x, sqrt(R^2 - x^2), "(x,sqrt(R^2-x^2)) ", :green, :right, :vcenter)
point(0, R, "R", :blue, :center, :bottom, delta=delta/2)
end
end;
draw(10/2, 8, true)