算額(その1450)
二本松市杉沢 愛宕神社 奉納年・奉納者は不明
http://www.wasan.jp/fukusima/atago.html
街角の数学 Street Wasan ~落書き帳「○△□」~ 181. 算額復元第1号
http://streetwasan.web.fc2.com/math16.8.31.html
キーワード:円1個,外円,正三角形2個
#Julia, #SymPy, #算額, #和算
団扇の中に内接する正三角形 3 個を容れる。小さい正三角形の一辺の長さが 1 寸のとき,大きい正三角形の一辺の長さはいかほどか。
外円の半径と中心座標を R, (0, 0)
小さい正三角形の一辺の長さを a
大きい正三角形の一辺の長さを b
とおき,以下の方程式を解き R を求める。
求める答えは,b = √3R である。
include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
using SymPy
@syms R::positive, a::positive
eq = (R/2*cosd(Sym(30)) + a)^2 + (R/2*sind(Sym(30)))^2 - R^2
res = solve(eq, R)[1]
res |> println
a*(sqrt(3) + sqrt(15))/3
# R
res[1](a => 1).evalf() |> println
1.86834471792543
# b = √3R
√Sym(3)res[1] |> simplify |> println
(√Sym(3)res[1])(a => 1).evalf() |> println
a*(1 + sqrt(5))
3.23606797749979
大きい正三角形の一辺の長さ b は,小さい正三角形の一辺の長さ a の 1 + √5 倍である。
小さい正三角形の一辺の長さが 1 寸のとき,大きい正三角形の一辺の長さは 3.23606797749979 寸である。
function draw(a, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
R = a*(√3 + √15)/3
b = a*(1 + √5) # =√3R
@printf("小さい正三角形の一辺の長さが %g 寸のとき,大きい正三角形の一辺の長さは %g 寸である。", a, b)
plot(R*cosd(30).*[1, 0, -1, 1], R.*[-sind(30), 1, -sind(30), -sind(30)], color=:blue, lw=0.5)
plot!(R/2*cosd(30).+[a, a/2, 0, a], R/2*sind(30).+[0, √3/2*a, 0, 0], color=:green, lw=0.5)
plot!(-R/2*cosd(30).-[a, a/2, 0, a], R/2*sind(30).+[0, √3/2*a, 0, 0], color=:green, lw=0.5)
circle(0, 0, R, :red)
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(√3R/4, R/4, "(√3R/4,R/4) ", :green, :right, :vcenter)
point(√3R/4 + a, R/4, "(√3R/4+a,R/4)", :green, :right, delta=-delta/2)
point(√3R/4 + a/2, R/4+√3a/2, "(√3R/4+a/2,R/4+√3a/2) ", :green, :right, :vcenter)
point(0, R, "R", :red, :center, :bottom, delta=delta/2)
point(0, -R/2, "-R/2", :blue, :center, :bottom, delta=delta/2)
point(√3R/2, -R/2, "(√3R/2, -R/2) ", :blue, :right, :bottom, delta=delta/2)
point(√3R/2, -R/2, "= (b/2, -R/2) ", :blue, :right, delta=-delta/2)
end
end;
draw(1, true)