裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

算額(その1595)

2025年02月06日 | Julia

算額(その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)

 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1594) | トップ | 算額(その1596) »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Julia」カテゴリの最新記事