裏 RjpWiki

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

算額(その462)

2023年10月14日 | Julia

算額(その462)

埼玉県秩父市大宮 秩父神社 明治20年

山口正義(2015): やまぶき, 第27号
https://yamabukiwasan.sakura.ne.jp/ymbk27.pdf

正三角形内に半円 3 個,大円 1 個,小円 3 個が入っている。小円の直径が 1 寸のとき,大円の直径はいかほどか。

正三角形の一辺の長さを 2a とする。
半円の半径と中心座標を r0, (a/2, √3a/2)
大円の半径と中心座標を r1, (0, a/√3)
小円の半径と中心座標を r2, (0, r3), (a/2 - √3r2/2, √3a/2 - r2/2)
として以下の連立方程式を解く。

なお,eq1 を解いて r0 を求めれば,順次 eq2, eq3 を解いてもよい。

include("julia-source.txt")

using SymPy

@syms r0::positive, r1::positive, r2::positive, a::positive
eq1 = distance(0, sqrt(Sym(3))a, -a, 0, a/2, sqrt(Sym(3))a/2) - r0^2
eq2 = (a/2)^2 + (sqrt(Sym(3))a/2 - a/sqrt(Sym(3)))^2 - (r0 - r1)^2
eq3 = (a/2)^2 + (sqrt(Sym(3))a/2 - r2)^2 - (r0 + r2)^2;

res = solve([eq1, eq2, eq3], (r0, r1, r2))

   2-element Vector{Tuple{Sym, Sym, Sym}}:
    (sqrt(3)*a/2, sqrt(3)*a/6, sqrt(3)*a/24)
    (sqrt(3)*a/2, 5*sqrt(3)*a/6, sqrt(3)*a/24)

解は二通り得られるが,最初のものが適解である。
また,大円の半径は小円半径の4倍なので,小円の直径が 1 寸のとき,大円の直径は 4 寸である。

res[1][2]/res[1][3] |> println

   4

ちなみに,半円の半径は小円の半径の 12 倍である。

res[1][1]/res[1][3] |> println

   12

また,a = 4√3 のとき 小円の直径が 1 寸になる。

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   a = 4√3
   (r0, r1, r2) = (sqrt(3)*a/2, sqrt(3)*a/6, sqrt(3)*a/24)
   @printf("r0 = %g;  r1 = %g;  r2 = %g\n", r0, r1, r2)
   @printf("r1/r2 = %g\n", r1/r2)
   plot([a, 0, -a, a], [0, √3a, 0, 0], color=:black, lw=0.5)
   circle(0, 0, r0, beginangle=0, endangle=180)
   circle(a/2, √3a/2, r0, beginangle=120, endangle=300)
   circle(-a/2, √3a/2, r0, beginangle=240, endangle=420)
   circle(0, a/√3, r1, :blue)
   circle(0, r2, r2, :green)
   circle(0, r2, r2, :green)
   circle(a/2 - √3r2/2, √3a/2 - r2/2, r2, :green)
   circle(-a/2 + √3r2/2, √3a/2 - r2/2, r2, :green)
   if more
       delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /  3  # size[2] * fontsize * 2
       point(a/2, √3a/2, " 半円:r0,(a/2,√3a/2)", :red, :left, :vcenter)
       point(0, r2, "  小円:r2,(0,r2)", :green, :left, :bottom, delta=2delta)
       point(a/2 - r2√3/2, √3a/2 - r2/2, "     小円:r2\n      (a/2-r2√3/2,√3a/2-r2/2)", :green, :left, :top, delta=-delta)
       point(0, a/√3, " 大円:r1\n (0,a/√3)", :black, :left, :bottom, delta=delta)
       point(a, 0, " a", :black, :left, :bottom, delta=delta)
       point(0, √3a, " √3a", :black, :left, :vcenter)
       hline!([0], color=:gray, lw=0.5)
       vline!([0], color=:gray, lw=0.5)
   else
      plot!(showaxis=false)
   end
end;

 


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

コメントを投稿

Julia」カテゴリの最新記事