算額(その550)
一〇一 大宮市高鼻町 氷川神社 明治31年(1898)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
群馬の算額 143−10 榛名神社 明治33年
http://takasakiwasan.web.fc2.com/gunnsann/g143−10.html
一〇八 加須市騎西町 玉敷神社 大正4年(1915)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
図のように外円をずらして描き,その隙間に甲円 5 個,乙円 2 個を入れる。乙円の直径が 1 寸のとき,甲円の直径はいかほどか。
外円の半径は甲円の半径の 3 倍,下の外円の中心は一番下の甲円の中心と同じになる。
外円の半径と中心座標を 3r1, (0, 0), (0, -2r1)
乙円の半径と中心座標を r2, (x2, y2)
とおき,以下の連立方程式を解く。なお,右端の甲円の中心座標は何の情報も与えない。
include("julia-source.txt");
using SymPy
@syms r1::positive, r2::positive, x2::positive, y2::positive
eq1 = x2^2 + (2r1 + y2)^2 - (3r1 + r2)^2
eq2 = x2^2 + y2^2 - (3r1 - r2)^2
eq3 = x2^2 + (2r1 - y2)^2 - (r1 + r2)^2;
この連立方程式から r2, x2, y2 を求める(式に r1 が変数として含まれる)と以下の解が得られる。
res = solve([eq1, eq2, eq3], (r2, x2, y2))
1-element Vector{Tuple{Sym, Sym, Sym}}:
(4*r1/5, 6*sqrt(2)*r1/5, 7*r1/5)
この連立方程式から r1, x2, y2 を求める(式に r2 が変数として含まれる)と解が得られない。なぜだろうか。
solve([eq1, eq2, eq3], (r1, x2, y2))
Any[]
ともあれ,前の解から r2 = r1*4/5 が得られるので,r1 = r2*5/4 である。
乙円の直径が 1 寸のとき,甲円の直径は 1.25 寸である。
その他のパラメータは以下の通り。
r1 = 0.625; r2 = 0.5; x2 = 1.06066; y2 = 0.875
甲円の直径 = 1.25; 乙円の直径 = 1
以下のプログラムは r2 を与えて r1, x2, y2 を求めて作図するものである。
function draw(r2, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r1 = 5r2/4
r0 = 3r1
(x2, y2) = r1 .* (6*sqrt(2)/5, 7/5)
@printf("r1 = %g; r2 = %g; x2 = %g; y2 = %g\n", r1, r2, x2, y2)
@printf("甲円の直径 = %g; 乙円の直径 = %g\n", 2r1, 2r2)
θ = atand(r1/sqrt(9r1^2 - r1^2))
plot()
circle(0, 0, r0)
circle(0, -2r1, r0, beginangle=θ, endangle=180-θ)
circle(0, 2r1, r1, :blue)
circle(0, 0, r1, :blue)
circle(0, -2r1, r1, :blue)
circle(√3r1, -r1, r1, :blue)
circle(-√3r1, -r1, r1, :blue)
circle(x2, y2, r2, :magenta)
circle(-x2, y2, r2, :magenta)
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(x2, y2, "(x2,y2)", :magenta, :center, :top, delta=-delta/2)
point(0, 2r1, " 2r1", :blue, :left, :vcenter)
point(0, -2r1, " -2r1", :red, :left, :vcenter)
point(√3r1, -r1, "(√3r1,-r1)", :blue, :center, :top, delta=-delta/2)
end
end;