裏 RjpWiki

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

算額(その1294)

2024年09月15日 | Julia

算額(その1294)

二十五 群馬県高崎市木部町 木部村鎮守社 文化10年(1813)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円7個,正方形

正方形の中に全円,累円(甲円,乙円,丙円)を容れる。甲円の直径が 1 寸のとき,丙円の直径はいかほどか。

全円の半径と中心座標を r1, (r1, r1); 正方形の一辺の長さは 2r1
甲円の半径と中心座標を r2, (r2, r2)
乙円の半径と中心座標を r3, (x3, r3)
丙円の半径と中心座標を r4, (x4, r4)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive,
     r3::positive, x3::positive,
     r4::positive, x4::positive;
eq1 = 2(r1 - r2)^2 - (r1 + r2)^2
eq2 = (x3 - r2)^2 + (r2 - r3)^2 - (r2 + r3)^2
eq3 = (r1 - x3)^2 + (r1 - r3)^2 - (r1 + r3)^2
eq4 = (x4 - x3)^2 + (r3 - r4)^2 - (r3 + r4)^2
eq5 = (r1 - x4)^2 + (r1 - r4)^2 - (r1 + r4)^2
res = solve([eq1, eq2, eq3, eq4, eq5], (r1, r3, x3, r4, x4))[4]  # 4 of 4

   (2*sqrt(2)*r2 + 3*r2, r2/2, r2 + sqrt(2)*r2, r2*(4*sqrt(2) + 9)/49, r2*(11/7 + 8*sqrt(2)/7))

丙円の半径 r4 は 甲円の半径 r2 の (4√2 + 9)/49 倍である。
甲円の直径が 1 寸のとき,丙円の直径は (4√2 + 9)/49 = 0.2991194744794363 寸である。

すべてのパラメータは以下のとおりである。

   r1 = 2.91421;  r2 = 0.5;  r3 = 0.25;  x3 = 1.20711;  r4 = 0.14956;  x4 = 1.59384

function draw(r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r3, x3, r4, x4) = (2*sqrt(2)*r2 + 3*r2, r2/2, r2 + sqrt(2)*r2, r2*(4*sqrt(2) + 9)/49, r2*(11/7 + 8*sqrt(2)/7))
   @printf("甲円の直径が %g のとき,丙円の直径は %g である。\n", 2r2, 2r4)
   @printf("r1 = %g;  r2 = %g;  r3 = %g;  x3 = %g;  r4 = %g;  x4 = %g\n", r1, r2, r3, x3, r4, x4)
   a = 2r1
   plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:green, lw=0.5)
   circle(r1, r1, r1)
   circle(r2, r2, r2, :blue)
   circle(x3, r3, r3, :orange)
   circle(x4, r4, r4, :magenta)
   circle(a - r2, r2, r2, :blue)
   circle(a - x3, r3, r3, :orange)
   circle(a - x4, r4, r4, :magenta)
   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(r1, r1, "全円:r1,(r1,r1)", :red, :center, delta=-delta/2)
       point(r2, r2, "甲円:r2\n(r2,r2)", :blue, :center, delta=-delta/2)
       point(x3, r3, "乙円:r3,(x3,r3)", :black, :center, delta=-3delta)
       point(x4, r4, "丙円:r4,(x4,r4)", :magenta, :left, :bottom, delta=2delta)
   end  
end;

draw(1/2, true)

#和算 - ブログ村ハッシュタグ
#和算

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

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

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