算額(その1639)
三 岩手県花巻市太田 音羽山清水観世音堂 明治25年(1892)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
今有如図 03076
https://w.atwiki.jp/sangaku/pages/137.html
楕円の中に,合同な正三角形を 3 個容れる。楕円の短径が与えられたときに,長径を求める術を述べよ。
原文は「𫝆󠄃有如圖画側圓容等三角󠄄三個側圓短徑若干問得側圓長徑術如何」である。
山村はなぜか知らないが,外円の中に合同な正三角形を 3 個と,楕円を 2 個容れている。
「今有如図」は問の通りの図を描いている。
問の解釈は今有如図のほうが正しい。計算すると術の通りの答えになる。
楕円の長半径,短半径,中心座標を a, b, (0,y0)
正三角形の一辺の長さを x, 楕円上の正三角形の頂点座標を (x/2, √3x/2), (x, 0), (0 -√3x/2)
とおき,以下の連立方程式を解く。
注:楕円の長径は x 軸上にあるのではない。また,結果的に,楕円は長径≒短径で,ほぼ円に近い。
include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
using SymPy
@syms x::positive, a::positive, b::positive, y0::positive
eq1 = (x/2)^2/a^2 + (√Sym(3)x/2 - y0)^2/b^2 - 1
eq2 = x^2/a^2 + y0^2/b^2 - 1
eq3 = y0 + √Sym(3)x/2 - b
res = solve([eq1, eq2, eq3], (a, x, y0))[1]
(sqrt(42)*b/6, 28*sqrt(3)*b/45, b/15)
楕円の長径 a は 短径 b の √42/6 = sqrt(7/6) 倍である。
術は「置七個以六個除之開平方【之倍】乘短徑得長徑」である。「【之倍】」は誰が入れたものであろうか?
今有如図は「欠字については「現存 岩手の算額」による」としているので,山村か?
山村は,図の解釈を誤っているため,解に合わすためにいつものように変なことをしたと思われる。解説で,術の「sqrt(7÷6)×短径=長径」を,「訂正 sqrt(7÷6)×2×短径=2.16×短径=長径」 と書いている。試しに山村の描いた位置に楕円を描いてみると長径は短径の3倍位になる。
function draw(b, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(x, a, y0) = (28*sqrt(3)*b/45, sqrt(42)*b/6, b/15)
println("b = $b, x = $x, a = $a, y0 = $y0")
plot([0, x, x/2, 0], [0, 0, √3x/2, 0], color=:blue)
plot!([0, -x, -x/2, 0], [0, 0, √3x/2, 0], color=:blue)
plot!([x/2, 0, -x/2, x/2], [0, -√3x/2, 0, 0], color=:blue)
ellipse(0, y0, a, b, color=:red)
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(a, y0)
point(-a, y0)
point(x/2, √3x/2)
point(x, 0, " x", :blue, :left, :vcenter)
point(0, y0, "y0", :red, :center, :bottom, delta=delta/2)
point(0, y0 - b, "y0-b", :red, :center, delta=-delta/2)
point(0, y0 + b, "y0+b", :red, :center, :bottom, delta=delta/2)
point(a, y0, "(a,y0)", :red, :left, :bottom, delta=delta/2)
dimension_line(-a, y0, a, y0, "長径", :black, :center, :bottom, delta=3delta, length=4delta)
plot!(xlims=(-a - 3delta, a + 8delta), ylims=(y0 - b - 5delta, y0 + b + delta))
end
end;
draw(1, true)