算額(その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 である。
※コメント投稿者のブログIDはブログ作成者のみに通知されます