裏 RjpWiki

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

算額(その712)

2024年02月20日 | Julia

算額(その712)

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

等脚台形の中に正方形と 3 個の等円が入っている。上底の長さが 3 寸のとき,下底の長さはいかほどか。

上底,下底の長さをそれぞれ 2b, 2a とする。
正方形の一辺の長さを 2c
等円の半径と中心座標を r, (0, 2c + r), (c + r, r)
台形の高さは 2c + 2r
とおいて,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms a::positive, b::positive,
     c::positive, r::positive
h = 2c + 2r
eq1 = (c + r)^2 + 4c^2 - 4r^2
eq2 = dist(a, 0, b, h, 0, 2c + r) - r^2
eq3 = dist(a, 0, b, h, c + r, r) - r^2
res = solve([eq1, eq2, eq3], (a, c, r)) 

   1-element Vector{Tuple{Sym, Sym, Sym}}:
    (69*b/5, 9*b/5, 3*b)

下底の長さは上底の長さの 69/5 倍,
正方形の一辺の長さは上底の長さの 9/5 倍,
等円の直径は上底の長さの 3 倍である。

b = 3/2
2b .*(69/5, 9/5, 3)

   (41.400000000000006, 5.4, 9.0)

上底の長さが 3 寸のとき,下底の長さは 41.4 寸である。
「答」では 27.6 寸となっている。
「術」では,「上底の 13.8 倍」と書いている。それに従うと 3✕13.8 = 41.4 寸になる。答えは 2✕13.8 = 27.6 寸 と書いてしまったのであろう。

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   b = 3//2
   (a, c, r) = (69*b/5, 9*b/5, 3*b)
   @printf("上底の長さ = %g;  下底の長さ = %g;  正方形の一辺の長さ = %g;  等円の直径 = %g\n", 2b, 2a, 2c, 2r)
   h = 2c + 2r
   #@printf("r1 = %g;  x1 = %g;  r2 = %g;  x2 = %g;  r3 = %g\n", r1, x1, r2, x2, r3)
   plot([a, b, -b, -a, a], [0, h, h, 0, 0], color=:green, lw=0.5)
   circle.([1, -1].*(c + r), r, r)
   circle(0, 2c + r, r)
   rect(-c, 0, c, 2c, :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(c, 0, " c", :blue, :left, :bottom, delta=delta/2)
       point(0, 2c, " 2c", :blue, :left, delta=-delta/2)
       point(a, 0, " a", :green, :left, :bottom, delta=delta/2)
       point(b, h, " (b,h)", :green, :center, :bottom, delta=delta)
       point(c + r, r, "(c+r,r)", :red, :center, delta=-delta/2)
       point(0, 2c + r, " 2c+r", :red, :left, :vcenter)
   end
end;


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

コメントを投稿

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

Julia」カテゴリの最新記事