裏 RjpWiki

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

算額(その1187)

2024年08月06日 | Julia

算額(その1187)

(10) 京都市中京区三条大宮西二筋目下ル 武信稲荷神社 嘉永6年(1853)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.
キーワード:円1個,直角三角形,正方形,斜線

直角三角形の中に,正方形と斜線で区切られた領域に全円を容れる。鈎,股が 21 寸,28 寸のとき,全円の直径はいかほどか。

鈎,股を「鈎」,「股」
正方形の一辺の長さを b,股上の正方形の頂点座標を (a, 0); b = 股 - a
全円の半径と中心座標を r, (a + r, b - r)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms 鈎::positive, 股::positive, a::positive, r::positiv
b = 股 - a
eq1 = (鈎 - b)/b - 鈎/股
eq2 = dist2(股, 鈎, a, 0, a + r, b - r, r)
res = solve([eq1, eq2], (r, a))[1]  # 1 of 2

   (股*鈎*(2*股 + 鈎 - sqrt(2*股^2 + 2*股*鈎 + 鈎^2))/(2*(股^2 + 2*股*鈎 + 鈎^2)), 股^2/(股 + 鈎))

鈎,股が 21 寸,28 寸のとき,全円の直径は 5.03612957434534 寸である。
ちなみに,正方形の一辺の長さは 12 寸である。

2res[1](鈎 => 21, 股 => 28).evalf() |> println
(股 - res[2])(鈎 => 21, 股 => 28).evalf() |> println

   5.03612957434534
   12.0000000000000

function draw(鈎, 股, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r, a) = (股*鈎*(2*股 + 鈎 - sqrt(2*股^2 + 2*股*鈎 + 鈎^2))/(2*(股^2 + 2*股*鈎 + 鈎^2)), 股^2/(股 + 鈎))
   b = 股 - a
   @printf("鈎,股が %g, %g のとき,円の直径は %g である。\n", 鈎, 股, 2r)
   @printf("正方形の一辺の長さは %g である。\n", b)
   plot([0, 股, 股, 0], [0, 0, 鈎, 0], color=:green, lw=0.5)
   plot!([a, 股, 股, a, a], [0, 0, b, b, 0], color=:blue, lw=0.5)
   circle(a + r, b - r, r)
   segment(a, 0, 股, 鈎, :magenta)
   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(a, b, "(a,b) ", :blue, :right, :vcenter)
       point(a + r, b - r, "全円:r\n(a+r,b-r)", :red, :center, :bottom, delta=delta)
       point(股, 鈎, "(股,鈎) ", :green, :right, :vcenter)
   end
end;

draw(21, 28, true)


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

コメントを投稿

Julia」カテゴリの最新記事