算額あれこれ

算額問題をコンピュータで解きます

算額(その25)

福島県田村郡三春町御木沢 厳島神社 明治18年(1885)

和算の館
http://www.wasan.jp/fukusima/miharuitukusima2.html

和算で遊ぼう!! 「三春まちなか寺子屋」2017レポート
4 月 厳島神社
https://miharukoma.com/wp-content/uploads/2018/01/%E4%B8%89%E6%98%A5%E3%81%BE%E3%81%A1%E3%81%AA%E3%81%8B%E5%AF%BA%E5%AD%90%E5%B1%8B2017%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88.pdf

キーワード:円5個,菱形
#Julia #SymPy #算額 #和算 #数学


図のように,外円にひし形の相対する 2 つの頂点が内接し,その菱形の内部に大小の円が互いに外接している。大円の径が 4 寸のとき,小円の径はいかほどか。

以下のように記号を定め,方程式を立てる。

大円の半径を 1 とする。
\(x_0\) は,大円と小円の共通する接線(接点をそれぞれ \( (x_1,\ y_1),\ (x_2,\ y_2)\) とする)が \(x\) 軸と交わるときの \(x\) 座標である。

using SymPy

@syms x1::positive, y1::positive, x2::positive, y2::positive, r2::positive, x0::positive;

eq1 = (2 - y1) / (-x1) * y1 / (x1 - 1) + 1; # 接線と半径が直交する
eq2 = (x0-2 - r2) / (x0 - 1) - y2/y1; # 相似関係
eq3 = (x0-2 - r2) / (x0 - 1) - r2; # 相似関係
eq4 = (x1 - 1)^2 + y1^2 - 1; # (x1, y1) が大円の円周上にある
eq5 = y1/(x0-x1) - y2/(x0 - x2); # 相似関係
eq6 = y1 / (x0 - x1) - 2/x0; # 相似関係

res = solve([eq1, eq2, eq3, eq4, eq5, eq6], (r2, x1, y1, x2, y2, x0))[1]

    (1/4, 8/5, 4/5, 12/5, 1/5, 8/3)

   \(r_2 = 1/4 = 0.250000000000000\)
   \(x_1 = 8/5 = 1.60000000000000\)
   \(y_1 = 4/5 = 0.800000000000000\)
   \(x_2 = 12/5 = 2.40000000000000\)
   \(y_2 = 1/5 = 0.200000000000000\)
   \(x_0 = 8/3 = 2.66666666666667\)

答え:小円の半径は大円の半径の 1/4 である。

描画関数プログラムのソースを見る

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r2, x1, y1, x2, y2, x0 = (1/4, 8/5, 4/5, 12/5, 1/5, 8/3)    
   plot([0, x0, 0, -x0, 0], [2, 0, -2, 0, 2], color=:black, linewidth=0.5)
   circle2(1, 0, 1, :green)
   circle2(2 + r2, 0, r2, :blue)
   if more
       point(0, 2, "2 ", :black, :right, :bottom)
       point(x1, y1, "(x1,y1) ", :green, :right, :top)
       point(x2, y2, "(x2,y2)", :blue, :left, :bottom)
       point(2 + r2, 0, "2+r2", :blue, :center, :top)
       point(x0, 0, "  x0", :magenta, :center)
       point(1, 0, "1   ", :green, :top)
       point(2, 0, "2   ", :green, :top)
       vline!([0], color=:black, linewidth=0.25)
       hline!([0], color=:black, linewidth=0.25)
   end
   circle(0, 0, 2, :red)
end;


以下のアイコンをクリックして応援してください