算額(その929)
群馬県安中市鷺宮 咲前神社 明治20年(1887)
「算額」第三集 全国調査,香川県算額研究会
外円の中に大きな菱形が入り,その菱形を合同な 4 個の小さな菱形に区分し,それぞれに内接する等円を入れる。大きな菱形の一辺の長さが 10 寸,等円の直径が 4.8 寸のとき,外円の直径を求めよ。
菱形の一辺の長さを c,短い方の対角線の長さを 2b とする(長いほうの対角線の長さは 2R である)。
菱形の一辺の長さを c とすると,a = sqrt(c^2 - b^2) である。
等円の半径を r とする。中心座標は (0, b/2), (0, -b/2), (R/2, 0), (-R/2, 0) である。
と置き,以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms b::positive,
R::positive, r::positive, x::positive
eq1 = dist2(R, 0, 0, b, R/2, 0, r)
eq2 = R^2 + b^2 - c^2
(R, b) = solve([eq1, eq2], (R, b))[2]; # 2 of 4
R |> println
R(c=>10, r=>2.4) |> println
b |> println
b(c=>10, r=>2.4) |> println
sqrt(c - sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2))*sqrt(c + sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2))
8.00000000000000
sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2)
6.00000000000000
菱形の一辺の長さが 10 寸,等円の直径が 4.8 寸のとき,外円の直径は 16 寸である。
R と b は,手作業でもう少し簡約化できる。
R |> println
sqrt(c - sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2))*sqrt(c + sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2))
R = (√2/2)*sqrt(c^2 + c*sqrt(c^2 - 16r^2))
R(c=>10, r=>2.4) |> println
8.00000000000000
b |> println
sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2)
b = (√2/2)*sqrt(c^2 - c*sqrt(c^2 - 16*r^2))
b(c=>10, r=>2.4) |> println
6.00000000000000
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(c, r) = (10, 4.8/2)
t = c*sqrt(c^2 - 16r^2)
R = (√2/2)*sqrt(c^2 + t)
b = (√2/2)*sqrt(c^2 - t)
@printf("菱形の一辺の長さが %g,等円の直径が %g のとき,外円の直径は %g である。\n", c, 2r, 2R)
plot([R, 0, -R, 0, R], [0, b, 0, -b, 0], color=:green, lw=0.5)
circle(0, 0, R, :blue)
circle22(0, b/2, r)
circle2(R/2, 0, r)
segment(-R/2, -b/2, R/2, b/2, :green)
segment(R/2, -b/2, -R/2, b/2, :green)
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(0, b, " b", :green, :left, :bottom, delta=delta/2)
point(R, 0, " R", :green, :left, :bottom, delta=delta/2)
end
end;