43 岩手県一関市滝沢字寺田下 熊野白山滝神社 明治13年(1880)
安富有恒:和算—岩手の現存算額のすべて,青磁社,東京都,1987.
http://www.wasan.jp/iwatenosangaku_yasutomi.pdf
キーワード:円7個,正三角形
#Julia #SymPy #算額 #和算 #数学
正三角形の中に,甲円 1 個と,乙円,丙円,丁円を 2 個ずつ容れる。丁円の直径が 1 寸のとき,丙円の直径はいかほどか。

正三角形の一辺の長さと高さを \(2a, h = \sqrt{3}a\)
甲円の半径と中心座標を \(r_1, (0, y_1); y_1 = 2r_3 + r_1\)
乙円の半径と中心座標を \(r_2, (x_2, r_2); x_2 = 2\sqrt{r_2 r_3}\)
丙円の半径と中心座標を \(r_3, (0, r_3), (0, y_3); y_3 = 3r_3 + 2r_1\)
丁円の半径と中心座標を \(r_4, (x_4, y_4)\)
とおく。
\(r_4 = 1\) として,一般性を失わない。
まず eq1, eq2, eq3, eq4, eq5 を解いて \(a, r_1, r_2, x_4, y_4\) を求める。
得られた解を eq6 に代入して eq6_2 とし,それを解いて \(r_3\) を求める。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms a, r1, r2, r3, r4, x4, y4
r4 = 1
h = √Sym(3)a
x2 = 2sqrt(r2*r3)
y1 = 2r3 + r1
y3 = 3r3 + 2r1
eq1 = r3 - (h - y3)/2
eq2 = r1 - (h - y1)/2
eq3 = x4^2 + (y1 - y4)^2 - (r1 + r4)^2
eq4 = (x4 - x2)^2 + (y4 - r2)^2 - (r2 + r4)^2
eq5 = x2^2 + (y1 - r2)^2 - (r1 + r2)^2
eq6 = dist2(0, h, a, 0, x4, y4, r4);
res = solve([eq1, eq2, eq3, eq4, eq5], (a, r1, r2, x4, y4))[4]; # 4 of 4
eq6_2 = eq6(a => res[1], r1 => res[2], r2 => res[3], x4 => res[4], y4 => res[5])
\(\displaystyle \frac{121 r_{3}^{2}}{4} - \frac{66 r_{3} \sqrt{\left(13 r_{3} + 8 \sqrt{13 r_{3} + 3} + 19\right) \left(117 r_{3} - 6 \sqrt{13 r_{3} + 3} + 28\right)}}{169} - \frac{11 r_{3} \left(\frac{32 r_{3}}{13} + \frac{48 \sqrt{13 r_{3} + 3}}{169} - \frac{55}{169}\right)}{2} + \frac{6 \sqrt{\left(13 r_{3} + 8 \sqrt{13 r_{3} + 3} + 19\right) \left(117 r_{3} - 6 \sqrt{13 r_{3} + 3} + 28\right)} \left(\frac{32 r_{3}}{13} + \frac{48 \sqrt{13 r_{3} + 3}}{169} - \frac{55}{169}\right)}{169} + \frac{\left(\frac{32 r_{3}}{13} + \frac{48 \sqrt{13 r_{3} + 3}}{169} - \frac{55}{169}\right)^{2}}{4} + \frac{36 \left(13 r_{3} + 8 \sqrt{13 r_{3} + 3} + 19\right) \left(117 r_{3} - 6 \sqrt{13 r_{3} + 3} + 28\right)}{28561} - 1\)
# r3
ans_r3 = solve(eq6_2, r3)[2]; # 2 of 2
ans_r3
\(\displaystyle \frac{8 \sqrt{3}}{25} + \frac{43}{75}\)
ans_r3.evalf()
\(\displaystyle 1.12758959175537\)
丁円の直径が 1 寸のとき,丙円の直径は 1.12758959175537 である。
術は「\( (0.8/\sqrt{3} + 0.6)×丁円径\)」で,丁円の直径が 1 のとき 1.0618802153517006 となり,上で得た解と一致しない。
近似式のようにも見えるが,近似精度が悪すぎる。
(0.8/√3 + 0.6)
1.0618802153517006
先に得られた res に, ans_r3 を代入すれば,\(a, r_1, r_2, x_4, y_4\) が得られる。
# a
res[1](r3 => ans_r3).evalf()
\(\displaystyle 7.16115569768924\)
# r1
res[2](r3 => ans_r3).evalf()
\(\displaystyle 3.38276877526612\)
# r2
res[3](r3 => ans_r3).evalf()
\(\displaystyle 1.50345278900717\)
# x4
res[4](r3 => ans_r3).evalf()
\(\displaystyle 3.90276877526612\)
# y4
res[5](r3 => ans_r3).evalf()
\(\displaystyle 3.64369170035483\)
描画関数プログラムのソースを見る
function draw(r4, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(a, r1, r2, r3, x4, y4) = r4 .* [7.161155697689238, 3.382768775266121, 1.503452789007165, 1.1275895917553738, 3.9027687752661215, 3.643691700354829]
@printf("丁円の直径が %g 寸のとき,丙円の直径は %g である。\n", 2r4, 2r3)
h = √3a
x2 = 2sqrt(r2*r3)
y1 = 2r3 + r1
y3 = 3r3 + 2r1
plot([a, 0, -a, a], [0, h, 0, 0], color=:green, lw=0.5)
circle(0, 2r3 + r1, r1)
circle(0, r3, r3, :blue)
circle(0, y3, r3, :blue)
circle2(x2, r2, r2, :magenta)
circle2(x4, y4, r4, :orange)
if more
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3 # size[2] * fontsize * 2
vline!([0], color=:gray80, lw=0.5)
hline!([0], color=:gray80, lw=0.5)
point(0, 2r3 + r1, "甲円:r1,(0,2r3+r1)", :red, :center, delta=-delta/2)
point(0, r3, "丙円:r3\n(0,r3)", :blue, :center, delta=-delta/2)
point(0, y3, "丙円:r3\n(0,y3)", :blue, :center, delta=-delta/2)
point(x2, r2, "乙円:r2\n(x2,y2)", :magenta, :center, delta=-delta/2)
point(x4, y4, "丁円:r4,(x4,y4)", :orange, :center, :bottom, delta=1.5delta, deltax=5delta)
point(a, 0, "a", :green, :left, :bottom, delta=delta/2, deltax=delta/2)
point(0, √3a, "√3a", :green, :left, :vcenter, deltax=delta)
end
end;
draw(1/2, true)
以下のアイコンをクリックして応援してください