三四 武蔵国埼玉郡下忍村遍照院境内 金毘羅社(神楽堂) 天保11年(1840)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:外円,楕円,二等辺三角形
#Julia #SymPy #算額 #和算 #数学
円弧の中に等楕円 3 個を容れる。楕円は短径で円弧に接し,長径が最長のものである。円弧の直径が 5 寸,短径が 1 寸のとき,矢の長さ(弦の中点から円弧への最短線分の長さ)を求めよ。

円弧の直径と中心座標を \(R, (0, 0)\)
中央の楕円の長半径,短半径を \(a, b, (0, R - b)\)
円弧の中心を通る楕円の接線の楕円との接点を \( (x_0, y_0)\)
接線と円弧の弦がなす角を \(\theta\)
とおく。
「楕円は短径で円弧に接し,長径が最長のもの」とは,円弧は曲率円の一部であり \(a^2/b = R\) が成り立つ。
接点 \( (x_0, y_0)\) を求める。
接線と弦のなす角は \(\theta = \text{atand}(y_0, x_0) = 60°\) である。
中央の楕円を見込む角も 60° であり,弦と接線の間にも等楕円が入り,\(y\) 軸を線対称として反対側にも等楕円が入る。
3 つの楕円を見込む角は合計 180° で,弦は円弧をなす円の直径である。
よって,矢は円の半径に当たるので 2.5 寸である。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms R::positive, a::positive, b::positive,
x0::positive, y0::positive
a = sqrt(b*R)
eq1 = x0^2/a^2 + (y0 - (R - b))^2/b^2 - 1
eq2 = -b^2*x0/(a^2*(y0 - (R - b))) - y0/x0
res = solve([eq1, eq2], (x0, y0))[2]
(R*sqrt(b)*sqrt(R - 2*b)/(R - b), R*(R - 2*b)/(R - b))
\(\tan(\theta) = y_0/x_0\) から \(\theta\) を求めると \(\theta = 60°\) である。
atand(res[2]/res[1])(R => 5/2, b => 1/2).evalf() |> println
60.0000000000000
描画関数プログラムのソースを見る
function draw(R, b, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
a = sqrt(b*R)
(x0, y0) = (R*sqrt(b)*sqrt(R - 2*b)/(R - b), R*(R - 2*b)/(R - b))
θ = atand(y0, x0)
plot(showaxis=false)
circle(0, 0, R, beginangle=0, endangle=180)
segment(-R, 0, R, 0, :red)
circle(0, 0, R, :gray, beginangle=180, endangle=360)
ellipse(0, R - b, a, b, color=:blue)
ellipse(0, b - R, a, b, color=:gray80)
ellipse( (R - b)*cosd(θ/2), (R - b)*sind(θ/2), a, b, color=:gray80, φ=2θ)
ellipse(-(R - b)*cosd(θ/2), (R - b)*sind(θ/2), a, b, color=:gray80, φ=θ)
ellipse( (R - b)*cosd(θ/2), -(R - b)*sind(θ/2), a, b, color=:gray80, φ=-2θ)
ellipse(-(R - b)*cosd(θ/2), -(R - b)*sind(θ/2), a, b, color=:gray80, φ=-θ)
segment(0, 0, R*cosd(θ), R*sind(θ), :green)
segment(0, 0, -R*cosd(θ), R*sind(θ), :green)
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(x0, y0, "(x0,y0)", :blue, :left, delta=-delta/2)
point(0, R - b, "楕円:a,b\n(0,R-b)", :blue, :right, :vcenter, deltax=-delta)
circle(0, 0, 0.1R, beginangle=0, endangle=θ)
circle(0, 0, 0.12R, beginangle=0, endangle=θ)
point(0.12R, 0.1R, "θ", :red, mark=false)
dimension_line(0, 0, 0, R, " 矢", :magenta, :left, :vcenter)
end
end;
draw(5/2, 0.5, true)
以下のアイコンをクリックして応援してください