算額(その274)
中村信弥「改訂増補 長野県の算額」
http://www.wasan.jp/zoho/zoho.html
県内の算額(165)
長野県飯山市下木島 鳥出神社 弘化4年(1847)
大円と小円は同心円で,半径の差は小円の半径に等しい。3 個の小円の中心は大円の演習場にあり,小円は中遠に外接しかつ大円(中円)の弦にも接している。
小円の径が 4 寸,矢が 1 寸のとき,中円の径はいかほどか。
矢の長さを a とする。
中円の半径と中心座標を r2, (0, 0) とする。
中央と右の小円の半径と中心座標を r1, (0, r1 +r2), (x1, r2 - a + r1) とする。
r1, a を変数のまま以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms r1::positive, r2::positive, x1::positive, a::positive;
r1 = 2
a = 1
eq1 = x1^2 + (r2 - a + r1)^2 - (r1 + r2)^2
eq2 = x1^2 + a^2 - 4r1^2
res = solve([eq1, eq2], (r2, x1))
1-element Vector{Tuple{Sym, Sym}}:
(r1*(-a + 2*r1)/a, sqrt(-a + 2*r1)*sqrt(a + 2*r1))
2r2 が中円の直径なので 2*(r1*(-a + 2*r1)/a)
2res[1][1] |> simplify |> println
2*r1*(-a + 2*r1)/a
2r1 は小円の直径なので,「小円の直径の二乗を矢で割って小円の直径を引く」と中円の直径が得られる。
r1 = 2; a = 1
2*(r1*(-a + 2*r1)/a) # 中円径
12.0
r1 = 2.000000; a = 1.000000; r2 = 6.000000; x1 = 3.872983
using Plots
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
a = 1
r1 = 4 // 2
(r2, x1) = (r1*(-a + 2*r1)/a, sqrt(-a + 2*r1)*sqrt(a + 2*r1))
@printf("r1 = %.6f; a = %.6f; r2 = %.6f; x1 = %.6f\n", r1, a, r2, x1)
plot()
circle(0, 0, r2 + r1, :black)
circle(0, 0, r2, :green)
circle(0, r2 + r1, r1, :blue)
circle(x1, r2 - a + r1, r1, :blue)
circle(-x1, r2 - a + r1, r1, :blue)
x = sqrt((r2 + r1)^2 - (r2 - a)^2)
segment(-x, r2 - a, x, r2 - a)
if more
point(r2, 0, "r2 ", :green, :right)
point(r2, 0, "中円 \n", :green, :right, :bottom)
point(r2 + r1, 0, "r2+r1 ", :black, :right)
point(r2 + r1, 0, "大円 \n", :black, :right, :bottom)
point(x1, r2 - a + r1, "小円:r1\n(x1,r2-a+r1)", :blue, :left, :bottom)
point(0, r2 - a, " r2-a", :black)
point(0, r2, " r2", :green)
point(0, r2 + r1, " r2+r1", :blue)
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;