算額(その498)
埼玉県北本市本宿 天神社 明治24年(1891)
北本デジタルアーカイブズ 北本市史 通史編 近世
https://kdas.jp/detail_display.php?t_cd=1&acc_cd=1&aclc_cd=40&chap=3&hp_page=47&bc_cd=1
この算額は,算額(その269)
https://blog.goo.ne.jp/r-de-r/e/1fd7e974eb24c0c5118e308a9e790003
のものと類似している。
中村信弥「改訂増補 長野県の算額」
http://www.wasan.jp/zoho/zoho.html
県内の算額(260)
長野県下高井郡木島平村 天満宮 推定明治21年(1888)
両者が異なる点は,
天満宮(その269)のものは,小円が中円 2 個と大円 1 個に外接するが
天神社のものは,小円が中円 3 個と外接する点である。
天神社のものは天満宮(その269)のものより3年後のものなので,問の写し間違いがあったのかもしれない。
大円 2 個,中円 5 個,小円 4 個が配置されている。小円は 3 個の中円に外接している。
大円の直径が 2 寸 8 分のとき,小円の直径を求めよ。
大円,中円の半径を r1, r2 とおく(r2 = r1/2)。小円の直径を r3, 中心座標を (x3, x3) とおき,以下の方程式を解く。条件式が 2 本で,r3, x3 の二変数について解を求める。その解の式には r1 が変数として含まれる。
なお,x3 = r1/2 は図が正しければ自明だが,一応,未知数として解く。
include("julia-source.txt");
using SymPy
@syms r1::positive, r2::positive, r3::positive, x3::positive;
r2 = r1//2
eq1 = 2x3^2 - (r2 + r3)^2
eq2 = (2r2 - x3)^2 + x3^2 - (r2 + r3)^2;
solve([eq1, eq2], (r3, x3))
1-element Vector{Tuple{Sym, Sym}}:
(r1*(-1/2 + sqrt(2)/2), r1/2)
ここで面白いことに気づいた。
天満宮の算額(その269)では,SymPy で計算した小円の半径が 「3*r1/14」 になったのに,術では「r1*(sqrt(1/2) - 1/2)」としており不一致であった。
そして,天神社の算額(その498)の術は SymPy で計算した通りの「r1*(sqrt(1/2) - 1/2)」である。
天満宮の算額は,答えも術も正しいが図が間違えていたということで,本来同じ問であった(天神社のものは問,図,答,術すべてが正しい)ということである。
直径が 2.8 寸ならば,小円の直径は (sqrt(1/2) - 1/2)*2.8 = 0.5798989873223331 である。
ここで,今度は天神社の答えが間違っている。(sqrt(1/2) - 1/2)*2.8 を計算した結果が 0.574 に切り捨てられている。
(sqrt(1/2) - 1/2)*2.8
0.5798989873223331
r3 = 0.289949; x3 = 0.700000
小円の直径 = 2r3 = 0.579899
using Plots
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r1 = 28//20 # 半径が 1.4 寸のとき
r2 = r1//2
(r3, x3) = (r1*(-1/2 + sqrt(2)/2), r1/2)
@printf("r3 = %.6f; x3 = %.6f\n", r3, x3)
@printf("小円の直径 = 2r3 = %.6f\n", 2r3)
plot()
circle(0, r2, 2r2)
circle(0, -r2, 2r2)
circle(0, 0, r2, :blue)
circle42(0, 2r2, r2, :blue)
circle4(x3, x3, r3, :green)
if more
point(r2, 0, " r2")
point(0, r2, " r2")
point(2r2, 0, " 2r2")
point(0, 2r2, " 中円:r2\n 2r2", :blue)
point(3r2, 0, "3r2 ", :green, :right)
point(x3, x3, " 小円:r3\n (x3,x3)", :green, :center, :bottom)
point(1.2r2, 2r2, "大円", :red, mark=false)
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;