裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

算額(その285)

2023年06月18日 | Julia

算額(その285)

中村信弥「改訂増補 長野県の算額」
http://www.wasan.jp/zoho/zoho.html
県内の算額(253)
長野県諏訪市中洲 諏訪大社上社 明治12年(1897)

外円の中に弦を引き,等円を 6 個入れる。そのうち 3 個は弦の下,2 個は弦の下に置き,それぞれが弦に接し,互いに外接する。また弦の下の 3 個の円の左右の等円は外円に内接する。残り 1 個は弦の上の2個に外接し,外円に内接する。

等円の径が 1 寸のとき,外円の径を求めよ。

外円,等円の半径を R, r,弦の位置を y とする(y < 0, 外円の中心から弦までの距離は -y)。
等円の中心座標は図に示すようになる。
r を変数のままにして,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms R::positive, r::positive, y::negative;

eq1 = r^2 + ((R - r) - (r + y))^2 - 4r^2
eq2 = 4r^2 + (y - r)^2 - (R - r)^2

res = solve([eq1, eq2], (R, y))

   1-element Vector{Tuple{Sym, Sym}}:
    (3*r*(4 - 5*sqrt(3)/2)/5 + 18*r/5, r*(4 - 5*sqrt(3)/2))

解の式を簡約化する。

res[1][1] |> simplify |> println  # 外円の半径
res[1][2] |> simplify |> println  # 弦の位置(y 座標)

   3*r*(4 - sqrt(3))/2
   r*(8 - 5*sqrt(3))/2

等円の直径が 1 寸のとき,外円の直径は 3*(4 - sqrt(3))/2 ≒ 3.401923788646684 ≒ 3寸4分

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r = 1/2
   (R, y) = (3*r*(4 - sqrt(3))/2, r*(8 - 5*sqrt(3))/2)
   x = sqrt(R^2 - y^2)
   plot()
   circle(0, 0, R, :black)
   circle(0, R - r, r)
   circle(r, r + y, r)
   circle(-r, r + y, r)
   circle(0, y - r, r)
   circle(2r, y - r, r)
   circle(-2r, y - r, r)
   segment(-x, y, x, y, :blue)
   if more
       annotate!(0.65, 1.05, text(@sprintf("R = %.3f\ny = %.3f\nx = %.3f\nr = %.3f", R, y, x, r), 10, :left))
       point(x, y, "(x,y)", :blue, :right, :bottom)
       point(2r, y - r, "(2r,y-r)", :red)
       point(r, r + y, "(r,r+y)", :red)
       point(0, R - r, "(0,R-r)", :red)
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村