裏 RjpWiki

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

算額(その1542)

2025年01月15日 | Julia

算額(その1542)

四十 埼玉県熊谷市玉井 玉井大神社 嘉永元年(1848)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

山口正義:やまぶき 第 4 号
https://yamabukiwasan.sakura.ne.jp/ymbk4.pdf

キーワード:正五角形,面積分割
#Julia, #SymPy, #算額, #和算

正五角形の一辺が 1 寸のとき,この面積を三等分するときの截面(一辺の分割した長さ;図参照)はいかほどか。

計算しなくても,図を見ればわかる。
四角形OAEB = 五角形OECDE' ならば,三角形OBE が三角形OCE の二倍,すなわち CE が BC の 1/3 である。

あえて計算すると,以下のようになる。
正五角形が内接する円の半径を r,一辺の長さを「五角面」,截面を「截面」とおき,以下の連立方程式を解く。

include("julia-source.txt");
# # julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

@syms r, x, y, 五角面
s18 = Sym(18)
s36 = Sym(36)
r = 五角面/2sind(s36)
S = r^2*sind(s36)*cosd(s36)  # 正五角形の面積/5
s1 = area([0 0; r*cosd(s18) r*sind(s18); x y])  # 面積/5 の更に 2/3
s2 = area([0 0; x y; r*sind(s36) -r*cosd(s36)])  # 面積/5 の更に 1/3
eq1 = s1 - 2S/3  # S/5 + s1 = S/5 + s2
eq2 = s2 - S/3;
res = solve([eq1, eq2], (x, y));

@syms d
ans_x = apart(res[x]) |> simplify
ans_x |> println

    五角面*(sqrt(5) + 5)/12

ans_y = apart(res[y]) |> simplify
ans_y|> println

    -五角面*(5*sqrt(2) + 3*sqrt(10))*sqrt(sqrt(5) + 5)/120

截面 = sqrt((r*sind(s36) - ans_x)^2 + (-r*cosd(s36) - ans_y)^2) |> simplify
截面 |> println
截面(五角面 => 1).evalf() |> println

    sqrt(10)*sqrt(-15*sqrt(5 - sqrt(5))*sqrt(sqrt(5) + 5) - 6*sqrt(5)*sqrt(5 - sqrt(5))*sqrt(sqrt(5) + 5) + 20*sqrt(5) + 110)*sqrt(五角面^2)/(30*sqrt(5 - sqrt(5)))
    0.333333333333333

截面は五角面の 1/3 である。

function draw(五角面, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r = 五角面/2sind(36)
    x = 五角面*(√5 + 5)/12
    y = -五角面*(5√2 + 3√10)*sqrt(√5 + 5)/120
    (x1, y1) = r.*(sind(36), -cosd(36))
    (x2, y2) = r.*(cosd(18), sind(18))
    length = sqrt((x - x1)^2 + (y - y1)^2)
    @printf("正五角形の一辺の長さが %g のとき,面積を 3 分割するときの\"截面\"は %g である。\n", 五角面, length)
    plot([-x, 0, x], [y, 0, y], color=:blue, lw=0.5, showaxis=false)
    polygon(0, 0, r, 5, color=:red)
    segment(0, 0, 0, r, :blue)
    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(x, y, " (x,y)", :blue, :left, :vcenter)
        point(x1, y1, " (x1,y1)", :red, :left, :bottom, delta=delta/2)
        dimension_line(-x1, y1 - delta, x1, y1 - delta, "五角面", :red, :center, delta=-2delta)
        dimension_line(-x1 - 1.5delta, y1 - delta/2, -x - 1.5delta, y - delta/2, "截面", :magenta, :right)
        segment(0, 0, -x2, y2, :gray80)
        segment(0, 0, -x1, y1, :gray80)
        segment(0, 0, x1, y1, :gray80)
        point(0, 0, " O", :blue, :left, :bottom, delta=delta/2)
        point(0, r, "A", :blue, :center, :bottom, delta=delta/2)
        point(-x2, y2, "B ", :blue, :right, :vcenter)
        point(-x1, y1, " C", :blue, :left, :bottom, delta=delta/2)
        point(x1, y1, "D ", :blue, :right, :bottom, delta=delta/2)
        point(-x, y, "E  ", :blue, :right, :bottom, delta=delta/2)
        point(x, y, "E' ", :blue, :right, delta=-delta/2)
    end
end;

draw(1, true)


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

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Julia」カテゴリの最新記事