算額(その462)
埼玉県秩父市大宮 秩父神社 明治20年
山口正義(2015): やまぶき, 第27号
https://yamabukiwasan.sakura.ne.jp/ymbk27.pdf
正三角形内に半円 3 個,大円 1 個,小円 3 個が入っている。小円の直径が 1 寸のとき,大円の直径はいかほどか。
正三角形の一辺の長さを 2a とする。
半円の半径と中心座標を r0, (a/2, √3a/2)
大円の半径と中心座標を r1, (0, a/√3)
小円の半径と中心座標を r2, (0, r3), (a/2 - √3r2/2, √3a/2 - r2/2)
として以下の連立方程式を解く。
なお,eq1 を解いて r0 を求めれば,順次 eq2, eq3 を解いてもよい。
include("julia-source.txt")
using SymPy
@syms r0::positive, r1::positive, r2::positive, a::positive
eq1 = distance(0, sqrt(Sym(3))a, -a, 0, a/2, sqrt(Sym(3))a/2) - r0^2
eq2 = (a/2)^2 + (sqrt(Sym(3))a/2 - a/sqrt(Sym(3)))^2 - (r0 - r1)^2
eq3 = (a/2)^2 + (sqrt(Sym(3))a/2 - r2)^2 - (r0 + r2)^2;
res = solve([eq1, eq2, eq3], (r0, r1, r2))
2-element Vector{Tuple{Sym, Sym, Sym}}:
(sqrt(3)*a/2, sqrt(3)*a/6, sqrt(3)*a/24)
(sqrt(3)*a/2, 5*sqrt(3)*a/6, sqrt(3)*a/24)
解は二通り得られるが,最初のものが適解である。
また,大円の半径は小円半径の4倍なので,小円の直径が 1 寸のとき,大円の直径は 4 寸である。
res[1][2]/res[1][3] |> println
4
ちなみに,半円の半径は小円の半径の 12 倍である。
res[1][1]/res[1][3] |> println
12
また,a = 4√3 のとき 小円の直径が 1 寸になる。
using Plots
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
a = 4√3
(r0, r1, r2) = (sqrt(3)*a/2, sqrt(3)*a/6, sqrt(3)*a/24)
@printf("r0 = %g; r1 = %g; r2 = %g\n", r0, r1, r2)
@printf("r1/r2 = %g\n", r1/r2)
plot([a, 0, -a, a], [0, √3a, 0, 0], color=:black, lw=0.5)
circle(0, 0, r0, beginangle=0, endangle=180)
circle(a/2, √3a/2, r0, beginangle=120, endangle=300)
circle(-a/2, √3a/2, r0, beginangle=240, endangle=420)
circle(0, a/√3, r1, :blue)
circle(0, r2, r2, :green)
circle(0, r2, r2, :green)
circle(a/2 - √3r2/2, √3a/2 - r2/2, r2, :green)
circle(-a/2 + √3r2/2, √3a/2 - r2/2, r2, :green)
if more
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) / 3 # size[2] * fontsize * 2
point(a/2, √3a/2, " 半円:r0,(a/2,√3a/2)", :red, :left, :vcenter)
point(0, r2, " 小円:r2,(0,r2)", :green, :left, :bottom, delta=2delta)
point(a/2 - r2√3/2, √3a/2 - r2/2, " 小円:r2\n (a/2-r2√3/2,√3a/2-r2/2)", :green, :left, :top, delta=-delta)
point(0, a/√3, " 大円:r1\n (0,a/√3)", :black, :left, :bottom, delta=delta)
point(a, 0, " a", :black, :left, :bottom, delta=delta)
point(0, √3a, " √3a", :black, :left, :vcenter)
hline!([0], color=:gray, lw=0.5)
vline!([0], color=:gray, lw=0.5)
else
plot!(showaxis=false)
end
end;
※コメント投稿者のブログIDはブログ作成者のみに通知されます