算額(その328)
埼玉県吉見町 安楽寺 文政5年(1822)
http://www.wasan.jp/saitama/anrakuji.html
菱形の中に直径の同じ 4 個の円を入れる。菱長(長い方の対角線)の二乗と菱横(短い方の対角線)の二乗の和が 400歩,外積(菱形の面積から 4 個の円の面積の和を除いた面積; 図で灰色の部分の面積)が 45.44 歩である。
菱長,菱横,円の直径,菱面(菱形の一辺の長さ)を求めよ。
菱長,菱横,円の直径,菱面 を 2a, 2b, 2r とおく。
方程式を解く前に,ここで用いられている円積率(π/4 の近似値,つまり円の面積 ≒ 円積率 * 直径の二乗)は当時広く採用されていた 0.75(すなわち π ≒ 3 とする)ではないので,採用した円積率がいくつなのか調べていく途中で,「吉田光由『塵劫記』(1627)が3.16を使っている」という記述を見つけた(https://www.ndl.go.jp/math/s1/c4.html)。つまり,3.16/4 = 0.79 である。
これによれば「外積が 45.44 歩」という数値の意味がわかる。
a > b なので 2 組目のものが適解である。
すなわち,菱長 = 16寸,菱横 = 12寸, 円径の直径 = 4寸,菱面 = 10寸 である。
include("julia-source.txt");
using SymPy
@syms a::positive, b::positive, r::positive, 菱面::positive;
円積率 = 0.79 # = 3.16/4
eq1 = (2a)^2 + (2b)^2 - 400
eq2 = a + b - sqrt(a^2 + b^2) - 2r
eq3 = 2a*b - 4(円積率*(2r)^2) - 45.44
eq4 = a^2 + b^2 - 菱面^2
res = solve([eq1, eq2, eq3, eq4], (a, b, r, 菱面))
2-element Vector{NTuple{4, Sym}}:
(6.00000000000000, 8.00000000000000, 2.00000000000000, 10.0000000000000)
(8.00000000000000, 6.00000000000000, 2.00000000000000, 10.0000000000000)
using Plots
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(a, b, r, 菱面) = (8, 6, 2, 10)
plot([a, 0, -a, 0, a], [0, b, 0, -b, 0], linecolor=:black, linewidth=0.5, seriestype=:shape, fillcolor=:gray80)
circlef(r, r, r, :red2)
circlef(-r, r, r, :red2)
circlef(r, -r, r, :red2)
circlef(-r, -r, r, :red2)
circle4(r, r, r, :black)
if more
point(a, 0, "a", :green, :left, :bottom)
point(0, b, " b", :green, :left, :center)
point(r, r, " (r,r)", :black, :left, :center)
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;