算額(その1595)
秋田県仙北郡角館町 熊野神社 安政5年(1858)
深川英俊,トニー・ロスマン:聖なる数学:算額,p. 114,森北出版株式会社,2010年4月22日.
キーワード:俵積み
#Julia, #SymPy, #算額, #和算, #数学
N 個の俵がある。これを 2 通りの方法で積むことができた。
1 つは上が 19 個で下が m 個の台形状になり,次は上が 6 個で下が n 個の台形状である。このとき N, m, n を求めてみよう。
以下の方程式を立てる。
include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
using SymPy
@syms m::positive, n::positive, N::positive,
h1::positive, h2::positive
eq1 = m*(m + 1)/2 - 18(18 + 1)//2 - N
eq2 = n*(n + 1)/2 - 5(5 + 1)//2 - N;
辺々引いて,N を消去する。
eq1 - eq2 |> factor |> println
(m^2 + m - n^2 - n - 312)/2
定数項を右辺にして残りを因数分解する。
m^2 + m - n^2 - n |> factor |> println
(m - n)*(m + n + 1)
深川は
(m - n)*(m + n + 1) = 312
で,312 の素因数分解で
(m - n)*(m + n + 1) = 8×39
(m - n)*(m + n + 1) = 1×312
の 2 通りあげているが,もう一組ある。
(m - n)*(m + n + 1) = 3×104
そもそも,因数の組は (a, b) = (1, 312), (2, 156), (3, 104), (4, 78), (6, 52), (8, 39), (12, 26), (13, 24) のすべての組み合わせについて
eq1 = (m - n) - a
eq2 = (m + n + 1) - b
の連立方程式を解いてみて,a, b が整数のものをピックアップするという作業が必要。あたりを付けて 1 つ,2 つ見つけて安心してはいけない。
これは結構大変である。数え落としのない,ブルートフォースで求めるのが安全確実。
for m = 19:1000, n = 6:m
(m^2 + m - n^2 - n) == 312 &&
println("m = $m, n = $n, (m - n) = $(m - n), (m + n + 1) = $(m + n + 1), $(m^2 + m - n^2 - n), N = $(Int(m*(m + 1)/2 - 18(18 + 1)/2))")
end
m = 23, n = 15, (m - n) = 8, (m + n + 1) = 39, 312, N = 105
m = 53, n = 50, (m - n) = 3, (m + n + 1) = 104, 312, N = 1260
m = 156, n = 155, (m - n) = 1, (m + n + 1) = 312, 312, N = 12075
検算 N
(sum(19:23), sum(6:15)) |> println
(sum(19:53), sum(6:50)) |> println
(sum(19:156), sum(6:155)) |> println
(105, 105)
(1260, 1260)
(12075, 12075)