裏 RjpWiki

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

和算の心(その002)

2023年05月19日 | Julia

和算の心(その002)

算額の問題を解くための定石をまとめておく。

山形県南原町 熊野神社
山形算額勝負-湯殿山神社を目指せ-
https://www.sci.yamagata-u.ac.jp/wasan/pdf/20180711SSEP.pdf

直線の上に直径 9寸の大円,直径 4寸の小円があり,互いに接している。大円と小円の接点間の距離(子*1)はいくつか。
注1: 和算では変数名として,子,丑,寅... を使う。

大円と小円の半径および中心の x 座標をそれぞれ r_big,r_small, x_big,x_small とおく。二円が外接することに関する方程式を解く。

include("julia-source.txt")

using SymPy

@syms r_big::positive, x_big::positive, r_small::positive, x_small::positive, ne::positive

eq = ne^2 + (r_big - r_small)^2 - (r_big + r_small)^2
res = solve(eq, ne)[1]
println("距離(子) = $(res)")

r_big = 9//2
r_small = 4//2
距離 = 2*sqrt(r_big)*sqrt(r_small)
距離 |> println

   6.0

求める距離は 2√(大円の半径 * 小円の半径) である。すなわち,直径 9寸の大円,直径 4寸の小円の場合は 2√(4.5*2) = 6 である。元の単位では 6 寸。

function draw(more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r_big, r_small) = (9, 4) .// 2
   x_big = 0
   ne = 2√(r_big * r_small)
   x_small = x_big + ne
   @printf("r_big = %.7f;  r_small = %.7f\n", r_big, r_small)
   @printf("子 = %.7f\n", 2√(r_big * r_small))
   plot()
   circle(0, r_big, r_big)
   circle(ne, r_small, r_small, :blue)
   hline!([0], color=:black, lw=0.5)
   if more == true
       point(0, r_big, " r_big")
       point(x_small, r_small, "(x_small,r_small)", :blue, :center)
       point(x_small, 0, "子\n", :blue, :center, :bottom)
       vline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;


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

コメントを投稿

Julia」カテゴリの最新記事