裏 RjpWiki

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

算額(その582)

2023年12月23日 | Julia

算額(その582)

長崎市 鎮西大社諏訪神社 明治20年(1887)
米光丁: 長崎県の和算の概説

http://hyonemitsu.web.fc2.com/Nagasakiwasan.pdf

問題 5. 外円の中に中円,小円を入れる。中円,小円の直径が40寸,20寸のとき,外円の直径はいかほどか。

算額(その334)で小生が最初に考えたものと図形的には同じである。
これも算額にはよくあることであるが,算額の図と実際に得られた解に基づいて描いた図の乖離に驚く。

外円の半径と中心座標を r, (0, 0)
小円の半径と中心座標を r1, (r1, y1)
中円の半径と中心座標を r2, (r2, y2)
とおき,以下の連立方程式を解く。

最初,y2 を negative としていたので,解が得られない。実に,y2 は 0 である。
図を描いてみれば,問題文を見ただけで解けたのにと悔しくなる。

include("julia-source.txt");

using SymPy

@syms r::positive, r1::positive, y1::positive, r2::positive, y2;

(r1, r2) = (20, 40) .// 2
eq1 = (r1 - r2)^2 + (y1 - y2)^2 - (r1 + r2)^2
eq2 = r1^2 + y1^2 - (r - r1)^2
eq3 = r2^2 + y2^2 - (r - r2)^2

res1 = solve([eq1, eq2, eq3], (r, y1, y2))

   1-element Vector{Tuple{Sym, Sym, Sym}}:
    (40, 20*sqrt(2), 0)

外円の直径は中円の直径の2倍,80 寸である。

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2) = (20//2, 40//2)
   (r, y1, y2) = (40, 20*sqrt(2), 0)
   @printf("外円の直径 = %g\n", 2r)
   plot()
   circle(0, 0, r)
   circle(r1, y1, r1, :blue)
   circle(-r1, y1, r1, :blue)
   circle(r2, y2, r2, :orange)
   circle(-r2, y2, r2, :orange)
   if more
       delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
       hline!([0], color=:black, lw=0.5)
       vline!([0], color=:black, lw=0.5)
       point(r1, y1, "小円:r1\n(r1,y1)", :blue, :center, :top, delta=-delta/2)
       point(r2, y2, "中円:r2,(r2,y2)", :black, :center, :top, delta=-delta/2)
       point(r, 0, "r ", :red, :right)
   end
end;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村