裏 RjpWiki

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

算額(その1158)

2024年07月19日 | Julia

算額(その1158)

十七 大里郡岡部村岡 稲荷社 文化13年(1816)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円10個,外円,直角三角形

外円の中に直角三角形,甲円,乙円,丙円を 1 個ずつ,丁円,戊円,己円を 2 個ずつ容れる。丁円,戊円の直径がそれぞれ 4 寸 3 寸のとき,己円の直径はいかほどか。

算額(その589)を一段階複雑にしたものである。

直角三角形の斜辺は外円の直径である(中心を通る)。
外円の半径と中心座標を R, (0, 0)
線分 AB, CA, CB の長さを AB,  CA, CB とする。
甲円の半径と中心座標を r1, (x1, y1)
乙円の半径と中心座標を r2, (0, r2 - R)
丙円の半径と中心座標を r3, (r3 - R, 0)
丁円の半径と中心座標を r4, (x41, y41), (x42, y42)
戊円の半径と中心座標を r5, (x5, -OB - r5)
己円の半径と中心座標を r6, (-OA/2 - r6, y6)
とおき,以下の連立方程式を解く。
まず eq1, eq2, eq3, eq4 を解いて,r6, R, CA, CB を求める。
eq1, eq2, eq3 は「算法助術」の公式29 である。

include("julia-source.txt")

using SymPy

@syms AB::positive, CA::positive, CB::positive,
     R::positive, r1::positive, r2::positive, r3::positive,
     r4::positive, r5::positive, r6::positive
AB = 2R
eq1 = AB^2 - 16R*r4
eq2 = CA^2 - 16R*r5
eq3 = CB^2 - 16R*r6
eq4 = CA^2 + CB^2 - AB^2
(ans_r6, ans_R, ans_CA, ans_CB) = solve([eq1, eq2, eq3, eq4], (r6, R, CA, CB))[1]

   (r4 - r5, 4*r4, 8*sqrt(r4)*sqrt(r5), 8*sqrt(r4)*sqrt(r4 - r5))

己円の半径 r6 は,丁円の半径 r4 から戊円の半径 r5 を引いたものである。
丁円,戊円の直径がそれぞれ 4 寸 3 寸のとき,己円の直径は 1 寸である。

算額の答えはここまででよいが,図を描くために残りのパラメータをすべて求める。

---

乙円の半径はすぐに求まり,次いで戊円の中心座標 x5 も求まる。

@syms x5
ans_r2 = (ans_R - ans_CB/2)/2
eq5 = x5^2 + (r2 - r5)^2 - (r2 + r5)^2
ans_x5 = solve(eq5, x5)[2]

ans_x5 |> println

   2*sqrt(r2)*sqrt(r5)

同様にして,丙円の半径,己円の中心座標 y6 も求まる。

@syms y6
r3 = (ans_R - ans_CA/2)/2 
eq6 = (r3 - r6)^2 + y6^2 - (r3 + r6)^2
ans_y6 = solve(eq6, y6)[2]
ans_y6 |> println

   2*sqrt(2)*sqrt(r6)*sqrt(-sqrt(r4)*sqrt(r5) + r4)

甲円と丁円のパラメータについては,直角三角形の斜辺を水平にした場合について求め,実際の角度だけ座標を回転させて図を描く。

@syms x4
r1 = ans_R/2
eq7 = x4^2 + r4^2 - (ans_R - r4)^2
ans_x4 = solve(eq7, x4)[2]
ans_x4 |> println

   2*sqrt(2)*r4

function draw(r4, r5, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
  (r6, R, CA, CB) = (r4 - r5, 4*r4, 8*sqrt(r4)*sqrt(r5), 8*sqrt(r4)*sqrt(r4 - r5))
   AB = sqrt(CA^2 + CB^2)
   r2 = (R - CB/2)/2
   x5 = 2*sqrt(r2)*sqrt(r5)
   r3 = (R - CA/2)/2 
   y6 = 2*sqrt(2)*sqrt(r6)*sqrt(-sqrt(r4)*sqrt(r5) + r4)
   r1 = R/2
   (x1, y1) = transform(0, r1, deg=-atand(CB/CA))
   x4 = 2√2r4
   (x41, y41) = transform(x4, r4, deg=-atand(CB/CA))
   (x42, y42) = transform(-x4, r4, deg=-atand(CB/CA))
   @printf("丁円,戊円の直径が %g, %g のとき,己円の直径は %g である。\n", 2r4, 2r5, 2r6)
   @printf("r4 = %g;  r5 = %g;  r6 = %g;  R = %g;  CA = %g;  CB = %g\n", r4, r5, r6, R, CA, CB)
   plot([-CA/2, CA/2, -CA/2, -CA/2], [-CB/2, -CB/2, CB/2, -CB/2], color=:green, lw=0.5)
   circle(0, 0, R, :orange)
   circle(0, r2 - R, r2, :blue, lw=2)
   circle2(x5, -CB/2 - r5, r5, :blue)
   circle(r3 - R, 0, r3, :magenta, lw=2)
   circle22(-CA/2 - r6, y6, r6, :magenta)
   circle(x1, y1, r1, lw=2)
   circle(x41, y41, r4)
   circle(x42, y42, r4)
   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", :orange, :center, :bottom, delta=delta/2)
       point(R, 0, " R", :orange, :left, :bottom, delta=delta/2)
       point(x1, y1, "甲円:r1,(x1,y1)", :red, :center, delta=-delta/2)
       point(x41, y41, "丁円:r4\n(x41,y41)", :red, :center, delta=-delta/2)
       point(x42, y42, "丁円:r4\n(x42,y42)", :red, :center, delta=-delta/2)
       point(0, r2 - R, "乙円:r2\n(0,r2-R)", :blue, :center, :bottom, delta=delta/2)
       point(x5, -CB/2 - r5, "戊円:r5\n(x5,-CB/2-r5)", :blue, :center, :bottom, delta=delta/2)
       point(r3 - R, 0, "   丙円:r3,(r3-R,0)", :magenta, :left, :vcenter)
       point(-CA/2 - r6, y6, "   己円:r6,(-CA/2-r6,y6)", :magenta, :left, :vcenter)
       point(-CA/2, -CB/2, "C ", :green, :right, :vcenter)
       point(CA/2, -CB/2, " A", :green, :left, :vcenter)
       point(-CA/2, CB/2, "B ", :green, :right, :vcenter)
   end
end;

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

算額(その1157)

2024年07月19日 | Julia

算額(その1157)

十七 大里郡岡部村岡 稲荷社 文化13年(1816)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円11個,半円2個,長方形

長方形の中に甲円,乙円,丙円の 11 個,半円 2 個を容れる。甲円の直径が 5 寸 5 分のとき,乙円の直径はいかほどか。

長方形の長辺,短辺を 2r1, r1
甲円の半径と中心座標を r1, (0, 0)
乙円の半径と中心座標を r2, (r1 + r2, 0), (x2, r1 - r2)
丙円の半径と中心座標を r3, (x3, y3)
とおき,以下の連立方程式を解く。

include("julia-source.txt")

using SymPy

@syms r1::positive, r2::positive, x2::positive,
     r3::positive, x3::positive, y3::positive
eq1 = (r1 + r2)^2 + r1^2 - (2r1 - r2)^2
eq2 = x2^2 + (2r1 - r2)^2 - (2r1 + r2)^2
eq3 = x3^2 + (y3 + r1)^2 - (2r1 - r3)^2
eq4 = (r1 + r2 - x3)^2 + y3^2 - (r2 + r3)^2
eq5 = x3^2 + y3^2 - (r1 + r3)^2;
res = solve([eq1, eq2, eq3, eq4, eq5], (r2, x2, r3, x3, y3))[1]

   (r1/3, 2*sqrt(6)*r1/3, 2*r1/11, 12*r1/11, 5*r1/11)

丙円の半径 r3 は,甲円の半径 r1 の 2/11 倍である。
甲円の直径が 5.5 寸のとき,丙円の直径は 1 寸である。

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

  r1 = 2.75;  r2 = 0.916667;  x2 = 4.49073;  r3 = 0.5;  x3 = 3;  y3 = 1.25

function draw(r1, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r2, x2, r3, x3, y3) = (r1/3, 2*sqrt(6)*r1/3, 2*r1/11, 12*r1/11, 5*r1/11)
   @printf("甲円の直径が %g のとき,丙円の直径は %g である。\n", 2r1, 2r3)
   @printf("r1 = %g;  r2 = %g;  x2 = %g;  r3 = %g;  x3 = %g;  y3 = %g\n", r1, r2, x2, r3, x3, y3)
   plot(r1 .* [2, 2, -2, -2, 2], r1*[-1, 1, 1, -1, -1], color=:green, lw=0.5)
   circle(0, -r1, 2r1, :magenta, beginangle=0, endangle=180)
   circle(0, r1, 2r1, :magenta, beginangle=180, endangle=360)
   circle(0, 0, r1)
   circle2(r1 + r2, 0, r2, :green)
   circle4(x2, r1 - r2, r2, :green)
   circle4(x3, y3, r3, :blue)
   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(2r1, 0, " 2r1", :magenta, :left, :bottom, delta=delta/2)
       point(0, r1, " r1", :magenta, :left, :bottom, delta=delta/2)
       point(0, 0, "甲円:r1,(0,0)", :red, :center, delta=-delta)
       point(r1 + r2, 0, "乙円:r2\n(r1+r2,0)", :green, :center, :bottom, delta=delta)
       point(x2, r1 - r2, "乙円:r2\n(x2,r1-r2)", :green, :center, :bottom, delta=delta)
       point(x3, y3, "丙円:r3,(x3,y3)   ", :blue, :right, :vcenter)
       xlims!(-2r1 - 3delta, 2r1 + 8delta)
   end
end;

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

2024/07/19

2024年07月19日 | 写真
オクラの花です
ハイビスカスと同じ仲間です



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

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

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