算額(その1185)
(10) 京都市中京区三条大宮西二筋目下ル 武信稲荷神社 嘉永6年(1853)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.
キーワード:円4個,正方形,等脚台形
正方形内に,水平線・斜線2本(等脚台形),日円 1 個,月円 1 個,星円 2 個をいれる。日円,月円の直径が 1 寸,4 寸のとき,星円の直径はいかほどか。
正方形の一辺の長さを 2a; 2a = 2r1 + 2r2
日円の半径と中心座標を r1, (0, 2r2 + r1)
月円の半径と中心座標を r2, (0, r2)
星円の半径と中心座標を r3, (a - r3, 2r2 - r3)
とおき,以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms a::positive, b::positive, r1::positive, r2::positive, r3::positive
a = r1 + r2
eq1 = (a - b) + 2r2 - sqrt((a - b)^2 + 4r2^2) - 2r3
eq2 = dist2(a, 0, b, 2r2, 0, r2, r2)
res = solve([eq1, eq2], (r3, b))[1]
((r1^2/2 + 2*r1*r2 + r2^2 - sqrt(4*r2^2*(r1 + r2)^2 + (r2^2 - (r1 + r2)^2)^2)/2)/(r1 + r2), r2^2/(r1 + r2))
res[1]
「術」は,「日円と月円の直径の積を,日円と月円の直径の和で割る」と実に簡潔である。
(1*4)/(1 + 4) = 4/5 = 0.8
sqrt(...) は,r1^2 + 2*r1*r2 + 2*r2^2 と簡約化できるので,それを代入して,simplify すれば,術と同じ式になる。
sqrt(4*r2^2*(r1 + r2)^2 + (r2^2 - (r1 + r2)^2)^2) |> factor |> println
r1^2 + 2*r1*r2 + 2*r2^2
(r1^2/2 + 2*r1*r2 + r2^2 - (r1^2 + 2*r1*r2 + 2*r2^2)/2)/(r1 + r2)
日円,月円の直径が 1 寸,4 寸のとき,星円の直径は 1*4/(1 + 4) = 0.8 である。
function draw(r1, r2, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r3, b) = ((r1^2 + 4*r1*r2 - r1*sqrt((4*r2^2*(r1 + r2)^2 + (r2^2 - (r1 + r2)^2)^2)/(r1 + r2)^2) + 2*r2^2 - r2*sqrt((4*r2^2*(r1 + r2)^2 + (r2^2 - (r1 + r2)^2)^2)/(r1 + r2)^2))/(2*(r1 + r2)), r2^2/(r1 + r2))
a = r1 + r2
@printf("日円,月円の直径が %g, %g のとき,星円の直径は %g である。\n", 2r1, 2r2, 2r3)
@printf("r1 = %g; r2 = %g; r3 = %g; 2a = %g, b = %g\n", r1, r2, r3, 2a, b)
plot([a, a, -a, -a, a], [0, 2a, 2a, 0, 0], color=:green, lw=0.5)
circle(0, 2a - r1, r1)
circle(0, r2, r2, :blue)
circle2(a - r3, 2a - 2r1 - r3, r3, :magenta)
segment(-a, 2a - 2r1, a, 2a - 2r1, :orange)
segment(a, 0, b, 2a - 2r1, :orange)
segment(-a, 0, -b, 2a - 2r1, :orange)
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(0, 2a - r1, "日円:r1\n(0,2a-r1)", :red, :center, delta=-delta/2)
point(0, r2, "月円:r1,(0,r2)", :blue, :center, delta=-delta/2)
point(a - r3, 2r2 - r3, "星円:r3,(a-r3,2r2-r3) ", :magenta, :right, :vcenter)
point(b, 2r2, "(b,2r2)", :black, :center, :bottom, delta=delta/2)
end
end;
draw(1/2, 4/2, true)
※コメント投稿者のブログIDはブログ作成者のみに通知されます