高松市香南町岡 本手打 かわたうどん
香川県の南半分が雨という,ちょっと寒い天候で,来る人の大方は鍋焼きうどんを注文している
観光客も多く,ちょっと高級感のある店
算額(その1448)
十一 金ケ崎町 個人宅 元文6年(1741)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
キーワード:円1個,直角三角形1個
#Julia, #SymPy, #算額, #和算
ごちゃごちゃしているので,分かりやすく書き下すと,以下の 3 式が述べられている。
円形の田んぼと,直角三角形の田んぼがある。
(1) 面積の和は 36.64
(2) 円径は股より 4 小さい
(3) 鈎は股より 2 小さい。
(4) 弦^2 = (鈎^2 + 股^2)
弦を求めよ。
ただし,円積率として 0.79 ≒ π/4 = 0.7853981633974483 を使え。
注1:直径が5の円の面積は 5^2*0.79 = 19.75 と計算する。正確には π*2.5^2 = 19.634954084936208
以上 (1) 〜 (3) を連立方程式として解く。
using SymPy
@syms 円径, 鈎, 股, 弦
eq1 = (円径^2*0.79 + 鈎*股/2) - 36.64
eq2 = (股 - 円径) - 4
eq3 = (股 - 鈎) - 2
eq4 = 弦^2 - (鈎^2 + 股^2)
res = solve([eq1, eq2, eq3, eq4], (円径, 鈎, 股, 弦))[4] # 4 of 4
(4.00000000000000, 6.00000000000000, 8.00000000000000, 10.0000000000000)
すべて整数の解が得られた。弦の長さは 10 である。
eq2, eq3, eq4 を連立方程式として円径,鈎,股を求めると以下のようになる。
res2 = solve([eq2, eq3, eq4], (円径, 鈎, 股))[2]
(sqrt(2*弦^2 - 4)/2 - 3, sqrt(2*弦^2 - 4)/2 - 1, sqrt(2)*sqrt(弦^2 - 2)/2 + 1)
この結果を eq1 に代入して,中方面のみを含む多項式にする。
eq1 = eq1(円径 => res2[1], 鈎 => res2[2], 股 => res2[3])
eq1 |> println
(sqrt(2)*sqrt(弦^2 - 2)/2 + 1)*(sqrt(2*弦^2 - 4)/2 - 1)/2 + 0.79*(sqrt(2*弦^2 - 4)/2 - 3)^2 - 36.64
簡約化すると以下のように,弦を含む式になるのでこれを解いて中方面を求める。
eq1 = eq1 |> simplify
eq1 |> println
0.645*弦^2 - 2.37*sqrt(2*弦^2 - 4) - 31.32
解は 2 個得られるが,2 番目のものが適解である。
弦は 10 である。
solve(eq1)[2] |> println
10.0000000000000
using Plots
pyplot(size=(300, 150), aspectratio=:none, label="")
plot(eq1, xlims=(-11, 11), xlabel="弦", ylabel="eq1")
# 円径,鈎,股
res2[1](弦 => 10) |> println
res2[2](弦 => 10) |> println
res2[3](弦 => 10) |> println
4
6
8
算額(その1447)
十一 金ケ崎町 個人宅 元文6年(1741)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
キーワード:正方形3個,円1個,直角三角形1個
#Julia, #SymPy, #算額, #和算
ごちゃごちゃしているので,分かりやすく書き下すと,以下の 6 式が述べられている。
(1) 「中正方形の面積から直角三角形の面積を除いたもの」と,「大正方形から円の面積を除いたもの」と,「小正方形の一辺の長さの 4 乗」を加えると 4240.36
(2) 鈎,股,円径を加えると 18
(3) 矢は 3
(4) 股 - 股 = 2
(5) 大方面 - 中方面 = 1
(6) 中方面 - 小方面 = 1
ただし,円積率として 0.79 ≒ π/4 = 0.7853981633974483 を使え。
注1:直径が5の円の面積は 5^2*0.79 = 19.75 と計算する。正確には π*2.5^2 = 19.634954084936208
以上 (1) 〜 (6) を連立方程式として解く。
using SymPy
@syms 大方面, 中方面, 小方面, 円径, 矢, 鈎, 股
矢 = 3
eq1 = (中方面^2 - 鈎*股/2) + (大方面^2 - 円径^2*0.79) + 小方面^4 - 4240.36
eq2 = 鈎 + 股 + 円径 - 18
eq3 = 円径 - (大方面 - 2矢)
eq4 = (股 - 鈎) - 2
eq5 = (大方面 - 中方面) - 1
eq6 = (中方面 - 小方面) - 1
res = solve([eq1, eq2, eq3, eq4, eq5, eq6], (大方面, 中方面, 小方面, 円径, 鈎, 股))[2] # 2 of 4
(10.0000000000000, 9.00000000000000, 8.00000000000000, 4.00000000000000, 6.00000000000000, 8.00000000000000)
すべて整数の解が得られた。中正方形の一辺の長さ(中方面)は 9 である。
eq2 〜 eq6 を連立方程式として大方面,小方面,円径,鈎,股を求めると以下のようになる。
res2 = solve([eq2, eq3, eq4, eq5, eq6], (大方面, 小方面, 円径, 鈎, 股))
この結果を eq1 に代入して,中方面のみを含む多項式にする。
eq1 = eq1(円径 => res2[円径], 鈎 => res2[鈎],大方面 => res2[大方面], 股 => res2[股], 小方面 => res2[小方面])
eq1 |> println
中方面^2 - (21/2 - 中方面/2)*(25/2 - 中方面/2)/2 - 0.79*(中方面 - 5)^2 + (中方面 - 1)^4 + (中方面 + 1)^2 - 4240.36
簡約化すると以下のように,中方面の 4 次式になるのでこれを解いて中方面を求める。
eq1 = eq1 |> simplify
eq1 |> println
1.0*中方面^4 - 4.0*中方面^3 + 7.085*中方面^2 + 11.65*中方面 - 4323.735
解は 4 個得られるが,そのうちの 2 個は虚数解,もう 1 つは不適切解であり,残りの 1 つのみが適解である。
中正方形の一辺の長さ(中方面)は 9 である。
solve(eq1)[2] |> println
9.00000000000000
算額(その1446)
十一 金ケ崎町 個人宅 元文6年(1741)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
キーワード:正方形3個,円1個,正三角形1個,直角三角形1個
#Julia, #SymPy, #算額, #和算
ごちゃごちゃしているので,分かりやすく書き下すと,以下の 7 式が述べられている。
(1) 外側の大正方形の面積から,中正方形,小正方形,円,正三角形,直角三角形の面積を除いた面積(外積)と大方面の4乗の和が 65580.185
(2) 大正方形,中正方形,小正方形の一辺の長さ(大方面,中方面,小方面),円の直径(円径),直角三角形の直角を挟む二辺の短い方(鈎),正三角形の一辺の長さ(三角面)の 6 つを加えると 51
(3) 円径 - 中方面 = 1
(4) 中方面 - 小方面 = 1
(5) 小方面 - 鈎 = 1
(6) 鈎 - 三角面 = 1
(7) 股 - 鈎 = 2
である。小方面(およびその他のパラメータ)はいかほどか。ただし,円積率として 0.79 ≒ π/4 = 0.7853981633974483,三角積率として 0.43 ≒ √3/4 = 0.4330127018922193 を使え。
注1:直径が5の円の面積は 5^2*0.79 = 19.75 と計算する。正確には π*2.5^2 = 19.634954084936208
注2:一辺が5の正三角形の面積は 5^2*0.43 = 10.75 と計算する。正確には 5^2*√3/4 = 10.825317547305483
問には 0.43 を使えと書いているが,0.433 を使えば 10.825 になり,精度は格段に上がるのになぜ?以下では 0.433 を使うと期待される答えが高精度で得られる。また,山村も 0.433 を使っている。
以上 (1) 〜 (7) を連立方程式として解く。
using SymPy
@syms 大方面, 中方面, 小方面, 円径, 三角面, 鈎, 股
eq1 = (大方面^2 - 円径^2*0.79 - 中方面^2 - 小方面^2 - 三角面^2*0.433 - 鈎*股/2) + 大方面^4 - 65580.185
eq2 = 大方面 + 中方面 + 小方面 + 円径 + 鈎 + 三角面 - 51
eq3 = (円径 - 中方面) - 1
eq4 = (中方面 - 小方面) - 1
eq5 = (小方面 - 鈎) - 1
eq6 = (鈎 - 三角面) - 1
eq7 = (股 - 鈎) - 2
res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7], (大方面, 中方面, 小方面, 円径, 三角面, 鈎, 股))[1] # of 4
(16.0000000000000, 8.00000000000000, 7.00000000000000, 9.00000000000000, 5.00000000000000, 6.00000000000000, 8.00000000000000)
三角積率として 0.433 を使った。
その結果として,求められた 7 個のパラメータは全て(誤差のない)整数値になった。というか,結果が整数値になるように 65580.185 のように妙な数値を持ち込んだのであろう。
小正方形の一辺の長さ(小方面)は 7 である。
三角積率として 0.43 を採用すると得られる解は,
(15.9999954343728, 8.00000091312543, 7.00000091312543, 9.00000091312543, 5.00000091312543, 6.00000091312543, 8.00000091312543)
になる。
算額出題者は三角積率として 0.433 を使ったのではなかろうか?
山村の解説では,術は小方面を未知数として高次方程式を解いているようだ。
eq2 ~ eq7 を連立方程式として,大方面, 中方面, 円径, 三角面, 鈎, 股 を求めると,それぞれは小方面を含む式で表される。
res = solve([eq2, eq3, eq4, eq5, eq6, eq7], (大方面, 中方面, 円径, 三角面, 鈎, 股));
得られた解を eq1 に代入する。
eq1 = eq1(円径 => res[円径], 股 => res[股], 中方面 => res[中方面], 三角面 => res[三角面], 大方面 => res[大方面], 鈎 => res[鈎])
eq1 |> println
-小方面^2 + (51 - 5*小方面)^4 + (51 - 5*小方面)^2 - 0.433*(小方面 - 2)^2 - (小方面 - 1)*(小方面 + 1)/2 - (小方面 + 1)^2 - 0.79*(小方面 + 2)^2 - 65580.185
簡約化すると,小方面についての 4 次式が得られる。
eq1 = simplify(eq1)
eq1 |> println
625.0*小方面^4 - 25500.0*小方面^3 + 390171.277*小方面^2 - 2653533.428*小方面 + 6702216.423
方程式を解いて得られる解は,連立方程式を解いて得られるものと同じである。
solve(eq1, 小方面)[1] |> println
7.00000000000000
係数を -2 倍して,山村の式と比較してみよう。
-2eq1 |> println
-1250.0*小方面^4 + 51000.0*小方面^3 - 780342.554*小方面^2 + 5307066.856*小方面 - 13404432.846
山村(及び術?)は,x^2 の係数として -780342.555 としているがこれは 780342.554 である。
@syms x
eq0 = -13404432.846 + 5307066.856x - 780342.555x^2 + 51000x^3 - 1250x^4
eq0 |> println
-1250*x^4 + 51000*x^3 - 780342.555*x^2 + 5307066.856*x - 13404432.846
この違いは大きい。解を求めると,x = 7 となるべきところが 7.00000029828747 になる。
solve(eq0, x)[1] |> println
7.00000029828747