算額あれこれ

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

算額(その17)

千葉県木更津市 高柳不動

http://www.wasan.jp/chiba/takayanagi.html
キーワード:円10個,外円
#Julia #SymPy #算額 #和算 #数学


円の内部に大きい円が 6 個,小さい円が 3 個ある。それぞれの円の半径を求めよ。

右上の大きな円の半径と中心座標を \(r_2,\ (r_2,\ y_2)\) とする。
一番上の小さな円の半径と中心座標を \(r_1,\ (0,\ y_1)\) とする。

include("julia-source.txt");  # julia-source.txt ソース

using SymPy

@syms r1::positive, y1::positive, r2::positive, y2::positive;

\(r_2,\ y_2\) は方程式を立てなくてもわかるが一応形式的に。

eq1 = y2 - (1 - r2)*sind(Sym(60));
eq2 = r2 - (1 - r2)*cosd(Sym(60));

先の円と接する小さな円の関係から以下の式を得る。

eq3 = (y2 - y1)^2 + r2^2 - (r1 + r2)^2;

一番上にある小さな円の半径を 1,中心座標を \( (0,\ y_1)\) とすると,

eq4 = y1 * sind(Sym(60)) - r1;

方程式を解き,解を求める。

res = solve([eq1, eq2, eq3, eq4], (r1, y1, r2, y2))[1]  # 1 of 2

    (3 - 2*sqrt(2), -4*sqrt(6)/3 + 2*sqrt(3), 1/3, sqrt(3)/3)

解答:

大きな円の半径 1/3
小さな円の半径 \(3 - 2\sqrt{2}\)

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

function draw(more)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, y1, r2, y2) = (3 - 2*sqrt(2), -4*sqrt(6)/3 + 2*sqrt(3), 1/3, sqrt(3)/3)
   plot()
   circle(0, 0, 1)
   circle4(r2, y2, r2, :blue)
   circle2(1-r2, 0, r2, :blue)
   circle(0, y1, r1, :magenta)
   circle2(r1, y1 - 2r1*sind(60), r1, :magenta)
   if more
       point(r2, y2, " (r2,y2)", :blue)
       plot!([0, r2], [y2, y2])
       point(0, y2, "y2 ", :magenta, :right)
       point(0, y1, "y1 ", :magenta, :right)
       point(r1, 0, " r1", :magenta, :left, :top)
       plot!([0, r1], [y1 - 2r1*sind(60), y1 - 2r1*sind(60)])
       hline!([0])
       vline!([0])
   end
end;


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