裏 RjpWiki

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

算額(その483)

2023年11月01日 | Julia

算額(その483)

宮城県丸森町小斎日向 鹿島神社 明治41年

徳竹亜紀子,谷垣美保: 2021年度の算額調査,仙台高等専門学校名取キャンパス 研究紀要,第 58 号, p.7-28, 2022.
https://www.sendai-nct.ac.jp/natori-library/wp/wp-content/uploads/2022/03/kiyo2022-2.pdf

団扇形内に甲円 2 個,乙円 5 個が入っている。扇形の直径(外円の直径)を与えて乙円の直径を求めよ。

不思議な問である。甲円や左右にある乙円は何の情報も与えない。外円の直径の上に 6 個の乙円があるので,乙円の直径は外円の直径の 1/6 である。

以下は図を描くためにすべての円の直径および中心座標を連立方程式を立てて解く。
甲円は外円に内接し,真ん中の乙円と外接している。

外円の半径と中心座標を r0, (0, 0); r0 = 6r2
甲円の半径と中心座標を r1, (x1, r1)
乙円の半径と中心座標を r2, (0, 3r2), (x2, -r2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

@syms r0::positive, r1::positive, x1::positive,
     r2::positive, x2::positive;

r2 = r0//6
eq1 = x1^2 + r1^2 - (r0 - r1)^2
eq2 = x1^2 + (3r2 - r1)^2 - (r1 + r2)^2
eq3 = x2^2 + r2^2 - (r0 - r2)^2
res = solve([eq1, eq2, eq3], (r1, x1, x2))

   1-element Vector{Tuple{Sym, Sym, Sym}}:
    (11*r0/30, 2*sqrt(15)*r0/15, sqrt(6)*r0/3)

r0 = 3 のとき,乙円の直径は 1,甲円の直径は 2.2

   r0 = 3;  r1 = 1.1;  r2 = 0.5;  x1 = 1.54919;  x2 = 2.44949
   乙円の直径 = 1

using Plots

function draw(more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r0 = 3
   (r1, x1, x2) = (11*r0/30, 2*sqrt(15)*r0/15, sqrt(6)*r0/3)
   r2 = r0/6
   @printf("r0 = %g;  r1 = %g;  r2 = %g;  x1 = %g;  x2 = %g\n",  r0, r1, r2, x1, x2)
   @printf("乙円の直径 = %g\n", 2r2)
   plot()
   circle(0, 0, r0, :black)
   circle(x1, r1, r1, :blue)
   circle(-x1, r1, r1, :blue)
   circle(0, r2, r2, :green)
   circle(0, 3r2, r2, :green)
   circle(0, 5r2, r2, :green)
   circle(x2, -r2, r2, :green)
   circle(-x2, -r2, r2, :green)
   circle(0, -r0, r0, beginangle=30, endangle=150) 
   if more
       delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
       hline!([0], color=:black, lw=0.5)
       vline!([0], color=:black, lw=0.5)
       point(x1, r1, "甲円:r1,(x1,r1)", :blue, :center, :top, delta=-delta)
       point(0, 3r2, " 乙円:r2,(0,3r2)", :green, :left, :vcenter)
       point(x2, -r2, "乙円:r2,(x2,-r2) ", :green, :right, :vcenter)
       point(0, 6r2, " r0=6r2", :green, :left, :bottom, delta=delta/2)
   else
       plot!(showaxis=false)
   end
end;


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その482) | トップ | ブルー・ムーン »
最新の画像もっと見る

コメントを投稿

Julia」カテゴリの最新記事