裏 RjpWiki

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

算額(その178)

2023年03月25日 | Julia

算額(その178)

愛媛県四国中央市川之江町 八幡神社
川之江高等学校の和算勉強会が奉納した「算額(和算の術)」平成21年

https://www.fureai-cloud.jp/tie/doc/view/10456/

正方形内の一つの対角線上に中心がある三個の等円を図のように描く。等円はそれぞれ外接し,そのうち二つは正方形に内接している。このとき,正方形の一辺の長さが一尺であるとき,等円の直径はいくらか。

和讃家の山口坎山が明和5年(1768)に『道中日記』で 15 通りの解法を著したということのようであるが,最もありふれた解法であろうけれども以下を。

正方形の一辺の長さを 2,等円の半径を r として,図のように記号を定め方程式を解く。
2次方程式なので中学生でも解けるのかな。

using SymPy
@syms r::positive;

eq = 2(1 - r)^2 - 4r^2
res = solve(eq)[1]
println("$res = $(res.evalf())")

   -1 + sqrt(2) = 0.414213562373095

元の単位においては,等円の直径は 4寸1分4厘2毛1糸あまりあり

using Plots

function circle(ox, oy, r, color=:red; beginangle=0, endangle=360, fill=false)
   θ = beginangle:0.1:endangle
   x = r.*cosd.(θ)
   y = r.*sind.(θ)
   if fill
       plot!(ox .+ x, oy .+ y, linecolor=color, linewidth=0.5, seriestype=:shape, fillcolor=color)
   else
       plot!(ox .+ x, oy .+ y, color=color, linewidth=0.25)
   end
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 draw(more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r = √2 - 1
   println("r = $r")
   plot([1, 1, -1, -1, 1], [-1, 1, 1, -1, -1], color=:black, lw=0.5)
   circle(0, 0, r, :yellow, fill=true)
   circle(1 - r, 1 - r, r, :red, fill=true)
   circle(r - 1, r - 1, r, :blue, fill=true)
   if more == true
       point(1 - r, 1 - r, " (1-r,1-r)", :black)
       hline!([0], color=:black, lw=0.5)
       vline!([0], color=:black, lw=0.5)
   else
      plot!(showaxis=false)
   end
end;

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

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

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