裏 RjpWiki

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

算額(その1450)

2024年12月08日 | Julia

算額(その1450)

算額(その87)再掲

二本松市杉沢 愛宕神社 奉納年・奉納者は不明
http://www.wasan.jp/fukusima/atago.html

街角の数学 Street Wasan ~落書き帳「○△□」~ 181. 算額復元第1号
http://streetwasan.web.fc2.com/math16.8.31.html

キーワード:円1個,外円,正三角形2個
#Julia, #SymPy, #算額, #和算

団扇の中に内接する正三角形 3 個を容れる。小さい正三角形の一辺の長さが 1 寸のとき,大きい正三角形の一辺の長さはいかほどか。

外円の半径と中心座標を R, (0, 0)
小さい正三角形の一辺の長さを a
大きい正三角形の一辺の長さを b
とおき,以下の方程式を解き R を求める。
求める答えは,b = √3R である。

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

using SymPy
@syms R::positive, a::positive
eq = (R/2*cosd(Sym(30)) + a)^2 + (R/2*sind(Sym(30)))^2 - R^2
res = solve(eq, R)[1]
res |> println

    a*(sqrt(3) + sqrt(15))/3

# R
res[1](a => 1).evalf() |> println

    1.86834471792543

# b = √3R
√Sym(3)res[1] |> simplify |> println
(√Sym(3)res[1])(a => 1).evalf() |> println

    a*(1 + sqrt(5))
    3.23606797749979

大きい正三角形の一辺の長さ b は,小さい正三角形の一辺の長さ a の 1 + √5 倍である。
小さい正三角形の一辺の長さが 1 寸のとき,大きい正三角形の一辺の長さは 3.23606797749979 寸である。

function draw(a, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    R = a*(√3 + √15)/3
    b = a*(1 + √5)  # =√3R
    @printf("小さい正三角形の一辺の長さが %g 寸のとき,大きい正三角形の一辺の長さは %g 寸である。", a, b)
    plot(R*cosd(30).*[1, 0, -1, 1], R.*[-sind(30), 1, -sind(30), -sind(30)], color=:blue, lw=0.5)
    plot!(R/2*cosd(30).+[a, a/2, 0, a], R/2*sind(30).+[0, √3/2*a, 0, 0], color=:green, lw=0.5)
    plot!(
-R/2*cosd(30).-[a, a/2, 0, a], R/2*sind(30).+[0, √3/2*a, 0, 0], color=:green, lw=0.5)
    circle(0, 0, R, :red)
    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(√3R/4, R/4, "(√3R/4,R/4) ", :green, :right, :vcenter)
        point(√3R/4 + a, R/4, "(√3R/4+a,R/4)", :green, :right, delta=-delta/2)
        point(√3R/4 + a/2, R/4+√3a/2, "(√3R/4+a/2,R/4+√3a/2) ", :green, :right, :vcenter)
        point(0, R, "R", :red, :center, :bottom, delta=delta/2)
        point(0, -R/2, "-R/2", :blue, :center, :bottom, delta=delta/2)
        point(√3R/2, -R/2, "(√3R/2, -R/2)  ", :blue, :right, :bottom, delta=delta/2)
        point(√3R/2, -R/2, "= (b/2, -R/2)  ", :blue, :right, delta=-delta/2)
    end
end;

draw(1, true)


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

コメントを投稿

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

Julia」カテゴリの最新記事