裏 RjpWiki

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

算額(その1177)

2024年08月02日 | Julia

算額(その1177)

六四 加須市不動岡 総願寺 慶応2年(1866)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円3個,直線上

甲円,乙円,丙円が隣同士接して,直線の上に載っている。乙円と丙円の直径が 9 寸,4 寸,矢が 6.2 寸のとき,甲円の直径はいかほどか。

甲円の半径と中心座標,矢を r1, (x1, r1),矢
乙円の半径と中心座標を r2, (x2, r2)
丙円の半径と中心座標を r3, (0, r3)
乙円と丙円の共通接線が通る二点の座標を (x, 0), (x2, y)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

@syms r1::positive, x1::positive, 矢::positive,
     r2::positive, x2::positive, r3::positive,
     x::negative, y::positive
r2 = 9//2
r3 = 4//2
矢 = 62//10
eq1 = dist2(x, 0, x2, y, x1, r1, r1 - 矢)
eq2 = dist2(x, 0, x2, y, 0, r3, r3);
eq3 = -r3/x - r2/(x2 - x)
eq4 = x1^2 + (r1 - r3)^2 - (r1 + r3)^2
eq5 = (x2 - x1)^2 + (r1 - r2)^2 - (r1 + r2)^2
res = solve([eq1, eq2, eq3, eq4, eq5], (r1, x1, x2, x, y))[1]

   (31/2, 2*sqrt(31), 5*sqrt(31), -4*sqrt(31), 372/41)

乙円と丙円の直径が 9 寸,4 寸,矢が 6.2 寸のとき,甲円の直径は 31 寸である。

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

  r2 = 4.5;  r3 = 2;  矢 = 6.2;  r1 = 15.5;  x1 = 11.1355;  x2 = 27.8388;  x = -22.2711;  y = 9.07317

function draw(r2, r3, 矢, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, x1, x2, x, y) = (31/2, 2*sqrt(31), 5*sqrt(31), -4*sqrt(31), 372/41)
   @printf("乙円,丙円の直径が %g, %g,矢が %g のとき,甲円の直径は %g である。\n", 2r2, 2r3, 矢, 2r1)
   @printf("r2 = %g;  r3 = %g;  矢 = %g;  r1 = %g;  x1 = %g;  x2 = %g;  x = %g;  y = %g\n", r2, r3, 矢, r1, x1, x2, x, y)
   plot()
   delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
   circle(x1, r1, r1)
   circle(x2, r2, r2, :blue)
   circle(0, r3, r3, :green)
   abline(x, 0, y/(x2 - x), x, x2 + r2)
   ##
   @syms x0, y0
   eq11 = (x0 - x1)^2 + (y0 - r1)^2 - r1^2
   eq12 = (y0 - r1)/(x0 - x1) * -r3/res[4] + 1
   res2 = solve([eq11, eq12], (x0, y0))[2]
   (x0, y0) = sqrt(5)*r1/25 + x1, r1*(25 - 2*sqrt(155))/25
   (x02, y02) = intersectionXY(x0, y0, x1, r1, x, 0, x2, y)
   segment(x1, r1, x02, y02, :gray70)
   dimension_line(x02, y02, x0, y0, "矢", :black, :left, :vcenter, deltax=20delta)
   ##
   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, r1, "甲円:r1,(x1,r1)", :red, :center, delta=-delta/2)
       point(x2, r2, "乙円:r2,(x2,r2)", :blue, :center, delta=-delta/2)
       point(0, r3, "丙円:r3,(0,r3)", :green, :left, :vcenter, deltax=delta)
       point(x, 0, "x", :black, :left, delta=-delta/2)
       # point(x2, y, "(x2,y)", :black, :right, :bottom, delta=delta/2)
       ylims!(-5delta, 2r1+3delta)
   end
end;


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

コメントを投稿

Julia」カテゴリの最新記事