裏 RjpWiki

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

算額(その2058)

2024年08月31日 | Julia

算額(その2058)

百二十二 群馬県藤岡市東平井 諏訪神社 明治7年(1874)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,斜線2本

斜線 2 本で挟まれた上円,中円,下円とそれらが交差する領域に 2 個の等円を容れる。上円,中円,下円の直径がそれぞれ 3 寸,4 寸,5.4 寸のとき,等円の直径はいかほどか。

斜線(を延長したとき)の交点座標を (a, 0)
等円の半径と中心座標を r4, (x12, 0), (x23, 0); x12 = 2r3 + 2r2 - 3r4; x23 = 2r3 - r4
上円の半径と中心座標を r1, (x1, 0); x1 = 2r3 + 2r2 + r1 - 4r4
中円の半径と中心座標を r2, (x2, 0); x2 = 2r3 + r2 - 2r4
下円の半径と中心座標を r3, (x3, 0); x3 = r3
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms a::positive, r1::positive, r2::positive,
     r3::positive, r4::positive,
     x1::positive, x2::positive, x3::positive;
x1 = 2r3 + 2r2 + r1 - 4r4
x2 = 2r3 + r2 - 2r4
x3 = r3
eq1 = r1/(a - x1) - r2/(a - x2)
eq2 = r1/(a - x1) - r3/(a - x3)
res = solve([eq1, eq2], (r4, a));

等円の半径は (r1*r3 - r2^2)/(r1 - 2*r2 + r3) である。
上円,中円,下円の直径がそれぞれ 3 寸,4 寸,5.4 寸のとき,等円の直径は 0.5 寸である。

res[r4] |> println
res[r4](r1 => 3//2, r2 => 4//2, r3 => 54//20) |> println

   (r1*r3 - r2^2)/(r1 - 2*r2 + r3)
   1/4

斜線の交点座標は (18.9, 0) である。

res[a] |> println
res[a](r1 => 3//2, r2 => 4//2, r3 => 54//20) |> println

   2*r3*(-r2 + r3)/(r1 - 2*r2 + r3)
   189/10

その他のパラメータは以下のとおりである。

   r1 = 1.5;  r2 = 2;  r3 = 2.7; , r4 = 0.25;  a = 18.9
   x1 = 9.9;  x2 = 6.9;  x3 = 2.7;  x12 = 8.65;  x23 = 5.15

function draw(r1, r2, r3, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r4, a) = (1/4, 189/10)
   x1 = 2r3 + 2r2 + r1 - 4r4
   x2 = 2r3 + r2 - 2r4
   x3 = r3
   x12 = 2r3 + 2r2 - 3r4
   x23 = 2r3 - r4
   θ = asind(r1/(a - x1))
   slope = tand(θ)
   @printf("等円の直径は %g である。\n", 2r4)
   @printf("r1 = %g;  r2 = %g;  r3 = %g; , r4 = %g;  a = %g\n", r1, r2, r3, r4, a)
   @printf("x1 = %g;  x2 = %g;  x3 = %g;  x12 = %g;  x23 = %g\n", x1, x2, x3, x12, x23)
   plot()
   circle(x1, 0, r1)
   circle(x2, 0, r2, :blue)
   circle(x3, 0, r3, :green)
   circle(x12, 0, r4, :orange)
   circle(x23, 0, r4, :orange)
   abline(a, 0, slope, 0, 1.05a)
   abline(a, 0, -slope, 0, 1.05a)
   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(x1, 0, " 上円:r1,(x1,0)", :red, :left, :vcenter)
       point(x2, 0, "中円:r2\n(x2,0)", :blue, :center, delta=-3delta)
       point(x3, 0, "下円:r3\n(x3,0)", :green, :center, delta=-3delta)
       point(a, 0, "a", :black, :center, delta=-3delta)
   end
end;

draw(3/2, 4/2, 5.4/2, true)

 


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

コメントを投稿

Julia」カテゴリの最新記事