算額(その2058)
百二十二 群馬県藤岡市東平井 諏訪神社 明治7年(1874)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,斜線2本
斜線 2 本で挟まれた上円,中円,下円とそれらが交差する領域に 2 個の等円を容れる。上円,中円,下円の直径がそれぞれ 3 寸,4 寸,5.4 寸のとき,等円の直径はいかほどか。
斜線(を延長したとき)の交点座標を (a, 0)
等円の半径と中心座標を r4, (x12, 0), (x23, 0); x12 = 2r3 + 2r2 - 3r4; x23 = 2r3 - r4
上円の半径と中心座標を r1, (x1, 0); x1 = 2r3 + 2r2 + r1 - 4r4
中円の半径と中心座標を r2, (x2, 0); x2 = 2r3 + r2 - 2r4
下円の半径と中心座標を r3, (x3, 0); x3 = r3
とおき,以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms a::positive, r1::positive, r2::positive,
r3::positive, r4::positive,
x1::positive, x2::positive, x3::positive;
x1 = 2r3 + 2r2 + r1 - 4r4
x2 = 2r3 + r2 - 2r4
x3 = r3
eq1 = r1/(a - x1) - r2/(a - x2)
eq2 = r1/(a - x1) - r3/(a - x3)
res = solve([eq1, eq2], (r4, a));
等円の半径は (r1*r3 - r2^2)/(r1 - 2*r2 + r3) である。
上円,中円,下円の直径がそれぞれ 3 寸,4 寸,5.4 寸のとき,等円の直径は 0.5 寸である。
res[r4] |> println
res[r4](r1 => 3//2, r2 => 4//2, r3 => 54//20) |> println
(r1*r3 - r2^2)/(r1 - 2*r2 + r3)
1/4
斜線の交点座標は (18.9, 0) である。
res[a] |> println
res[a](r1 => 3//2, r2 => 4//2, r3 => 54//20) |> println
2*r3*(-r2 + r3)/(r1 - 2*r2 + r3)
189/10
その他のパラメータは以下のとおりである。
r1 = 1.5; r2 = 2; r3 = 2.7; , r4 = 0.25; a = 18.9
x1 = 9.9; x2 = 6.9; x3 = 2.7; x12 = 8.65; x23 = 5.15
function draw(r1, r2, r3, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r4, a) = (1/4, 189/10)
x1 = 2r3 + 2r2 + r1 - 4r4
x2 = 2r3 + r2 - 2r4
x3 = r3
x12 = 2r3 + 2r2 - 3r4
x23 = 2r3 - r4
θ = asind(r1/(a - x1))
slope = tand(θ)
@printf("等円の直径は %g である。\n", 2r4)
@printf("r1 = %g; r2 = %g; r3 = %g; , r4 = %g; a = %g\n", r1, r2, r3, r4, a)
@printf("x1 = %g; x2 = %g; x3 = %g; x12 = %g; x23 = %g\n", x1, x2, x3, x12, x23)
plot()
circle(x1, 0, r1)
circle(x2, 0, r2, :blue)
circle(x3, 0, r3, :green)
circle(x12, 0, r4, :orange)
circle(x23, 0, r4, :orange)
abline(a, 0, slope, 0, 1.05a)
abline(a, 0, -slope, 0, 1.05a)
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(x1, 0, " 上円:r1,(x1,0)", :red, :left, :vcenter)
point(x2, 0, "中円:r2\n(x2,0)", :blue, :center, delta=-3delta)
point(x3, 0, "下円:r3\n(x3,0)", :green, :center, delta=-3delta)
point(a, 0, "a", :black, :center, delta=-3delta)
end
end;
draw(3/2, 4/2, 5.4/2, true)
※コメント投稿者のブログIDはブログ作成者のみに通知されます