裏 RjpWiki

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

算額(その71)

2022年12月22日 | Julia

算額(その71)

福島県田村郡三春町山中 田村大元神社 明治34年(1901)5月
http://www.wasan.jp/fukusima/tamuradaigen.html

矩形内に対角線に接して甲円 2 個,乙円 1 個がある。甲円の径が 3 寸のとき,乙円の径はいかほどか。

図のように記号を定め,方程式を解く。

using SymPy
@syms r1::positive, r2::positive;

算額では矩形を「直」と書いているが,これは,鉤 = 3k,股 = 4k,弦 = 5k の直角三角形を 2 つ組み合わせたものである。

大円の半径 r1 は「鉤股弦 ABC と内接円の定理」により,r1*(3 + 4 - 5)/2 = 3 を解けばよい。

r1 = solve(r1*(3 + 4 - 5)//2 - 3)[1]

    3

小円の半径 r2 は,大円と小円が外接することを用いて (x1//2-r1)^2 + (y1-r2-r1)^2 = (r1 + r2)^2 を解けばよい。(x1, y1) は (12, 9) である。

(x1, y1) = (12, 9)
r2 = solve((x1//2-r1)^2 + (y1-r2-r1)^2 - (r1 + r2)^2)[1]

    2

using Plots

function circle(ox, oy, r, color=:red; beginangle=0, endangle=360)
  θ = beginangle:0.1:endangle
  x = r.*cosd.(θ)
  y = r.*sind.(θ)
  plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5)
end;

function point(x, y, string="", color=:green, position=:left, vertical=:top; mark=true)
   mark && scatter!([x], [y], color=color, markerstrokewidth=0)
   annotate!(x, y, text(string, 10, position, color, vertical))
end;

function segment(x1, y1, x2, y2, color=:black; linestyle=:solid, linewidth=0.5)
   plot!([x1, x2], [y1, y2], color=color, linestyle=linestyle, linewidth=linewidth)
end;

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="")#, fontfamily="IPAMincho")
   # 矩形の左下角を原点,右上角の座標 (x1, y1)として図を描く
    (x1, y1) = (12, 9)
    (r1, r2) = (3, 2)
    plot([0, x1, x1, 0, 0], [0, 0, y1, y1, 0], color=:black, showaxis=false)
    segment(0, 0, x1, y1)
    segment(0, y1, x1, 0)
    circle(r1, r1, r1)
    circle(x1-r1, r1, r1)
    circle(x1/2, y1-r2, r2, :blue)
   if more
       println("r1 = $r1;  r2 = $r2")
       plot!(xlims=(-0.5, x1+0.5), ylims=(-0.5, y1+0.5), showaxis=true)
       point(0, y1, "A ", :black, :right)
       point(0, 0, "B ", :black, :right)
       point(x1, 0, "C ", :black, :right)
       point(r1, r1, "(r1, r1)", :red, :center)
       point(x1/2, y1-r2, "(x1/2, y1-r2)", :blue, :center)
   end
end;

   r1 = 3;  r2 = 2

 


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

コメントを投稿

Julia」カテゴリの最新記事