算額(その271)
中村信弥「改訂増補 長野県の算額」
http://www.wasan.jp/zoho/zoho.html
県内の算額(256)
長野県下高井郡野沢温泉村 湯沢神社 明治17年(1884)
直線の上に天円 2 個が互いに外接している。月円 4 個も直線に外接し両端の月園は天円にも外接している。人円 2 個は月円 2 個と,天円および日円に外接している。日円は天円とも外接している。天円の径を知って月円の径を求めよ。
y 軸が天円の交点を通るようにして,右半分だけを考える。
天円の半径,中心座標を r1, (r1, r1)
日円の半径,中心座標を r2, (0, y2)
人円の半径,中心座標を r3, (x3, y3)
月円の半径,中心座標を r4, (r4, r4) および (3r4, r4)
天円と右端の月円が外接することから,天円の径が与えられれば月円の径は方程式 1 本で解ける。
include("julia-source.txt");
using SymPy
@syms r1::positive, r2::positive, r3::positive, r4::positive, y2::positive, x3::positive, y3::positive;
r1 = 1
eq3 = (r1 -3r4)^2 + (r1 - r4)^2 - (r1 + r4)^2 |> expand
solve(eq3, r4) |> println
Sym[r1/9, r1]
r4 < r1 なので r4 = r1 / 9,すなわち月円の径は天円の径の 1/9 である。
以下の連立方程式を解いて残りのパラメータを求める。
@syms r1::positive, r2::positive, r3::positive, r4::positive, y2::positive, x3::positive, y3::positive;
r1 = 1
r4 = r1//9
eq1 = r1^2 + (r1 - y2)^2 - (r1 + r2)^2 |> expand
eq2 = (r1 - x3)^2 + (r1 - y3)^2 - (r1 + r3)^2 |> expand
eq4 = x3^2 + (y2 - y3)^2 - (r2 + r3)^2 |> expand
eq5 = (x3 - 3r4)^2 + (y3 - r4)^2 - (r3 + r4)^2 |> expand
eq6 = r4^2 + (y2 - r4)^2 - (r2 + r4)^2 |> expand;
res = solve([eq1, eq2, eq4, eq5, eq6], (r2, y2, r3, x3, y3))
1-element Vector{NTuple{5, Sym}}:
(8*r1/45, 17*r1/45, 2*r1/27, 2*r1/9, 7*r1/27)
日円の径は天円の径の 8/45,人円の径は天円の径の 2/27 などである。
using Plots
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r1 = 1
r4 = r1/9
(r2, y2, r3, x3, y3) = (8*r1/45, 17*r1/45, 2*r1/27, 2*r1/9, 7*r1/27)
@printf("月円: r4 = %.6f\n", r4)
plot()
circle(r1, r1, r1)
circle(-r1, r1, r1)
circle(0, y2, r2, :blue)
circle(x3, y3, r3, :magenta)
circle(-x3, y3, r3, :magenta)
circle(r4, r4, r4, :green)
circle(3r4, r4, r4, :green)
circle(-r4, r4, r4, :green)
circle(-3r4, r4, r4, :green)
if more
point(r1, r1, " 天円:r1,(r1,r1)", :red)
point(0, y2, " 日円:r2,(0,r2)", :blue, :left, :bottom)
point(x3, y3, " 人円:r3,(x3,y3)", :magenta, :left, :bottom)
point(r4, r4, " 月円:r4,(r4,r4)", :green, :left, :bottom)
point(3r4, r4, " 月円:r4,(3r4,r4)", :green, :left, :top)
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5, xlims=(-0.1, 2), ylims=(-0.05, 1.1))
else
plot!(showaxis=false)
hline!([0], color=:black, lw=0.5)
end
end;