裏 RjpWiki

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

算額(その328)

2023年07月15日 | Julia

算額(その328)

埼玉県吉見町 安楽寺 文政5年(1822)
http://www.wasan.jp/saitama/anrakuji.html

菱形の中に直径の同じ 4 個の円を入れる。菱長(長い方の対角線)の二乗と菱横(短い方の対角線)の二乗の和が 400歩,外積(菱形の面積から 4 個の円の面積の和を除いた面積; 図で灰色の部分の面積)が 45.44 歩である。
菱長,菱横,円の直径,菱面(菱形の一辺の長さ)を求めよ。

菱長,菱横,円の直径,菱面 を 2a, 2b, 2r とおく。

方程式を解く前に,ここで用いられている円積率(π/4 の近似値,つまり円の面積 ≒ 円積率 * 直径の二乗)は当時広く採用されていた 0.75(すなわち π ≒ 3 とする)ではないので,採用した円積率がいくつなのか調べていく途中で,「吉田光由『塵劫記』(1627)が3.16を使っている」という記述を見つけた(https://www.ndl.go.jp/math/s1/c4.html)。つまり,3.16/4 = 0.79 である。
これによれば「外積が 45.44 歩」という数値の意味がわかる。

a > b なので 2 組目のものが適解である。
すなわち,菱長 = 16寸,菱横 = 12寸, 円径の直径 = 4寸,菱面 = 10寸 である。

include("julia-source.txt");

using SymPy

@syms a::positive, b::positive, r::positive, 菱面::positive;

円積率 = 0.79  # = 3.16/4
eq1 = (2a)^2 + (2b)^2 - 400
eq2 = a + b - sqrt(a^2 + b^2) - 2r
eq3 = 2a*b - 4(円積率*(2r)^2) - 45.44
eq4 = a^2 + b^2 - 菱面^2

res = solve([eq1, eq2, eq3, eq4], (a, b, r, 菱面))

   2-element Vector{NTuple{4, Sym}}:
    (6.00000000000000, 8.00000000000000, 2.00000000000000, 10.0000000000000)
    (8.00000000000000, 6.00000000000000, 2.00000000000000, 10.0000000000000)

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (a, b, r, 菱面) = (8, 6, 2, 10)
   plot([a, 0, -a, 0, a], [0, b, 0, -b, 0], linecolor=:black, linewidth=0.5, seriestype=:shape, fillcolor=:gray80)
   circlef(r, r, r, :red2)
   circlef(-r, r, r, :red2)
   circlef(r, -r, r, :red2)
   circlef(-r, -r, r, :red2)
   circle4(r, r, r, :black)
   if more
       point(a, 0, "a", :green, :left, :bottom)
       point(0, b, "   b", :green, :left, :center)
       point(r, r, "      (r,r)", :black, :left, :center)
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;


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

コメントを投稿

Julia」カテゴリの最新記事