裏 RjpWiki

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

算額(その1379)

2024年10月31日 | Julia

算額(その1379)

七十三 群馬県安中市下後閑 威徳神社 嘉永3年(1850)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,楕円,正方形
#Julia, #SymPy, #算額, #和算

第七問
「群馬の算額」によれば,「十問あるが文章は不明」とのことであるが,以下のようなものでもあろう。

正三角形の中に大円 1 個,小円 4 個,斜線 3 本を容れる。大円は正三角形の三辺と 3 箇所で接し,正三角形の隅にある小円は正三角形の二辺と大円に接する。また,斜線はそれぞれ正三角形の隅にある小円 2 個と中央にある小円に接する。
正三角形の一辺の長さが与えられたとき,小円の直径はいかほどか。
または,小円の直径が与えられたとき,正三角形の一辺の長さはいかほどか。

正三角形の一辺の長さを 2a
大円の半径と中心座標を r1, (0, 0); r1 = a/√3
小円の半径と中心座標を r2, (0, r1 + r2), (x2, r2); r2 = (a - x2)/√3
とおき,以下の方程式を解き,x2 を求める。

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms a, r1, r2, x2
r2 = (a - x2)/√Sym(3)
eq1 = x2^2 + (r2 - a/√Sym(3))^2 - (a/√Sym(3) + r2)^2
solve(eq1, x2)[2] |> println

   2*a/3

x2 = 2a/3 であり,小円の半径は r2 = (a - x2)/√3 = √3a/9 である。

正三角形の一辺の長さが 1 のとき,小円の直径は √3/9 = 0.19245008972987523 である。
小円の直径が 1 のとき,正三角形の一辺の長さは 5.196152422706632 である。

function draw(a, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = a/√3
   x2 = 2a/3
   r2 = √3a/9  # (a - x2)/√3
   @printf("正三角形の一辺の長さが %g のとき,小円の直径は %.15g である。\n", 2a, 2r2)
   plot([a, 0, -a, a], [-a/√3, 2a/√3, -a/√3, -a/√3], color=:blue, lw=0.5)
   circle(0, 0, r1)
   circle(0, 0, r2, :green)
   rotate(0, r1 + r2, r2, :green)
   segment((2a/√3 - r1 - r2)/√3, r1 + r2, -a + 2(2a/√3 - r1 - r2)/√3, -a/√3, :orange)
   segment(-(2a/√3 - r1 - r2)/√3, r1 + r2, a - 2(2a/√3 - r1 - r2)/√3, -a/√3, :orange)
   segment(-a + 2r2/√3, 2r2 - a/√3, a - 2r2/√3, 2r2 - a/√3, :orange)
   if more == true
       delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
       hline!([0], color=:gray80, lw=0.5)
       vline!([0], color=:gray80, lw=0.5)
       point(0, r1 + r2, " r1+r2", :green, :left, :vcenter)
       point(0, 2a/√3, " 2a/√3", :green, :left, :vcenter)
       point(a, -a/√3, "(a,-a/√3)", :green, :right, delta=-delta/2)
       point(x2, r2 - a/√3, "(x2,r2-a/√3)", :green, :center, delta=-delta/2, deltax=2delta)
       ylims!(-a/√3 - 5delta, 2a/√3 + 5delta)
   end
end;

draw(1/2, true)

 


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

コメントを投稿

Julia」カテゴリの最新記事