算額(その1252)
七十四 群馬県甘楽郡妙義町菅原 菅原神社 嘉永4年(1851)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円11個
5 個の大円が交差する隙間に 6 個の小円を容れる。大円の直径が 5 寸のとき,小円の直径はいかほどか。
大円の半径と中心座標を r1, (0, r1 + r2)
小円の半径と中心座標を r2, (0, 0), (x2, y2); y2 = x2*tand(54)
とおき,以下の連立方程式を解く。
一度に解くと r2 を表す式がとてつもなく複雑になるので,まず eq2 から x2 を求め,その解を eq1 に代入して r2 を求める。
include("julia-source.txt");
using SymPy
@syms r1::positive, r2::positive, x2::positive, y2::positive;
y2 = x2*tand(Sym(54))
eq1 = x2^2 + (r1 + r2 - y2)^2 - (r1 - r2)^2
eq2 = x2 - (r1 + r2)*cosd(Sym(18))/2;
ans_x2 = solve(eq2, x2)[1];
eq11 = eq1(x2 => ans_x2);
@syms d
ans_r2 = solve(eq11, r2)[1]
ans_r2 = solve(eq11, r2)[1]/r1 |> x -> apart(x, d)*r1 |> simplify
ans_r2 |> println
(ans_r2.evalf()) |> println
ans_r2(r1 => 5/2).evalf() |> println
r1*(-2*sqrt(10*sqrt(5) + 50) - 4*sqrt(5) + 11 + 4*sqrt(2*sqrt(5) + 10))
0.259616183682498*r1
0.649040459206249
小円の半径 r2 は,大円の半径 r1 の (-2*sqrt(10*sqrt(5) + 50) - 4*sqrt(5) + 11 + 4*sqrt(2*sqrt(5) + 10)) = 0.259616183682498 倍である。
大円の直径が 5 寸のとき,小円の直径は 1.29808091841249 寸である。
ans_x2 = ans_x2(r2 => ans_r2) |> simplify
ans_x2 |> println
ans_x2.evalf() |> println
ans_x2(r1 => 5/2).evalf() |> println
r1*(-sqrt(10*sqrt(5) + 50) - 3*sqrt(5) + 5 + 3*sqrt(2*sqrt(5) + 10))/2
0.598983089761036*r1
1.49745772440259
大円の直径が 5 寸のとき,小円の半径の中心座標は (3.743644311006475 寸, 5.152684346344076 寸) である。
1.49745772440259*5/2, 1.49745772440259*5/2*tand(54)
(3.743644311006475, 5.152684346344076)
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r2 = r1*(11 + 4*sqrt(2√5 + 10) - 2sqrt(10√5 + 50) - 4√5)
x2 = r1*( 5 + 3*sqrt(2√5 + 10) - sqrt(10√5 + 50) - 3√5)/2
y2 = x2*tand(54)
@printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r2)
plot()
rotate(0, r1 + r2, r1, angle=72)
rotate(x2, y2, r2, :blue, angle=72)
circle(0, 0, r2, :blue)
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(x2, y2, " 小円:r2,(x1,y2)", :blue, :left, :vcenter)
point(0, r1 + r2, "大円:r1,(0,r1+r2)", :red, :center, :bottom, delta=delta/2)
end
end;
draw(5/2, true)
※コメント投稿者のブログIDはブログ作成者のみに通知されます