算額(その1565)
八十五 岩手県室根村折壁字大洞 入沢弥栄神社 明治16年(1833)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
今有如図 03067
https://w.atwiki.jp/sangaku/pages/286.html
キーワード:円4個,外円,正方形
#Julia, #SymPy, #算額, #和算
外円の中に,正方形および乾円,離円,兌円を容れる。離円の直径の 195/500 倍が乾円の直径である(注)。乾円と離円の直径の和の半分が正方形の一辺の長さに等しい。兌円の直径はいかほどか。
注:原文は「離円径五百分百九十五倍之為乾円径」で,これは「乾円径 = 離円径×195/500」ではないだろうか。山村は「倍」を「2倍」と解し,「乾円径 = 離円径×195/500×2」としている。本当に「195/500×2」であるなら,算額の作者は「195/250」と書くであろう。この解釈の結果,乾円は離円の 8 割ほどの大きさ(直径)になることになる。
ここで改めて図を見ると,離円は乾円より小さく描かれている。説明文字は逆ではないか。ちなみに「今有如図」では,図に説明文字はない。逆であるとしても,小さいほうが大きい方の8割とは思えない(より小さい)。
更に,山村の図では正方形の上の 2 頂点が外円の円周上にあるように描かれているが,これはありえない。「今有如図」では,左上の頂点のみが円周上にあると描かれている。
以上のように,さまざまに誤った前提であるにも関わらず,山村は解説で,「兌円は 0.241785 ≒ 1/3.85 で,答えの 1/4 は大概数」と澄まして言い切っている。
問題文では円の大きさは外円の直径を 1 としたときの割合(分数)で表している。
外円の半径と中心座標を R, (0, 0)
離円の半径と中心座標を r1, (x1, y1)
乾円の半径と中心座標を r2, (x2, y2); y2 = y1
兌円の半径と中心座標を r3, (x3, y3)
とおき,以下の連立方程式を解く。
include("julia-source.txt")
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
using SymPy
@syms R::positive, r1::positive, x1::positive, y1::negative,
a::positive, r2::positive, x2::negative, y2::negative,
r3::positive, x3::negative, y3::negative
y2 = y1
r2 = r1*195//500
eq1 = x1^2 + y1^2 - (R - r1)^2
eq2 = (x1 - x3)^2 + (y1 - y3)^2 - (r1 + r3)^2
eq3 = x2^2 + y2^2 - (R - r2)^2
eq4 = (x3 - x2)^2 + (y2 - y3)^2 - (r2 + r3)^2
eq5 = x3^2 + y3^2 - (R - r3)^2
eq6 = (r1 + r2) - a
eq7 = (x1 - x2) - a
eq8 = x2^2 + (y2 + a)^2 - R^2;
function H(u)
(r1, x1, y1, a, x2, r3, x3, y3) = u
y2 = y1
r2 = r1*195/500
return [
x1^2 + y1^2 - (R - r1)^2
(x1 - x3)^2 + (y1 - y3)^2 - (r1 + r3)^2
x2^2 + y2^2 - (R - r2)^2
(x3 - x2)^2 + (y2 - y3)^2 - (r2 + r3)^2
x3^2 + y3^2 - (R - r3)^2
(r1 + r2) - a
(x1 - x2) - a
x2^2 + (y2 + a)^2 - R^2
]
end;
R = 1/2
iniv = BigFloat[0.34, 0.12, -0.11, 0.47, -0.35, 0.09, -0.26, -0.32]
res = nls(H, ini=iniv)
([0.3371631334048598, 0.11773867297320516, -0.11248755490734132, 0.46865675543275515, -0.35091808245955003, 0.09133225688728815, -0.2595055228066516, -0.31569955320475807], true)
「答」と同じ解が得られない。
外円の半径を 1/2 とすれば,兌円の半径は 0.09133225688728815 である。
基準とする離円の半径が 0.3371631334048598 なので,兌円は離円の 0.09133225688728815/0.3371631334048598 = 0.27088447056759885 倍である。
なお,乾円の半径は 0.3371631334048598*195/500=0.13149362202789533 である。
function draw(R, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r1, x1, y1, a, x2, r3, x3, y3) = res[1]
y2 = y1
r2 = r1*195/500
@printf("a = %g; r1 = %g; r2 = %g; r1 + r2 = %g\n", a, r1, r2, r1 + r2)
println("r2/r1 = $(r2/r1) = $(rationalize(r2/r1))")
println("r3/r1 = $(r3/r1) = $(rationalize(r3/r1))")
plot()
circle(0, 0, R, :green)
circle(x1, y1, r1)
circle(x2, y2, r2, :blue)
circle(x3, y3, r3, :magenta)
rect(x2, y2, x1, y1 + a, :orange)
if more
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3 # size[2] * fontsize * 2
hline!([0], color=:gray80, lw=0.5)
vline!([0], color=:gray80, lw=0.5)
point(x1, y1, "離円:r1,(x1,y1)", :red, :center, delta=-delta/2)
point(x2, y2, "乾円:r2,(x2,y2)", :blue, :center, delta=-delta/2)
point(x3, y3, "兌円:r3\n(x3,y3)", :magenta, :center, delta=-delta/2)
end
end;
draw(1/2, true)