算額(その380)
東京都八王子市片倉町 片倉・住吉神社 嘉永4年(1851)
http://www.wasan.jp/tokyo/sumiyosi.html
鮮明な写真があります
https://utrblog.exblog.jp/10465003/
解説があります
http://tk2-230-24951.vs.sakura.ne.jp/sangaku/sangaku_kai.pdf
問題
正三角形内に,大円 1 個と小円 2 個がある。正三角形の一辺の長さと,大円の直径が与えられているとき,小円の直径を求めよ。
正三角形の一辺の長さを a
小円の半径と中心座標を r1, (r1, x1)
大円の半径と中心座標を r2, (0, y2)
として,以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms a::positive, r1::positive, x1::positive, r2::positive,y2::positive;
eq1 = (sqrt(Sym(3))a/2 - y2)/2 - r2;
eq2 = r1/(a/2 - x1) - 1/sqrt(Sym(3));
eq3 = x1^2 + (y2 - r1)^2 - (r1 + r2)^2;
res = solve([eq1, eq2, eq3], (r1, x1, y2))
2-element Vector{Tuple{Sym, Sym, Sym}}:
(sqrt(3)*a/3 - 2*sqrt(r2)*sqrt(sqrt(3)*a - 2*r2)/3 - r2/3, -a/2 + 2*sqrt(3)*sqrt(r2)*sqrt(sqrt(3)*a - 2*r2)/3 + sqrt(3)*r2/3, sqrt(3)*a/2 - 2*r2)
(sqrt(3)*a/3 + 2*sqrt(r2)*sqrt(sqrt(3)*a - 2*r2)/3 - r2/3, -a/2 - 2*sqrt(3)*sqrt(r2)*sqrt(sqrt(3)*a - 2*r2)/3 + sqrt(3)*r2/3, sqrt(3)*a/2 - 2*r2)
最初の組のものが適解である。
res[1][1] |> factor |> println
res[1][2] |> factor |> println
res[1][3] |> factor |> println
-(-sqrt(3)*a + 2*sqrt(r2)*sqrt(sqrt(3)*a - 2*r2) + r2)/3
(-3*a + 4*sqrt(3)*sqrt(r2)*sqrt(sqrt(3)*a - 2*r2) + 2*sqrt(3)*r2)/6
-(-sqrt(3)*a + 4*r2)/2
r1 = 0.124024; a = 1; r2 = 0.25; x1 = 0.285184; y2 = 0.366025
小円の直径 = 2r1 = 0.248049
using Plots
function draw(a, r2, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r1, x1, y2) = (
(√3a - 2√r2√(√3a - 2r2) - r2)/3,
(4√3√r2√(√3a - 2r2) + 2√3r2 - 3a)/6,
√3a/2 - 2r2
)
@printf("r1 = %g; a = %g; r2 = %g; x1 = %g; y2 = %g\n", r1, a, r2, x1, y2)
@printf("小円の直径 = 2r1 = %g\n", 2r1)
plot([-a/2, a/2, 0, -a/2], [0, 0, sqrt(3)a/2, 0], color=:black, linewidth=0.25)
circle(0, y2, r2)
circle(x1, r1, r1, :green)
circle(-x1, r1, r1, :green)
if more == true
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3 # size[2] * fontsize * 2
point(0, √3a/2, " √3a/2", :black, :left, :vcenter)
point(a/2, 0, " a/2", :black, :left, :bottom)
point(0, y2, " 大円:r2,(0,y2)", :red, :left, :vcenter)
point(x1, r1, "小円:r1,(x1,r1)", :green, :center, delta=-delta/2)
hline!([0], color=:black, lw=0.5)
vline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;