算額(その554)
百三十六 群馬県安中市磯部 赤城神社 明治20年(1887)
百四十八 群馬県安中市磯部 赤城神社(前者の復元) 昭和52年(1977)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
群馬の算額 148−5 赤城神社 明治20年
http://takasakiwasan.web.fc2.com/gunnsann/g148-5.html
キーワード:円3個,直角三角形
直角三角形の中に交差する 2 個の等円と,交差した部分に小円が入っている。鈎,股,弦はそれぞれ 4 寸,7.2 寸,9 寸,小円の直径が 1.5 寸のとき,等円の直径はいかほどか。
等円の半径と中心座標を r1, (r1, y1), (x1, r1)
小円の半径と中心座標を r2, (x2, y2)
とおき,以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms r1, x1::positive, y1, r2, x2, y2, 鈎, 股, 弦
x2 = (r1 + x1)/2
y2 = (y1 + r1)/2
eq1 = (x2 - x1)^2 + (y1 - y2)^2 - (r1 - r2)^2
eq2 = 鈎*r1 + 弦*r1 + 股*y1 - 鈎*股
eq3 = 鈎*x1 + 弦*r1 + 股*r1 - 鈎*股
res = solve([eq1, eq2, eq3], (r1, x1, y1));
2 組の解が得られるが,2 番目の解が適解である。
等円の半径は以下の式になる。
res[2][1] |> println
股*鈎*(2*r2*弦*sqrt(股^2 + 鈎^2) - 4*r2*股*鈎 + 2*r2*股*sqrt(股^2 + 鈎^2) + 2*r2*鈎*sqrt(股^2 + 鈎^2) + 弦*股^2 + 弦*鈎^2 + 股^3 + 股^2*鈎 + 股*鈎^2 - 2*股*鈎*sqrt(股^2 + 鈎^2) + 鈎^3)/(弦^2*股^2 + 弦^2*鈎^2 + 2*弦*股^3 + 2*弦*股^2*鈎 + 2*弦*股*鈎^2 + 2*弦*鈎^3 + 股^4 + 2*股^3*鈎 - 2*股^2*鈎^2 + 2*股*鈎^3 + 鈎^4)
SymPy では簡約化できないが,鈎,股,弦,r2 を代入すると確かに解が得られる。
@syms r1, x1::positive, y1, r2, x2, y2, 鈎, 股, 弦
2res[2][1](鈎 => 5.4, 股 => 7.2, 弦 => 9.0, r2 => 1.5/2) |> println
3.00000000000000
術では「(鈎 + 股 - 弦)*(弦 + 2r2)/(鈎 + 股)」とされている。
((鈎 + 股 - 弦)*(弦 + 2r2)/(鈎 + 股))(鈎 => 5.4, 股 => 7.2, 弦 => 9.0, r2 => 1.5/2) |> println
3.00000000000000
その他のパラメータは以下の通り
等円の直径 = 3
r1 = 1.5; x1 = 2.7; y1 = 2.4; r2 = 0.75; x2 = 2.1; y2 = 1.95
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(鈎, 股, 弦) = (5.4, 7.2, 9.0)
r2 = 1.5/2
(r1, x1, y1) = (股*鈎*(2*r2*弦*sqrt(股^2 + 鈎^2) - 4*r2*股*鈎 + 2*r2*股*sqrt(股^2 + 鈎^2) + 2*r2*鈎*sqrt(股^2 + 鈎^2) + 弦*股^2 + 弦*鈎^2 + 股^3 + 股^2*鈎 + 股*鈎^2 - 2*股*鈎*sqrt(股^2 + 鈎^2) + 鈎^3)/(弦^2*股^2 + 弦^2*鈎^2 + 2*弦*股^3 + 2*弦*股^2*鈎 + 2*弦*股*鈎^2 + 2*弦*鈎^3 + 股^4 + 2*股^3*鈎 - 2*股^2*鈎^2 + 2*股*鈎^3 + 鈎^4), 股*(-2*r2*弦^2*sqrt(股^2 + 鈎^2) + 4*r2*弦*股*鈎 - 4*r2*弦*股*sqrt(股^2 + 鈎^2) - 2*r2*弦*鈎*sqrt(股^2 + 鈎^2) + 4*r2*股^2*鈎 - 2*r2*股^2*sqrt(股^2 + 鈎^2) - 2*r2*股*鈎*sqrt(股^2 + 鈎^2) + 弦*股^2*鈎 + 2*弦*股*鈎*sqrt(股^2 + 鈎^2) + 弦*鈎^3 + 股^3*鈎 - 3*股^2*鈎^2 + 2*股^2*鈎*sqrt(股^2 + 鈎^2) + 股*鈎^3 + 鈎^4)/(弦^2*股^2 + 弦^2*鈎^2 + 2*弦*股^3 + 2*弦*股^2*鈎 + 2*弦*股*鈎^2 + 2*弦*鈎^3 + 股^4 + 2*股^3*鈎 - 2*股^2*鈎^2 + 2*股*鈎^3 + 鈎^4), 股*鈎*(4*r2*弦*鈎 + 4*r2*鈎^2 + 弦*股^2 + 弦*鈎^2 + 股^3 + 股^2*鈎 - 3*股*鈎^2 + 鈎^3)/(弦^2*股^2 + 弦^2*鈎^2 + 2*弦*股^3 + 2*弦*股^2*鈎 + 2*弦*股*鈎^2 + 2*弦*鈎^3 + 股^4 + 2*股^3*鈎 - 2*股^2*鈎^2 + 2*股*鈎^3 + 鈎^4) - 2*鈎*(弦 + 鈎)*sqrt(股^2 + 鈎^2)*(r2*弦 + r2*股 + r2*鈎 - 股*鈎)/(弦^2*股^2 + 弦^2*鈎^2 + 2*弦*股^3 + 2*弦*股^2*鈎 + 2*弦*股*鈎^2 + 2*弦*鈎^3 + 股^4 + 2*股^3*鈎 - 2*股^2*鈎^2 + 2*股*鈎^3 + 鈎^4))
x2 = (r1 + x1)/2
y2 = (y1 + r1)/2
@printf("等円の直径 = %g\nr1 = %g; x1 = %g; y1 = %g; r2 = %g; x2 = %g; y2 = %g\n", 2r1, r1, x1, y1, r2, x2, y2)
plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:black, lw=0.5)
circle(r1, y1, r1)
circle(x1, r1, r1)
circle(x2, y2, r2, :blue)
if more
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3 # size[2] * fontsize * 2
hline!([0], color=:black, lw=0.5)
vline!([0], color=:black, lw=0.5)
point(r1, y1, "等円:r1 \n(r1,y1) ", :red, :right, :bottom)
point(x1, r1, " 等円:r1\n (x1,r1) ", :red, :left, :top)
point(x2, y2, " 小円:r2,(x2,r2) ", :blue, :left, :vcenter)
point(股, 0, "股", :black, :left, :bottom, delta=delta)
point(0, 鈎, " 鈎", :black, :left, :bottom, delta=delta/2)
end
end;