算額(その847)
百四 岩手県大船渡市田茂山 根城八幡宮 天保12年(1841)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市. http://www.wasan.jp/yamamura/yamamura.html
正方形内に左上隅に縦に 2 個,右上隅に 1 個の等円を入れ,1 つの頂点から 2 個の等円に接する斜線を引く。等円の直径が 4 寸のとき,斜線の長さを求めよ。
正方形の一辺の長さを a,上辺と斜線の交点座標を (b, a)
等円の半径と中心座標を r, (r, a - r), (a, a - 3r), (a - r, a - r)
斜線の長さを L
とおき,以下の連立方程式を解く。
左の三角形の面積を,3 辺を底辺とする三角形の高さ(等円の半径),右の台形の面積を,4 辺を底辺とする三角形の高さ(等円の半径)で面積を分解する条件式である。
include("julia-source.txt");
using SymPy
@syms a::positive, b::positive, r::positive, L::positive;
L = sqrt(a^2 + b^2)
eq1 = (a + L)r + b*3r - a*b
eq2 = (L + (a - b) + a)r + a*(a - r) - (2a^2 - a*b) |> simplify;
たかだか2元連立方程式だが,r が定数のままだと SymPy の能力では解けないようだ。
r = 4//2
を加えると解ける。
整数方程式だろうと予測して,総当たりで解を求めるのもよかろう。
using SymPy
@syms a::positive, b::positive, r::positive, L::positive;
r = 4//2
L = sqrt(a^2 + b^2)
eq1 = (a + L)r + b*3r - a*b
eq2 = (L + (a - b) + a)r + a*(a - r) - (2a^2 - a*b) |> simplify
res = solve([eq1, eq2], (a, b))[1]
(12, 9)
a = 12, b = 9 とわかったので,斜線の長さは sqrt(a^2 + b^2) = 15 である。
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r = 4//2
(a, b) = (12, 9)
plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:blue, lw=0.5)
circle(r, a - r, r)
circle(r, a - 3r, r)
circle(a - r, a - r, r)
segment(0, 0, b, a, :magenta)
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(r, a - r, "等円:r,(r,a-r)", :red, :center, delta=-delta/2)
point(r, a - 3r, "等円:r,(r,a-3r)", :red, :center, delta=-delta/2)
point(a - r, a - r, "等円:r,(a-r,a-r)", :red, :center, delta=-delta/2)
point(b, a, "(b,a)", :magenta, :center, :bottom, delta=delta/2)
point(a, 0, " a", :blue, :left, :bottom, delta=delta/2)
point(0, a, " a", :blue, :left, :bottom, delta=delta/2)
end
end;