裏 RjpWiki

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

算額(その701)

2024年02月17日 | Julia

算額(その701)

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

https://gunmawasan.web.fc2.com/files/sangak-corner/atago-3s.jpg

長方形の中に甲円 4 個,乙円 6 個が入っている。
乙円の直径が寸のとき,菱形の短い方の対角線の長さはいかほどか。
注:乙円の直径の数が欠損しているが,「一」である。

長方形の長辺と短辺の長さを 2a, 2b とする。
甲円の半径と中心座標を r1, (a - r1, b - r1)
乙円の半径と中心座標を r2, (x2, b - r2), (a - r2, 0)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms a::positive, b::positive, r1::positive,
     r2::positive, x2::positive
r2 = 1//2
eq1 = r2/x2 - r1/(a - r1)
eq2 = (r1 - r2)^2 + (b - r1)^2 - (r1 + r2)^2
eq3 = (a - r1 - x2)^2 + (r1 - r2)^2 - (r1 + r2)^2
eq4 = -2*a*r2*x2 - b*r2^2 + b*x2^2 + 4*r2^2*x2 # 甲円の中心から菱形の辺までの距離(の分子)

res = solve([eq1, eq2, eq3, eq4], (a, b, r1, x2));
res[4]

   (sqrt(6)/3 + 3, 5/2, 7/2 - sqrt(6), 1/2 + sqrt(6)/3)

4 組の解が得られるが,最後のものが適解である。

菱形の短い方の対角線の長さは長方形の短辺の長さに等しく,5 寸である。
術でも,「乙円の径を5倍する」となっており,問で欠けている乙円の直径の数値は 1 であることがわかる。

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

a = 3.8165;  b = 2.5;  r1 = 1.05051;  x2 = 1.3165

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r2 = 1//2
   (a, b, r1, x2) = (sqrt(6)/3 + 3, 5/2, 7/2 - sqrt(6), 1/2 + sqrt(6)/3)
   @printf("菱形の短い方の対角線の長さ = %g\n", 2b)
   @printf("a = %g;  b = %g;  r1 = %g;  x2 = %g\n", a, b, r1, x2)
   plot([a, a, -a, -a, a], [-b, b, b, -b, -b], color=:magenta, lw=0.5)
   plot!([a - 2r2, 0, 2r2 - a, 0, a - 2r2], [0, b, 0, -b, 0], color=:blue, lw=0.5)
   circle4(a - r1, b - r1, r1, :orange)
   circle4(x2, b - r2, r2)
   circle(a - r2, 0, r2)
   circle(r2 - a, 0, r2)
   if more
       delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
       hline!([0], color=:black, lw=0.5)
       vline!([0], color=:black, lw=0.5)
       point(a, 0, " a", :blue, :left, :bottom, delta=delta/2)
       point(a - 2r2, 0, "a-2r2  ", :blue, :right, :bottom, delta=delta/2)
       point(a - r2, 0, "a-r2", :blue, :center, delta=-delta/2)
       point(0, b, " b", :blue, :left, :bottom, delta=delta/2)
       point(a - r1, b - r1, "甲円:r1\n(a-r1,b-r1)", :black, :center, delta=-2delta)
       point(x2, b - r2, " 乙円:r2,(x2,b-r2)", :red, :left, :vcenter)
   end
end;

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

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

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