裏 RjpWiki

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

算額(その2144)

2024年10月09日 | Julia

算額(その2144)

岐阜県垂井町 西法寺 令和6年(2024)
http://www.wasan.jp/gifu/saihoji.html

キーワード:円4個,円弧,扇形
#Julia, #SymPy, #算額, #和算

一辺が 1 の正三角形の二辺と頂点を中心とする 1 個の円弧内に互いに接する赤円 1 個,青円 1 個,黄円 2 個がある。
赤円,青円,黄円の半径はいかほどか。

正三角形の頂点を原点とし,上下反転させた図を考える。
正三角形が内接する円の半径と中心座標を R, (0, 0)
円弧の半径と中心座標を √3R, (0, y), (√3R/2, -R/2), (-√3R/2, -R/2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

@syms R::positive, r1::positive, r2::positive,
     r3::positive, x3::positive, y3::positive
eq1 = x3^2 + y3^2 - (R - r3)^2
eq2 = x3^2 + (y3 - R + r1)^2 - (r1 + r3)^2
eq3 = r1/(R - r1) - r2/(R - 2r1 - r2)
eq4 = dist2(0, 0, R/2, √Sym(3)R/2, x3, y3, r3)
eq5 = dist2(0, 0, R/2, √Sym(3)R/2, 0, R - r1, r1)
res = solve([eq1, eq2, eq3, eq4, eq5], (r1, r2, r3, x3, y3))[2]

   (R/3, R/9, R*(7 - 2*sqrt(6))/25, R*(-sqrt(3) + 8*sqrt(2))/25, R*(4*sqrt(6) + 11)/25)

赤円は R の 1/3,青円は R の 1/9,黄円は R の (7 - 2√6)/25 である。

R = 1 のとき,全てのパラメータは以下のとおりである。

   R = 1;  r1 = 0.333333;  r2 = 0.111111;  r3 = 0.0840408;  x3 = 0.383266;  y3 = 0.831918

function draw(R, more)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2, r3, x3, y3) = (R/3, R/9, R*(7 - 2*sqrt(6))/25, R*(-sqrt(3) + 8*sqrt(2))/25, R*(4*sqrt(6) + 11)/25)
   @printf("R = %g;  r1 = %g;  r2 = %g;  r3 = %g;  x3 = %g;  y3 = %g\n ", R, r1, r2, r3, x3, y3)
   plot([-R/2, 0, R/2], [√3R/2, 0, √3R/2], color=:black, lw=0.5)
   circle(0, 0, R, :black, beginangle=60, endangle=120)
   circlef(0, R - r1, r1, :tomato)
   circlef(0, R - 2r1 - r2, r2, :deepskyblue)
   circle2f(x3, y3, r3, :gold)
   if more
       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, R, "R", :black, :center, :bottom, delta=delta)
       point(R/2, √3R/2, "(R/2,√3R/2)", :black, :center, :bottom, delta=2.5delta, deltax=2delta)
       point(0, R - r1, "赤円:r1,(0,R-r1)", :black, :center, delta=-delta/2)
       point(0, R - 2r1 - r2, "青円:r2\n(0,R-2r1-r2)", :black, :center, :bottom, delta=delta/2)
       point(x3, y3, "黄円:r3\n(x3,y3)", :black, :center, delta=-delta/2)
   end  
end;

draw(1, true)


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

コメントを投稿

Julia」カテゴリの最新記事