61 岩手県花泉町金沢字大柳 金沢八幡宮 明治29年(1896)
安富有恒:和算—岩手の現存算額のすべて,青磁社,東京都,1987.
http://www.wasan.jp/iwatenosangaku_yasutomi.pdf
キーワード:円11個(円12個),外円,正五角形,五芒星
#Julia #SymPy #算額 #和算 #数学
「算額(その1088)」にプラスαした図形である。
正五角形の対角線を引き,区画された領域の中央に円 1 個,小円 5 個,大円 5 個を容れる。小円の直径与えられたとき,大円の直径を求めよ。

正五角形が内接する円の半径と中心座標を \(R, (0, 0)\)
中央の円の半径と中心座標を \(r_1, (0, 0)\)
小円の半径と中心座標を \(r_2, (0, r_1 + r_2)\)
大円の半径と中心座標を \(r_3, (0, r_3 - R)\)
とし,以下のように逐次決定してゆく。
計算において,必要な角度がいくつか出てくる。その三角関数の値は無理数ではあるが,きれいな形で表現される。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms R
s18 = Sym(18)
s36 = Sym(36);
1. 中央の円の半径
中央の円の半径 OB は五芒星の頂点(正五角形の頂点) A の \(y\) 座標値に等しい。
∠AOR は 18° である。
中央の円の半径は \(R(\sqrt{5} - 1)/4\) である。
r1 = y = R*sind(s18)
r1 |> println
R*(-1/4 + sqrt(5)/4)
2. 小円の半径
小円の半径 BD は BC * tan(∠BCD) である。
BC は OB * tan(∠BOC) である。
ここで,∠BCD = ∠BOC = 36°である。
まとめると,小円の半径は \(R(7\sqrt{5} - 15)/4\) である。
OB = R*sind(s18)
r2 = OB*tand(s36)*tand(s36)
r2 |> simplify |> println
R*(-15 + 7*sqrt(5))/4
3. 大円の半径
大円の半径 GF は EF * tan(∠FEG) である。
EF は OE * sin(∠EOF) である。
ここで,∠FEG = 18°,∠EOF = 36°である。
まとめると,大円の半径は \(R\sqrt{14 - 6\sqrt{5}}/4\) である。
なお,中央の円を含む三角形と大円を含む三角形の相似比から求めるのやり方もある。
EF = R*sind(s36)
r3 = EF*tand(s18)
r3 |> simplify |> println
R*sqrt(14 - 6*sqrt(5))/4
@syms d
apart(r3/r2, d) |> simplify |> println
1/2 + 3*sqrt(5)/10
1/2 + 3*sqrt(5)/10
1.170820393249937
4. 小円の直径が既知のときの大円の直径
大円の直径は小円の直径の \(r_1/r_2 = 1/2 + 3\sqrt{5}/10 = 2\sqrt{5}/5 + 1 = 1.170820393249937\) 倍である。
小円の直径が 1 寸のとき,大円の直径は 1.170820393249937 寸である。
描画関数プログラムのソースを見る
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
R = 1
r1 = R*(√5 - 1)/4
r2 = R*(7√5 - 15)/4
r3 = R*sqrt(14 - 6√5)/4
θ = 90:-72:-342
x = R .* cosd.(θ)
y = R .* sind.(θ)
plot(x[1:6], y[1:6], seriestype=:shape, fillcolor=:aliceblue, lw=0.5)
circle(0, 0, R)
for i in 1:5
segment(x[i], y[i], x[i + 1], y[i + 1], :black)
segment(x[i], y[i], x[i + 2], y[i + 2], :black)
end
circlef(0, 0, r1, :red)
circle(0, 0, r1, :black)
rotatef(0, r1 + r2, r2, :yellow, angle=72)
rotate(0, r1 + r2, r2, :black, angle=72)
rotatef(0, r3 - R*cosd(36), r3, :orange, angle=72)
rotate(0, r3 - R*cosd(36), r3, :black, angle=72)
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, 0, " R", :black, :left, :bottom, delta=delta/2)
point(0, r1, "B", :black, :center, delta=-delta/2)
point(0, r1 + r2, " D", :black, :left, :vcenter)
point(0, r1 + r2, "小円", :black, :center, delta=4delta)
point(0, r3 - R*cosd(36), " G", :black, :left, :vcenter)
point(0, r3 - R*cosd(36), "大円", :black, :center, delta=4delta)
point(0, 0, "O", :black, :center, delta=-delta/2)
point(0, 0, "円", :black, :center, delta=-3delta)
point(r1*tand(36), r1, "C", :black, :left, :bottom, delta=delta/2)
point(R*cosd(18), r1, " A", :black, :left, :vcenter)
point(R*sind(36), -R*cosd(36), "E", :black, :left, delta=-delta/2)
point(0, -R*cosd(36), "F", :black, :center, delta=-delta/2)
end
end;
以下のアイコンをクリックして応援してください