裏 RjpWiki

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

算額(その1419)

2024年11月24日 | Julia

算額(その1419)

本庄市都島 正観寺 享保11年(1126)
https://www.honjo-kanko.jp/sightseeing/shokanji.html

https://tamalotus2.exblog.jp/24658561/

https://yamabukiwasan.sakura.ne.jp/page3.html#shoukan
山口正義:やまぶき 第26号
https://yamabukiwasan.sakura.ne.jp/ymbk26.pdf
山口正義:やまぶき 第40号
https://yamabukiwasan.sakura.ne.jp/ymbk40.pdf

参考古三面
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

キーワード:立方体,体積,等差数列
#Julia, #SymPy, #算額, #和算

「現在(当時)現存第三古」ということであったが,2024年11月現在では「埼玉県内最古,全国で5番目に古い古額」だそうである。「埼玉の算額」にも出ていない。

甲,乙,丙,丁,戊 の立方体がある。甲,乙の立方体の体積の和は 189,丙,丁,戊の立方体の体積の和は 36 である。各立方体の一辺の長さは等差数列である。それぞれの一辺の長さはいかほどか。

すでに「算額(その388)」で解いたが,補足的な内容も含め新たに記事を立てる。

https://blog.goo.ne.jp/r-de-r/e/0ab004aeda635279911a670ca5ef16ef

各立方体の一辺の長さを,甲, 乙, 丙, 丁 とする。
甲,乙の立方体の体積の和を K1,丙,丁,戊の立方体の体積の和を K2,公差 を d とおき,以下の連立方程式を解く。

K1, K2 を変数のまま解くのは SymPy では無理のようである。

K1, K2 に実際の値を与えれば,簡単に解が求まる。

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms 甲::positive, 乙::positive, 丙::positive, 丁::positive, 戊::positive, K1::positive, K2::positive, d::positive
(K1, K2) = (189, 36)
丁 = 戊 + d
丙 = 戊 + 2d
乙 = 戊 + 3d
甲 = 戊 + 4d
eq1 = 甲^3 + 乙^3 - K1 
eq2 = 丙^3 + 丁^3 + 戊^3 - K2;

solve([eq1, eq2], (戊, d))[1]  # 1 of 3

    (1, 1)

戊 = 1,公差 = 1 なので,甲 = 5, 乙 = 4, 丙 = 3, 丁 = 2 である。

---

これではあまりにもあっけないので,SymPy が実際はどのようにして解を求めているのはわからないが,手作業で(SymPy の助けを借りながら)解いてみよう。

まず,eq1, eq2 がどのように表されているのかを見てみる。

eq1 |> expand |> println
eq2 |> expand |> println

    91*d^3 + 75*d^2*戊 + 21*d*戊^2 + 2*戊^3 - 189
    9*d^3 + 15*d^2*戊 + 9*d*戊^2 + 3*戊^3 - 36

d, 戊はともに 3 次式で,これが方程式を解くのを困難にしている一因であろう。そこで,定数倍した式を引き算することで,2 次式に字数を落とす。

eq3 = 9eq1 - 91eq2 として,これを解き d を求める。

eq3 = 9eq1 - 91eq2 |> expand |> factor
eq3 |> println

    -15*(46*d^2*戊 + 42*d*戊^2 + 17*戊^3 - 105)

2 つの解が得られるが,2 つ目のものが適解である。

ans_d = solve(eq3, d)[2]  # 2 of 2
ans_d |> println

    -21*戊/46 + sqrt(4830 - 341*戊^3)/(46*sqrt(戊))

eq1 に d を代入し,eq4 とする。

eq4 = eq1(d => ans_d) |> simplify |> numerator
eq4 |> println

    359359*戊^(9/2) - 14711697*戊^(3/2) - 5551*戊^3*sqrt(4830 - 341*戊^3) + 219765*sqrt(4830 - 341*戊^3)

これを解き 戊 を求める。

res = solve(eq4, 戊)[1]
res |> println

    1

戊は 1 である。
遡って,ans_d の戊に 1 を代入して d = 1 を得る。

ans_d(戊 => 1) |> println

    1

よって,甲,乙,丙,丁,戊は 5, 4, 3, 2, 1 である。


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1418) | トップ | セルフ こだわり麺や 綾南店 »
最新の画像もっと見る

コメントを投稿

Julia」カテゴリの最新記事