裏 RjpWiki

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

算額(その1147)

2024年07月15日 | Julia

算額(その1147)

一〇八 加須市騎西町 玉敷神社 大正4年(1915)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:正三角形,正方形

交差する大小の正三角形の中に 3 個の正方形を容れる。大きい正三角形の一辺の長さが 10 寸のとき,正方形の一辺の長さはいかほどか。

大きい正三角形の一辺の長さを 2a
正方形の一辺の長さを 2b
下にある正方形の左右の頂点を通る,大きい正三角形の斜辺と並行な直線が作る正三角形は上にある正方形を内包する正三角形と合同である。下に新たに作った正三角形の底辺の長さを 2c とおく。
eq1 は b, c のみを含む関係式,eq2 は a, b, c を含む関係式である。両者を併せて b, c を求めれば,それぞれは a のみを含む式になる。

include("julia-source.txt")

using SymPy

@syms a::positive, b::positive, c::positive
eq1 = 2b/(c - b) - √Sym(3)
eq2 = ((√Sym(3)a - 2b)/√Sym(3))/2 - c;

res = solve([eq1, eq2], (b, c));
res[b] |> simplify |> println
res[c] |> simplify |> println

   a*(-1 + sqrt(3))/4
   a*(sqrt(3) + 3)/12

正方形の一辺の長さは,大正三角形の一辺の長さの (-1 + sqrt(3))/4 倍である。
大正三角形の一辺の長さが 10 寸のとき,正方形の一辺の長さは 1.830127018922193 寸である。

function draw(a, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   s3 = √3
   b = a*(s3 - 1)/4
   c = a*(s3 + 3)/12
   @printf("大正三角形の一辺の長さが %g のとき,正方形の一辺の長さは %g である。\n", 2a, 2b)
   plot([a, 0, -a, a], [0, s3*a, 0, 0], color=:blue, lw=0.5)
   y = s3*a
   x = (y - 2b)/s3
   plot!([x, 0, -x, x], [y, 2b, y, y], color=:green, lw=0.5)
   rect(-b, 0, b, 2b, :red)
   rect(c - b, y - 2b, c + b, y, :red)
   rect(b - c, y - 2b, -b -c, y, :red)
   segment(c, 0, 0, s3*c, :gray80)
   segment(-c, 0, 0, s3*c, :gray80)
   if more
       delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
       hline!([0], color=:gray80, lw=0.5)
       vline!([0], color=:gray80, lw=0.5)
       point(b, 0, " b", :red, :left, :bottom, delta=delta/2)
       point(c, 0, " c", :black, :left, :bottom, delta=delta/2)
       point(a, 0, " a", :blue, :left, :bottom, delta=delta/2)
       point(0, 2b, " 2b", :red, :left, delta=-delta/2)
       point(0, s3*c, " √3c", :black, :left, :vcenter)
       point(0, s3*a, "√3a", :blue, :center, :bottom, delta=delta/2)
       point(c, s3*a, "(c,√3a)", :blue, :center, :bottom, delta=delta/2)
       point(2c, s3*a, "(2c,√3a)", :blue, :center, :bottom, delta=delta/2)
       point(c + b, s3*a - 2b, "(c+b,√3a-2b)", :red, :left, delta=-delta)
   end
end;


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

コメントを投稿

Julia」カテゴリの最新記事