裏 RjpWiki

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

算額(その518)

2023年11月28日 | Julia

算額(その518)

村松茂清: 『算俎』,寛文3年(1663)
一関市博物館>>和算に挑戦>>平成23年度出題問題&解答例>>平成23年度出題問題(2)[中級問題]

https://www.city.ichinoseki.iwate.jp/museum/wasan/h23/normal.html

正三角形内に等円 3 個が内接している。等円の直径が 10 のとき,黒積 A, B の面積を求めよ。

等円の半径が r,正三角形の一辺の長さが 2a とする。

include("julia-source.txt");

using SymPy
@syms a, r
eq = r - (a - r)/sqrt(Sym(3))
a = solve(eq, a)[1]
a |> println

   r*(1 + sqrt(3))

正三角形の一辺の長さは等円の半径の 1 + √3 倍である。

   r = 5;  a = 13.6603;  等円の直径 = 10;  正三角形の一辺の長さ = 27.3205

黒積 A は,「底辺 (a - r),高さ r の直角三角形から,半径 r の円の面積の 1/6 を引いたもの」の 2 倍である。
-r^2*(pi - 3*sqrt(3))/3 = (√3 - π/3)r^2

2((a - r)r/2 - PI*r^2/6) |> factor |> println

   -r^2*(pi - 3*sqrt(3))/3

黒積 B は,3個の等円の中心を結んでできる正三角形の面積から,半径が r の円の面積の半分(円/6 の 3 個分)を引いたものである。
-r^2*(pi - 2*sqrt(3))/2 = (√3 - π/2)r^2

2r * √Sym(3)r/2 - PI*r^2/2 |> factor |> println

   -r^2*(pi - 2*sqrt(3))/2

function black(r, a)
   x = vcat([cosd(θ)r for θ in 240:300], [cosd(θ)r + r for θ in 120:180], [cosd(θ)r - r for θ in 0:60])
   y = vcat([sind(θ)r + (1 + √3)r for θ in 240:300], [sind(θ)r + r for θ in 120:180], [sind(θ)r + r for θ in 0:60])
   plot!(x, y, color=:black, lw=0.5, seriestype=:shape, fillcolor=:black, alpha=0.5)
   x = vcat([cosd(θ)r + r for θ in 270:390], [a, r])
   y = vcat([sind(θ)r + r for θ in 270:390], [0, 0])
   plot!(x, y, color=:black, lw=0.5, seriestype=:shape, fillcolor=:black, alpha=0.5)
end;

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r = 10//2
   a = (1 + √3)r
   @printf("r = %g;  a = %g;  等円の直径 = %g;  正三角形の一辺の長さ = %g\n", r, a, 2r, 2a)
   plot([a, 0, -a, a], [0, √3a, 0, 0], color=:blue, lw=0.5)
   circle(r, r, r)
   circle(-r, r, r)
   circle(0, (1 + √3)r, r)
   black(r, a)
   plot!([r, 0, -r, r], r .+ [0, √3r, 0, 0], color=:green, lw=0.5)
   plot!([r, r, a, r], [0, r, 0, 0], color=:magenta, lw=0.5)
   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(0.15r, 1.5r, "B", :black, mark=false)
       point(1.6r, 0.5r, "A", :black, mark=false)
       point(a, 0, " a", :blue, :left, :bottom, delta=delta/2)
       point(0, √3a, " √3a", :blue, :left, :vcenter)
       point(0, (1 + √3)r, " (1+√3)r", :red, :left, :vcenter)
       point(r, r, " (r,r)", :red, :left, :vcenter)
   end
end;

 


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

コメントを投稿

Julia」カテゴリの最新記事