裏 RjpWiki

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

算額(その2133)

2024年10月04日 | Julia

算額(その2133)

七二 加須市大字外野 棘脱地蔵堂 明治7年(1874)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円4個,台形
#Julia, #SymPy, #算額, #和算

台形の中に,大円 2 個,乾円 2 個を容れる。大円の直径が 133 寸のとき,乾円の直径はいかほどか。

注:図に円の種類が書かれていないが,小さいほうが「大円」,大きいほうが「乾円」である。
台形の上底,下底の長さを a, b
乾円の半径と中心座標を r1, (r1, r1), (3r1, r1)
大円の半径と中心座標を r2, (2r1, r2), (x2, y2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms a::positive, b::positive, r1::positive,
     r2::positive, x2::positive, y2::positive;
eq1 = r1^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = (x2 - 3r1)^2 + (y2 - r1)^2 - (r1 - r2)^2
eq3 = dist2(0, b, 4r1, a, r1, r1, r1)
eq5 = dist2(0, b, 4r1, a, x2, y2, r2)
eq4 = (a - b)/4r1 + (x2 - 3r1)/(y2 - r1)
res = solve([eq1, eq2, eq3, eq4, eq5], (a, b, r1, x2, y2))[3]

   (4*r2*(sqrt(15) + 15)/15, 4*r2*(3 + sqrt(15))/3, 4*r2, 51*r2/4, r2*(3*sqrt(15) + 16)/4)

乾円の半径 r1 は,大円の半径 r2 の 4 倍である。
大円の直径が 133 寸のとき,乾円の直径は 532 寸である。

答では,「乾円径三百七拾八寸有奇」とあり,術では「置大頭乗八拾五除六十二(下底×85/62)」といずれも頓珍漢なことが書かれている。

function draw(r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (a, b, r1, x2, y2) = (4*r2*(sqrt(15) + 15)/15, 4*r2*(3 + sqrt(15))/3, 4*r2, 51*r2/4, r2*(3*sqrt(15) + 16)/4)
   @printf("大円の直径が %g のとき,乾円の直径は %g である。\n", 2r2, 2r1)
   @printf("r1 = %g;  a = %g;  b = %g;  r2 = %g;  x2 = %g;  y2 = %g\n", r1, a, b, r2, x2, y2)
   plot([0, 4r1, 4r1, 0, 0], [0, 0, a, b, 0], color=:green, lw=0.5)
   circle(r1, r1, r1)
   circle(3r1, r1, r1)
   circle(2r1, r2, r2, :blue)
   circle(x2, y2, r2, :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(r1, r1, "乾円:r1,(r1,r1)", :red, :center, delta=-delta)
       point(3r1, r1, "乾円:r1,(3r1,r1)", :red, :center, delta=-delta)
       point(2r1, r2, " 大円:r2,(2r1,r2)", :blue, :left, :vcenter)
       point(x2, y2, " 大円:r2,(x2,y2)", :blue, :left, :vcenter)
       point(0, b, " b", :green, :left, :bottom, delta=delta)
       point(4r1, a, "(4r1,a) ", :green, :right, delta=-delta)
   end  
end;

draw(133/2, true)


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« LaTeX で \item の記号を変更... | トップ |   
最新の画像もっと見る

コメントを投稿

Julia」カテゴリの最新記事