三十一 群馬県藤岡市立石 立石神社 文化13年(1816)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円8個,円弧,長方形
#Julia #SymPy #算額 #和算 #数学
長方形の中に,円弧と大中小の 8 個の円を容れる。長(長方形の横の長さ)が 5 寸のとき平(縦の長さ)はいかほどか。

大円の半径と中心座標を \(r_1,\ (0,\ 0)\)
中円の半径と中心座標を \(r_2,\ (r_1 - r_2,\ 0),\ (r_2 - r_1,\ 0)\)
小円の半径と中心座標を \(r_3,\ (0,\ 0),\ (0,\ r_1 - r_3),\ (a - r_3,\ r_3)\)
円弧の半径と中心座標を \(R,\ (r_1 + R,\ 0)\)
上円の半径と中心座標を \(r_4,\ (r_4,\ y_4)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms a::positive, R::positive, r1::positive, r2::positive,
r3::positive, x3::positive, 長::positive
eq1 = (r1 - r2)^2 + (r1 - r3)^2 - (r2 + r3)^2
eq2 = ( (r1 + R) - (a - r3))^2 + r3^2 - (R - r3)^2
eq3 = (r1 + R - a)^2 + r1^2 - R^2
eq4 = a + r1 - 長
eq5 = r1 - 2r2 + r3
res = solve([eq1, eq2, eq3, eq4, eq5], (a, R, r1, r2, r3))[1]
(3*長/5, 長/2, 2*長/5, -長/5 + sqrt(5)*長/5, 長*(-4/5 + 2*sqrt(5)/5))
# r1
res[3]
\(\displaystyle \frac{2 長}{5}\)
平 = \(2r_1\) ゆえ,平は長 の 4/5 = 0.8 倍である。
長が 5 寸のとき,平は 4 寸である。
描画関数プログラムのソースを見る
function draw(長, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(a, R, r1, r2, r3) = 長.*(3/5, 1/2, 2/5, (√5 - 1)/5, (2√5 - 4)/5)
x3 = a - r3
@printf("長が %g のとき,平 = 2r1 = %g\n", 長, 2r1)
plot([a, a, -r1, -r1, a], [-r1, r1, r1, -r1, -r1], color=:green, lw=0.5)
circle(0, 0, r1)
circle2(r1 - r2, 0, r2, :blue)
circle22(0, r1 - r3, r3, :magenta)
circle(0, 0, r3, :magenta)
circle22(x3, r3, r3, :magenta)
circle(r1 + R, 0, R, :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(a, -r1, " (a,-r1)", :green, :left, :vcenter)
point(r1 + R, 0, "円弧:R,(r1+R,0)", :orange, :center, delta=-delta/2)
point(0, r1, "r1", :red, :center, :bottom, delta=delta)
point(0, r1 - r3, " 小円:r3,(0,r1-r3)", :magenta, :left, :vcenter)
point(a - r3, r3, " 小円:r3,(a-r3,0)", :magenta, :left, :vcenter)
point(r1 - r2, 0, "中円:r2\n(r1-r2,0)", :blue, :left, delta=-delta, deltax=-3delta)
point(r3, 0, "r3 ", :magenta, :right, :bottom, delta=delta/2)
dimension_line(-r1, -r1 - 2delta, a, -r1 - 2delta, "長", :black, :center, delta=-3delta)
dimension_line(-r1 - 2delta, -r1, -r1 - 2delta, r1, "平", :black, :right, deltax=-2delta)
xlims!(-r1 - 10delta, r1 + 2R + 2delta)
end
end;
draw(5, true)
以下のアイコンをクリックして応援してください