算額(その1502)
六十三 花泉町金沢 大門神社・大門観世音菩薩堂 明治13年(1880)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
今有如図 03064
https://w.atwiki.jp/sangaku/pages/292.html
キーワード:円8個,外円,弦
#Julia, #SymPy, #算額, #和算
外円の中に水平な弦と甲円,乙円を容れ,隙間に丙円 3 個,丁円 2 個を容れる。甲円,乙円の直径がそれぞれ 12 寸,8 寸のとき,丁円の直径はいかほどか。
「今有如図」の図が正しい。これに基づいて得た解は,答,術に一致する。
外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (0, r1 - R)
乙円の半径と中心座標を r2, (0, R - r2)
丙円の半径と中心座標を r3, (0, R - r3), (x3, R - 3r3)
丁円の半径と中心座標を r4, (x4, R - 2r3 + r4)
とおき,以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms R::positive, r1::positive, r2::positive, r3::positive, x3::positive, r4::positive, x4::positive
R = r1 + r2
eq1 = x3^2 + (3r3 - r2)^2 - (r2 + r3)^2
eq2 = x4^2 + (r2 - 2r3 + r4)^2 - (r2 + r4)^2
eq3 = x3^2 + (2R - 3r3 - r1)^2 - (r1 + r3)^2
eq4 = x4^2 + (R - 2r3 + r4)^2 - (R - r4)^2
res = solve([eq1, eq2, eq3, eq4], (r3, x3, r4, x4))[1]
(r2*(r1 + r2)/(2*r1 + r2), 2*sqrt(2)*sqrt(r1)*r2*sqrt(r1 + r2)/(2*r1 + r2), r1*r2/(2*r1 + r2), 2*sqrt(2)*sqrt(r1)*r2*sqrt(r1 + r2)/(2*r1 + r2))
丁円の半径 r4 は,甲円,乙円の半径を r1, r2 とすると r1*r2/(2*r1 + r2) である。
甲円,乙円の直径がそれぞれ 12 寸,8 寸のとき,丁円の直径は 12*8/(2*12 + 8) = 3 寸である。
術は,「丁円径 = 甲円径/(2甲円径/乙円径 + 1) 」で同じ結果を得る。
function draw(r1, r2, more=false)
pyplot(size=(500, 500), showaxis=true, grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r3, x3, r4, x4) = (r2*(r1 + r2)/(2*r1 + r2), 2*sqrt(2)*sqrt(r1)*r2*sqrt(r1 + r2)/(2*r1 + r2), r1*r2/(2*r1 + r2), 2*sqrt(2)*sqrt(r1)*r2*sqrt(r1 + r2)/(2*r1 + r2))
R = r1 + r2
y = R - 2r3
x = sqrt(R^2 - y^2)
@printf("甲円,乙円の直径がそれぞれ %g, %g のとき,丁円の直径は %g である。", 2r1, 2r2, 2r4)
plot()
circle(0, 0, R, :purple)
segment(-x, y, x, y, :orange)
circle(0, R - r3, r3, :blue)
circle2(x3, R - 3r3, r3, :blue)
circle(0, R - r2, r2, :green)
circle(0, r1 - R, r1, :magenta)
circle2(x4, R - 2r3 + r4, r4)
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, r1 - R, "甲円:r1,(0,r1-R)", :magenta, :center, delta=-delta)
point(0, R - r2, "乙円:r2,(0,R-r2)", :green, :center, delta=-4delta)
point(0, R - r3, "丙円:r3\n(0,R-r3)", :blue, :center, :bottom, delta=delta)
point(x3, R - 3r3, "丙円:r3\n(x3,R-3r3)", :blue, :center, delta=-delta)
point(x4, R - 2r3 + r4, "丁円:r4,(x4,R-2r3+r4)", :red, :center, delta=-delta)
point(0, R, "R", :purple, :center, :bottom, delta=delta)
end
end;
draw(12/2, 8/2, true)
※コメント投稿者のブログIDはブログ作成者のみに通知されます