算額(その1220)
(2) 大阪府豊中市服部元町 服部天神社 天保14年(1843)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.
キーワード:円8個,外円
外円の中に 7 個の円を容れる。外円と甲円の直径が 3 寸,1.8 寸のとき,乙円,丙円,丁円の直径を求めよ。
「算額(その868)」は累円であるが,これはそのうちの最初に 3 個の円についてである。
パラメータの求め方はそちらを参照(なお,SymPy のバージョンの違いで,当時「算額(その868)」で得られた解が今では違ったものになっている)。
ここでは,累円それぞれの数値解を求めるやりかたでパラメータを求める。
include("julia-source.txt");
using SymPy
@syms R::positive, r1::positive,
r2::positive, x2::positive, y2::real,
r3::positive, x3::positive, y3::real,
r4::positive, x4::positive, y4::positive
R = 3//2
r1 = 18//20
x2 = r2
eq1 = r2^2 + y2^2 - (R - r2)^2
eq4 = r2^2 + (R - r1 - y2)^2 - (r1 + r2)^2;
res1 = solve([eq1, eq4], (r2, y2))[1]
(9/16, -3/4)
@syms R::positive, r1::positive,
r2::positive, x2::positive, y2::real,
r3::positive, x3::positive, y3::real
R = 3//2
r1 = 18//20
(r2, y2) = (9//16, 3//4)
x2 = r2
eq2 = x3^2 + y3^2 - (R - r3)^2
eq5 = x3^2 + (R - r1 - y3)^2 - (r1 + r3)^2
eq7 = (x3 - x2)^2 + (y3 - y2)^2 - (r3 + r2)^2;
res2 = solve([eq2, eq5, eq7], (r3, x3, y3))[2]
(3/8, 9/8, 0)
@syms R::positive, r1::positive,
r2::positive, x2::positive, y2::real,
r3::positive, x3::positive, y3::real
R = 3//2
r1 = 18//20
(r2, y2) = (9//16, 3//4)
x2 = r2
(r3, x3, y3) = (3/8, 9/8, 0)
eq3 = x4^2 + y4^2 - (R - r4)^2
eq6 = x4^2 + (R - r1 - y4)^2 - (r1 + r4)^2
eq8 = (x4 - x3)^2 + (y4 - y3)^2 - (r4 + r3)^2;
res2 = solve([eq3, eq6, eq8], (r4, x4, y4))[1]
(0.225000000000000, 1.12500000000000, 0.600000000000000)
外円と甲円の直径が 3 寸,1.8 寸のとき,乙円,丙円,丁円の直径は 9/8 寸,3/4 寸,9/20 寸である。
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(R, r1) = (3/2, 1.8/2)
(r2, x2, y2) = (0.5624999999999999, 0.5624999999999999, -0.75)
(r3, x3, y3) = (0.3749999999999999, 1.125, -3.3306690738754696e-16)
(r4, x4, y4) = (0.225000000000000, 1.12500000000000, 0.600000000000000)
plot()
circlef(0, 0, R, :cornsilk2)
circle2f(0, R - r1, r1, 1)
circle2f(x2, y2, r2, 2)
circle2f(x3, y3, r3, 3)
circle2f(x4, y4, r4, 4)
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, R, "R", :black, :center, :bottom, delta=delta)
point(0, R - r1, "甲円:r1,(0,R-r1)", :white, :center, delta=-delta)
point(x2, y2, "乙円:r2,(x2,y2)", :white, :center, delta=-delta)
point(x3, y3, "丙円:r3\n(x3,y3)", :white, :center, :vcenter)
point(x4, y4, "丁円:r4\n(x4,y4)", :white, :center, :vcenter)
end
end;
draw(true)
※コメント投稿者のブログIDはブログ作成者のみに通知されます