算額(その58)
静岡県伊豆市 江川邸 享和2年(1802)9月
http://www.wasan.jp/sizuoka/egawa.html
円内に 9 個の円が含まれている。円の径を求めよ。
外円の半径を 1 として,図のように記号を定め,方程式を解く。
eq2, eq3 は自明で,そうすれば eq1 は筆算でも解ける。
using SymPy
@syms r::positive, x::positive, y::positive;
eq1 = x^2 + y^2 - 4r^2;
eq2 = x - y;
eq3 = x - (1 - r)/2;
res = solve([eq1, eq2, eq3], (r, x, y))
1-element Vector{Tuple{Sym, Sym, Sym}}:
(-1/7 + 2*sqrt(2)/7, 4/7 - sqrt(2)/7, 4/7 - sqrt(2)/7)
using Plots
function circle(ox, oy, r, color=:red; beginangle=0, endangle=360)
θ = beginangle:0.1:endangle
x = r.*cosd.(θ)
y = r.*sind.(θ)
plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5)
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 draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
plot()
(r, x, y) = (-1/7 + 2*sqrt(2)/7, 4/7 - sqrt(2)/7, 4/7 - sqrt(2)/7)
println("r = $r; x = $x; y = $y")
circle(0, 0, 1, :black)
circle(0, 0, r, :magenta)
circle(0, 1-r, r, :blue)
circle(0, r-1, r, :blue)
circle(x, y, r)
circle(x, -y, r)
circle(-x, y, r)
circle(-x, -y, r)
circle(1-r, 0, r, :green)
circle(r-1, 0, r, :green)
if more
point(0, 1-r, " 1-r", :blue)
point(1-r, 0, " 1-r", :blue)
point(r, 0, " r", :magenta)
point(x, y, "(x,y)", :magenta)
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5)
end
end;
r = 0.2612038749637415; x = 0.36939806251812923; y = 0.36939806251812923