裏 RjpWiki

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

算額(その313)

2023年07月05日 | Julia

算額(その313)

「三重県に現存する算額の研究」福島完(2007/2/13)
https://mie-u.repo.nii.ac.jp/?action=repository_uri&item_id=7216
三重県伊賀市 永保寺 弘化4年(1847)

問題文5

図のように,円の中に順次,正六花径,正三角形,正方形,正三角形,正方形をいれる。
最も内側の正方形の上辺から,その正方形が内接する正三角形の頂点までの距離(隅中径; 図の AB)が 1.39883135702…であるとき,それぞれの長さを求めよ。

内側の図形から順次長さを求める。

include("julia-source.txt");

using SymPy

@syms 隅中径::positive
隅中径 = Sym(1.39883135702)
隅中径 |> println

   1.39883135702000

中方平面(小さい正方形の一辺)
@syms 中方平面::positive
eq1 = 隅中径/(中方平面/2) - sqrt(Sym(3))
中方平面 = solve(eq1, 中方平面)[1]
中方平面 = 2隅中径 / sqrt(Sym(3))
中方平面.evalf() |> println

   1.61523132105277

小三角面(小さい正三角形の一辺)
@syms 小三角面::positive
小三角面 = (隅中径 + 中方平面) * 2/sqrt(Sym(3))
小三角面.evalf() |> println

   3.48033979707944

小円ノ廻(小円の円周)
@syms 小円ノ廻::positive, 小円ノ径::positive
小円ノ径 = 小三角面/2 * (2/sqrt(Sym(3))) * 2
小円ノ廻 = 小円ノ径 * PI
小円ノ廻.evalf() |> println

   12.6252762225235

大方平面(大きい正方形の一辺 =  小円ノ径)
@syms 大方平面
大方平面 = 小円ノ径
大方平面.evalf() |> println

   4.01875023743036

大三角面(大きい正三角形の一辺)
@syms 大三角面
eq2 = (大方平面/2 * sqrt(Sym(3)) + 大方平面) * 2/sqrt(Sym(3)) - 大三角面
大三角面 = solve(eq2, 大三角面)[1]
大三角面 |> println

   8.65920330020295

六角ノ面(正六角形の一辺)
@syms 六角ノ面
六角ノ面 = 大三角面/2 * 2/sqrt(Sym(3))
六角ノ面.evalf() |> println

   4.99939335633987

矢(外円と正六角形の一辺が作る弦と外円との距離)
@syms 矢
矢 = 六角ノ面 - (六角ノ面/2 * sqrt(Sym(3)))
矢.evalf() |> println

   0.669791706238393

同外径(大三角面外径;大きい正三角形の外接円の直径)
@syms 同外径
同外径 = 2六角ノ面
同外径.evalf() |> println

   9.99878671267973

外円ノ廻(外円の円周)
@syms 外円ノ廻
外円ノ廻 = 同外径 * PI
外円ノ廻.evalf() |> println

   31.4121148813659

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r = 9.99878671267973 / 2  # 外円の半径
   x = zeros(7)
   y = zeros(7)
   for i = 1:7
       θ = 60(i - 1) + 30
       x[i] = r*cosd(θ)
       y[i] = r*sind(θ)
   end
   plot()
   circle(0, 0, r)
   plot!(x, y, color=:blue, lw=0.5)
   plot!(x[[2, 4, 6, 2]], y[[2, 4, 6, 2]], color=:green, lw=0.5)
   rect(大方平面/2, y[6], -大方平面/2, y[6] + 大方平面, :orange)
   delta = y[6] + 大方平面/2
   circle(0, delta, 小円ノ径/2)
   factor = 小円ノ径 / 同外径
   plot!(factor .* x[[2, 4, 6, 2]], factor .* y[[2, 4, 6, 2]] .+ delta,
       color=:green, lw=0.5)
   rect(中方平面/2, factor * y[6] + delta,
       -中方平面/2, factor * y[6] + delta + 中方平面, :magenta)
   if more
       point(0, 小円ノ径/2 + delta, " A", :red, :left, :bottom)
       point(0, factor * y[6] + delta + 中方平面, " B", :red, :left, :bottom)
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;


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

コメントを投稿

Julia」カテゴリの最新記事