算額(その293)
中村信弥「算額への招待 追補1」
http://www.wasan.jp/syotai/syotai.html
長野県飯山市滝澤家所蔵
http://www.wasan.jp/nagano/takizawa.html
長方形内に 3 個の円が内接している。円の直径が 5 寸のとき,長方形の短辺の長さを求めよ。
問では3個の円について述べており,右上,左上の2個の円についての記述はない。意図は良くわからないがここではこの円についても半径を求めておく。
長方形の短辺の長さを y とする。
半径,中心座標を以下のように決める。
円 r1, (r1, r1), (0, y - r1)
小円 r2, (r2, y - r2)
以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms r1::positive, r2::positive, y::positive;
eq1 = r1^2 + (y - 2r1)^2 - 4r1^2
eq2 = (2r1 - r2)^2 + (r1 - r2)^2 - (r1 + r2)^2
res = solve(eq1, y)
res |> println
Sym[r1*(2 - sqrt(3)), r1*(sqrt(3) + 2)]
解が 2 つ求まるが,r1*(sqrt(3) + 2) が適解である。
すなわち短辺の長さは 5/2 * (sqrt(3) + 2) = 9.330127018922193 寸である。
5/2 * (sqrt(3) + 2)
9.330127018922193
res2 = solve([eq1, eq2], (y, r2))
4-element Vector{Tuple{Sym, Sym}}:
(r1*(2 - sqrt(3)), 2*r1*(2 - sqrt(3)))
(r1*(2 - sqrt(3)), 2*r1*(sqrt(3) + 2))
(r1*(sqrt(3) + 2), 2*r1*(2 - sqrt(3)))
(r1*(sqrt(3) + 2), 2*r1*(sqrt(3) + 2))
三番目の組が適解である。
y = 9.33013; r2 = 1.33975
小円の半径は 2*r1*(2 - sqrt(3)) = 1.33975 である。
using Plots
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r1 = 5 / 2
(y, r2) = (r1*(sqrt(3) + 2), 2*r1*(2 - sqrt(3)))
@printf("y = %.5f; r2 = %.5f\n", y, r2)
plot([0, 4r1, 4r1, 0, 0], [0, 0, y, y, 0], color=:black, lw=0.5)
circle(r1, r1, r1)
circle(3r1, r1, r1)
circle(2r1, y - r1, r1)
circle(r2, y - r2, r2, :blue)
circle(4r1 - r2, y - r2, r2, :blue)
if more
point(r1, r1, "(r1,r1)", :red)
point(3r1, r1, "(3r1,r1)", :red)
point(2r1, y - r1, "(0,y-r1)", :red)
point(r2, y - r2, "(r2,y-r2)", :blue, :center)
point(4r1-r2, y - r2, "(4r1-r2,y-r2)", :blue, :center)
point(0, y, " y")
point(4r1, 0, "4r1 ", :green, :right, :bottom)
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;