算額(その178)
愛媛県四国中央市川之江町 八幡神社
川之江高等学校の和算勉強会が奉納した「算額(和算の術)」平成21年
https://www.fureai-cloud.jp/tie/doc/view/10456/
正方形内の一つの対角線上に中心がある三個の等円を図のように描く。等円はそれぞれ外接し,そのうち二つは正方形に内接している。このとき,正方形の一辺の長さが一尺であるとき,等円の直径はいくらか。
和讃家の山口坎山が明和5年(1768)に『道中日記』で 15 通りの解法を著したということのようであるが,最もありふれた解法であろうけれども以下を。
正方形の一辺の長さを 2,等円の半径を r として,図のように記号を定め方程式を解く。
2次方程式なので中学生でも解けるのかな。
using SymPy
@syms r::positive;
eq = 2(1 - r)^2 - 4r^2
res = solve(eq)[1]
println("$res = $(res.evalf())")
-1 + sqrt(2) = 0.414213562373095
元の単位においては,等円の直径は 4寸1分4厘2毛1糸あまりあり
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, linecolor=color, linewidth=0.5, seriestype=:shape, fillcolor=color)
else
plot!(ox .+ x, oy .+ y, color=color, linewidth=0.25)
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 draw(more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r = √2 - 1
println("r = $r")
plot([1, 1, -1, -1, 1], [-1, 1, 1, -1, -1], color=:black, lw=0.5)
circle(0, 0, r, :yellow, fill=true)
circle(1 - r, 1 - r, r, :red, fill=true)
circle(r - 1, r - 1, r, :blue, fill=true)
if more == true
point(1 - r, 1 - r, " (1-r,1-r)", :black)
hline!([0], color=:black, lw=0.5)
vline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;