裏 RjpWiki

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

算額(その708)

2024年02月20日 | Julia

算額(その708)

八六 加須市多聞寺 愛宕神社 明治13年(1880)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

埼玉の算額ほか
https://gunmawasan.web.fc2.com/files/saitama-sangaku-h24.html
愛宕神社の復元算額 明治13年(部分拡大図)(加須市)
https://gunmawasan.web.fc2.com/files/sangak-corner/atago-3s.jpg

キーワード:円13個,外円,弦2本
#Julia, #SymPy, #算額, #和算

外円内に水平な 2 本の弦,甲円 1 個,乙円,丙円,丁円を 2 個ずつ,戊円 4 個,己円 1 個を容れる。
己円の直径が 33 寸のとき,乙円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (0, 6r5 - R)
乙円の半径と中心座標を r2, (x2, 2r5 - R)
丙円の半径と中心座標を r3, (x3, y + r3)
丁円の半径と中心座標を r4, (x4, R - 2r6 - r4)
戊円の半径と中心座標を r5, (0, r5 - R), (0, 3r5 - R), (0, 5r5 - R), (0, 7r5 - R)
弦と y 軸の交点座標を (0, y), (0, R - 2r6)
その他の変数の関係は
R = r6 + 4r5
y = 4r5 - R
r1 = 2r5
y4 = R - 2r6 - r4
とおき,以下の連立方程式を(r6 を変数のまま)解く。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive, x2::positive,
     r3::positive, x3::positive,
     r4::positive, x4::positive, y4::positive,
     r5::positive, r6::positive
@syms r1, r2, x2, r3, x3, r4, x4, y4, r5, r6
R = r6 + 4r5
y = 4r5 - R
y4 = R - 2r6 - r4
r1 = 2r5
eq1 = x2^2 + (2r5 - R)^2 - (R - r2)^2
eq2 = x3^2 + (y + r3)^2 - (R - r3)^2
eq3 = x4^2 + y4^2 - (R - r4)^2
eq4 = x2^2 + r5^2 - (r2 + r5)^2
eq5 = x3^2 + (6r5 - R - y - r3)^2 - (r1 + r3)^2
eq6 = x4^2 + (6r5 - R - y - r4)^2 - (r1 + r4)^2
eq7 = (x3 - x4)^2 + (y4 - y - r3)^2 - (r3 + r4)^2
res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7], (r2, x2, r3, x3, r4, x4, r5));

10 組の解が得られるが,最初の 2 つが適解である。ただし,x2, x3, x4 は符号が負の解が得られる(y 軸で線対称なので適解である)。

res[1]

   (28*r6/11, -2*sqrt(21)*sqrt(r6*(143*r6 + 73*sqrt(r6^2)))/33, r6*(10757*r6 + 11023*sqrt(r6^2))/(66*(59*r6 + 73*sqrt(r6^2))), -sqrt(2)*sqrt(r6^3*(10757*r6 + 11023*sqrt(r6^2)))/(33*r6), 2*r6*(59*r6 + 73*sqrt(r6^2))/(92*r6 + 73*sqrt(r6^2)), -2*sqrt(66)*sqrt(r6/(92*r6 + 73*sqrt(r6^2)))*(59*r6 + 73*sqrt(r6^2))/33, 59*r6/66 + 73*sqrt(r6^2)/66)

res[2]

   (28*r6/11, 2*sqrt(21)*sqrt(r6*(143*r6 + 73*sqrt(r6^2)))/33, r6*(10757*r6 + 11023*sqrt(r6^2))/(66*(59*r6 + 73*sqrt(r6^2))), -sqrt(2)*sqrt(r6^3*(10757*r6 + 11023*sqrt(r6^2)))/(33*r6), 2*r6*(59*r6 + 73*sqrt(r6^2))/(92*r6 + 73*sqrt(r6^2)), -2*sqrt(66)*sqrt(r6/(92*r6 + 73*sqrt(r6^2)))*(59*r6 + 73*sqrt(r6^2))/33, 59*r6/66 + 73*sqrt(r6^2)/66)

乙円の半径(r2)は 28*r6/11 となり,己円の半径(r6)の 28/11 倍である。術でも「己径二十八段以十一個除(己円の直径を28倍して11で割る)」としている。
したがって,己円の直径が 33 寸のとき,乙円の直径は 84 寸である。

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

   R = 148.5;  r1 = 66;  r2 = 42;  x2 = -67.3498;  r3 = 41.25;  x3 = -104.355;  r4 = 26.4;  x4 = -83.4841;  y4 = 89.1;  r5 = 33;  r6 = 16.5

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   #(r2, x2, r3, x3, r4, x4, r5) =
   #    (42, 68, 41, 104, 26, 84, 33)
   r6 = 33//2
   (r2, x2, r3, x3, r4, x4, r5)= (28*r6/11, -2*sqrt(21)*sqrt(r6*(143*r6 + 73*sqrt(r6^2)))/33, r6*(10757*r6 + 11023*sqrt(r6^2))/(66*(59*r6 + 73*sqrt(r6^2))), -sqrt(2)*sqrt(r6^3*(10757*r6 + 11023*sqrt(r6^2)))/(33*r6), 2*r6*(59*r6 + 73*sqrt(r6^2))/(92*r6 + 73*sqrt(r6^2)), -2*sqrt(66)*sqrt(r6/(92*r6 + 73*sqrt(r6^2)))*(59*r6 + 73*sqrt(r6^2))/33, 59*r6/66 + 73*sqrt(r6^2)/66)
   R = r6 + 4r5
   y = 4r5 - R
   r1 = 2r5
   y4 = R - 2r6 - r4
   @printf("乙円の直径 = %g;  己円の直径 = %g\n", 2r2, 2r6)
   @printf("R = %g;  r1 = %g;  r2 = %g;  x2 = %g;  r3 = %g;  x3 = %g;  r4 = %g;  x4 = %g;  y4 = %g;  r5 = %g;  r6 = %g\n",
       R, r1, r2, x2, r3, x3, r4, x4, y4, r5, r6)
   plot()
   circle(0, 0 , R, :blue)
   circle(0, 6r5 - R, r1, :brown)
   circle(x2, 2r5 - R, r2, :magenta)
   circle(-x2, 2r5 - R, r2, :magenta)
   circle(x3, y + r3, r3, :green)
   circle(-x3, y + r3, r3, :green)
   circle(x4, y4, r4, :orange)
   circle(-x4, y4, r4, :orange)
   x1 = sqrt(R^2 - y^2)
   segment(-x1, y, x1, y, :green)
   circle(0, 7r5 - R, r5)
   circle(0, 5r5 - R, r5)
   circle(0, 3r5 - R, r5)
   circle(0, r5 - R, r5)
   y20 = R - 2r6
   x20 = sqrt(R^2 - y20^2)
   segment(-x20, y20, x20, y20, :green)
   circle(0, R - r6, r6, :gray)
   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, 6r5 - R, "甲円:r1\n(0,6r5-R)", :brown, :center, delta=-delta)
       point(-x2, 2r5 - R, "乙円:r2\n(x2,2r5-R)", :magenta, :center, delta=-delta/2)
       point(-x3, y + r3, "丙円:r3\n(x3,y+r3)", :green, :center, delta=-delta/2)
       point(-x4, y4, "丁円:r4\n(x4,y4)", :orange, :center, delta=-delta/2)
       point(0, r5 - R, "戊円:r5\n(0,r5-R)", :red, :center, delta=-delta/2)
       point.(0, [3, 5, 7].*r5 .- R, "", :red)
       point(0, R - r6, "己円:r6,(0,R-r6)", :black, :center, :bottom, delta=delta/2)
       point(0, y, " y", :green, :left, delta=-delta/2)
       point(0, R - 2r6, " R-2r6", :green, :left, :bottom, delta=delta/2)
   end
end;


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

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Julia」カテゴリの最新記事