裏 RjpWiki

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

算額(その1229)

2024年08月19日 | Julia

算額(その1229)

(9) 兵庫県姫路市井ノ口宮山 荒川神社 明治3年(1870)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.
キーワード:円2個,直角三角形,正方形

「問」は簡単で,「図のように大円の直径が 9 寸のとき,小円の直径はいかほどか」

これだけでは小円が内接する直角三角形大きさが定まらないが,特に断らない限り「直角三角形の辺(鈎,股,弦)の比は 3:4:5 である」ということであろう。

鈎 = 大円の直径
股 = 4鈎/3
弦 = 5鈎/3
そして,直角三角形に内接する円の直径は,「鈎 + 股 - 弦」である。
簡約化すると小円の直径は大円の直径の 2/3 である。
よって,大円の直径が 9 寸のとき,小円の直径は 6 寸である。

using SymPy
@syms 大円の直径, 鈎, 股, 弦
鈎 = 大円の直径
小円の直径 = (鈎 + 4鈎/3 - 5鈎/3)
小円の直径 |> println

   2*大円の直径/3

図を描くために直角三角形の頂点と,小円の中心座標を求める。

include("julia-source.txt");

using SymPy

@syms r1::positive, x::positive, y::negative,
     r2::positive, x2::positive, y2::positive,
     鈎::positive
鈎 = 2r1
eq1 =dist2(鈎/√Sym(2), 鈎/√Sym(2), x, y, x2, y2, r2)
eq2 =dist2(0, 0, x, y, x2, y2, r2)
eq3 =dist2(0, 0, 鈎/√Sym(2), 鈎/√Sym(2), x2, y2, r2)
eq4 = (x^2 + y^2) - (5*鈎/3)^2
eq5 = ((x - 鈎/√Sym(2))^2 + (y - 鈎/√Sym(2))^2) - (4*鈎/3)^2
res = solve([eq1, eq2, eq3, eq4, eq5], (x, y, r2, x2, y2))[1]  # 1 of 2

   (7*sqrt(2)*r1/3, -sqrt(2)*r1/3, 2*r1/3, sqrt(2)*r1, sqrt(2)*r1/3)

直角三角形の頂点座標 (7√2r1/3, -√2r1/3)
小円の中心座標 (√2r1, √2r1/3)

function draw(r1, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   鈎 = 2r1
   (x, y, r2, x2, y2) = (7√2r1/3, -√2r1/3, 2r1/3, √2r1, √2r1/3)
   plot([0, 鈎/√2, 0, -鈎/√2, 0], [0, 鈎/√2, 2鈎/√2, 鈎/√2, 0], color=:green, lw=0.5)
   plot!([-鈎/√2, -x, 0, x, 鈎/√2], [鈎/√2, y, 0, y, 鈎/√2], color=:green, lw=0.5)
   circle(0, 鈎/√2, r1, :blue)
   circle2(x2, y2, r2)
   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(0, 鈎/√2, "大円:r1,(0,鈎/√2)", :blue, :center, delta=-delta)
       point(x2, y2, "小円:r2\n(x2,y2)", :red, :center, delta=-delta)
       point(x, y, "(x,y)", :green, :left, :bottom, delta=delta)
       point(鈎/√2, 鈎/√2, "(鈎/√2,鈎/√2)", :green, :left, :bottom, delta=delta)
       point(0, 2鈎/√2, "(0,2鈎/√2)", :green, :left, :bottom, delta=delta)
   end
end;

draw(9/2, true)


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

コメントを投稿

Julia」カテゴリの最新記事