算額(その107)
埼玉県行田市 河原神社 万延2年(1861)3月
http://www.wasan.jp/saitama/kawara.html
https://yamabukiwasan.sakura.ne.jp/ymbk27.pdf
正方形の一辺の長さが 31 寸,甲円の直径が 18 寸のとき,乙円の直径を求めなさい。
乙円の半径を r1 とし,図のように記号を定め甲円,乙円が外接するという方程式を解く。
using SymPy
@syms r1::positive, r2::positive;
eq = (31//2 - r1)^2 + r1^2 - (r1 + 9)^2
solve(eq)[1] |> println
7/2
乙円の半径は 7/2 である。もとの単位での直径は 7 寸である。
using Plots
function circle(ox, oy, r, color=:red; beginangle=0, endangle=360, fill=false)
θ = beginangle:0.1:endangle
x = r.*cosd.(θ)
y = r.*sind.(θ)
if fill
plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5, seriestype=:shape, fillcolor=color)
else
plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5)
end
end;
function point(x, y, string="", color=:green, position=:left, vertical=:top; mark=true)
mark && scatter!([x], [y], color=color, markerstrokewidth=0)
annotate!(x, y, text(string, 10, position, color, vertical))
end;
function segment(x1, y1, x2, y2, color=:black; linestyle=:solid, linewidth=0.5)
plot!([x1, x2], [y1, y2], color=color, linestyle=linestyle, linewidth=linewidth)
end;
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r1 = 7/2
plot()
circle(0, 0, 9)
circle(31/2 - r1, r1, r1, :blue)
circle(31/2 - r1, -r1, r1, :blue)
circle(-(31/2 - r1), r1, r1, :blue)
circle(-(31/2 - r1), -r1, r1, :blue)
circle(r1, 31/2 - r1, r1, :blue)
circle(-r1, 31/2 - r1, r1, :blue)
circle(r1, -(31/2 - r1), r1, :blue)
circle(-r1, -(31/2 - r1), r1, :blue)
a = 31/2
plot!([a, a, -a, -a, a], [-a, a, a, -a, -a], color=:black, lw=0.5)
if more
point(9, 0, "9 ", :red, :bottom, :right)
point(31/2 - r1, r1, "(31/2-r1,r1)", :blue, :center)
hline!([0], color=:black, lw=0.5)
vline!([0], color=:black, lw=0.5)
end
end;