裏 RjpWiki

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

算額(その2038)

2024年08月23日 | Julia

算額(その2038)

(15) 京都府夜久野町字額田 妙竜寺 明治20年(1887)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.
キーワード:円5個,外円,菱形

大円の中に菱形 1 個,小円 4 個を容れる。菱形の対角線の短いほうが 10 寸,小円の直径が 4 寸のとき,大円の直径はいかほどか。

菱形の対角線を 2a, 2b; a > b
大円の半径と中心座標を R, (0, 0)
小円の半径と中心座標を r, (r, R - b + r), (r, R - b - r)
とおき,以下の方程式を解く。

include("julia-source.txt");

using SymPy
@syms R::positive, r::positive, a::positive, b::positive
eq1 = dist2(0, R, sqrt(R^2 - (R - b)^2), R - b, r, R - b + r, r)
res = solve(eq1, R)[2] |> factor
res |> println

   (b^2 - 2*b*r + 2*r^2)^2/(2*b*(-b + 2*r)^2)

2res(b => 10/2, r => 4/2) |> println

   33.8000000000000

菱形の対角線の短いほうが 10 寸,小円の直径が 4 寸のとき,大円の直径は 33.8 寸である。

「答」は 「33.3 寸余」である。「術」が読み切れない。

function draw(b, r, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   R = (b^2 - 2*b*r + 2*r^2)^2/(2*b*(-b + 2*r)^2)
   a = sqrt(R^2 - (R - b)^2)
   @printf("菱形の対角線の短いほうが %g,小円の直径が %g のとき,大円の直径は %g である。\n", 2b, 2r, 2R)
   @printf("a = %g;  b = %g;  r = %.15g;  R = %.15g\n", a, b, r, R)
   plot([a, 0, -a, 0, a], [R - b, R, R - b, R - 2b, R - b], color=:green, lw=0.5)
   circle(0, 0, R)
   circle2(r, R - b + r, r, :blue)
   circle2(r, R - b - r, r, :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(r, R - b + r, " r,(r,R-b+r)", :black, :left, delta=-delta/2)
       point(r, R - b - r, " r,(r,R-b-r)", :black, :left, :bottom, delta=delta/2)
       point(0, R, " R", :red, :left, :bottom, delta=delta/2)
       point(a, R - b, " (a,R-b)", :green, :left, :vcenter)
       point(0, R - 2b, "R-2b", :green, :center, delta=-delta)
   end
end;

draw(10/2, 4/2, true)


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

コメントを投稿

Julia」カテゴリの最新記事