岩手県一関市 一関八幡神社 天保9年(1838)
今有如図 03014
https://w.atwiki.jp/sangaku/pages/198.html
キーワード:円2個,直角三角形,等脚台形
#Julia #SymPy #算額 #和算 #数学
等脚台形の中に合同な直角三角形を 2 個容れ,できた区画に天円と地円を容れる。大頭(下底),小頭(上底)と天円の直径が与えられたとき,地円の直径を求める術を述べよ。

大頭,小頭,高さを \(2a, 2b, h\)
天円の半径と中心座標を \(r_1, (0, h - r_1)\)
地円の半径と中心座標を \(r_2, (0, r_2)\)
直角三角形の頂点と y 軸の接点を \( (0, i)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms a, b, r1, h, i, r2
eq1 = ( (a^2 + i^2) + (b^2 + (h - i)^2)) - ( (a - b)^2 + h^2)
eq2 = dist2(0, i, b, h, 0, h - r1, r1)
eq3 = dist2(0, i, a, 0, 0, r2, r2)
res = solve([eq1, eq2, eq3], (r2, h, i))[2] # 2 of 2
( (a*b - a*r1)/(b + r1), -(a*b^4 - 2*a*b^2*r1^2 + a*r1^4 + 4*b^3*r1^2)/(2*b*r1*(-b + r1)*(b + r1)), -a*(-b + r1)*(b + r1)/(2*b*r1))
# r2
res[1] |> simplify |> println
a*(b - r1)/(b + r1)
地円の半径 \(r_2\) は,\(r_2 = a*(b - r1)/(b + r1)\) である。
\(大頭 = a = 5\),\(小頭 = b = 3\),\(天円の半径 = r1 = 1.5\) のとき,\(地円の半径 = r2 = 5/3 ≒ 1.66667\) である。
res[1](a => 5, b => 3, r1 => 3//2) |> println
5/3
# h
res[2] |> simplify |> println
(a*b^4 - 2*a*b^2*r1^2 + a*r1^4 + 4*b^3*r1^2)/(2*b*r1*(b - r1)*(b + r1))
# i
res[3] |> simplify |> println
a*(b - r1)*(b + r1)/(2*b*r1)
描画関数プログラムのソースを見る
function draw(a, b, r1, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(h, i, r2) = (-(a*b^4 - 2*a*b^2*r1^2 + a*r1^4 + 4*b^3*r1^2)/(2*b*r1*(-b + r1)*(b + r1)), -a*(-b + r1)*(b + r1)/(2*b*r1), (a*b - a*r1)/(b + r1))
@printf("a = %g; b = %g; r1 = %g; h = %g; i = %g; r2 = %g\n", a, b, r1, h, i, r2)
plot([a, b, -b, -a, a], [0, h, h, 0, 0], color=:green, lw=0.5)
plot!([a, 0, b], [0, i, h], color=:blue, lw=0.5)
plot!([-a, 0, -b], [0, i, h], color=:blue, lw=0.5)
circle(0, h - r1, r1)
circle(0, r2, r2, :magenta)
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, h, " h", :green, :center, :bottom, delta=delta)
point(0, i, " i", :green, :left, :vcenter)
point(b, h, "(b,h)", :green, :center, :bottom, delta=delta)
point(a, 0, "(a,0)", :green, :right, delta=-delta)
point(0, h - r1, "天円:r1,(0,h-r1)", :red, :center, delta=-delta)
point(0, r2, "地円:r2,(0,r2)", :magenta, :center, delta=-delta)
ylims!(-5delta, h + 2delta)
end
end;
draw(5, 3, 1.5, true)
以下のアイコンをクリックして応援してください