埼玉県秩父市大宮 秩父神社 明治20年(1887)
山口正義(2015): やまぶき, 第27号
https://yamabukiwasan.sakura.ne.jp/ymbk27.pdf
キーワード:円4個,半円,正三角形
#Julia #SymPy #算額 #和算 #数学
正三角形内に半円 3 個,大円 1 個,小円 3 個が入っている。小円の直径が 1 寸のとき,大円の直径はいかほどか。

正三角形の一辺の長さを \(2a\)
半円の半径と中心座標を \(r_0,\ (a/2,\ \sqrt{3}a/2)\)
大円の半径と中心座標を \(r_1,\ (0,\ a/\sqrt{3})\)
小円の半径と中心座標を \(r_2,\ (0,\ r_3),\ (a/2 - \sqrt{3}r_2/2,\ \sqrt{3}a/2 - r_2/2)\)
として以下の連立方程式を解く。
なお,eq1 を解いて \(r_0\) を求めれば,順次 eq2, eq3 を解いてもよい。
include("julia-source.txt"); # 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))[1] # 1 of 2
(sqrt(3)*a/2, 5*sqrt(3)*a/6, sqrt(3)*a/24)
大円の半径は小円半径の4倍なので,小円の直径が 1 寸のとき,大円の直径は 4 寸である。
res[2]/res[3] |> println
4
ちなみに,半円の半径は小円の半径の 12 倍である。
res[1]/res[3] |> println
12
また,\(a = 4\sqrt{3}\) のとき 小円の直径が \(1\) 寸になる。
描画関数プログラムのソースを見る
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)
end
end;
以下のアイコンをクリックして応援してください