裏 RjpWiki

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

算額(その1581)

2025年02月03日 | Julia

算額(その1581)

福島県田村郡三春町御木沢 厳島神社
三春まちなか寺子屋:厳島神社新算額
https://miharukoma.com/wp-content/uploads/2018/11/12.22厳島神社-新算額.pdf
https://miharukoma.com/wp-content/uploads/2018/12/寺子屋12.22 問題解説.pdf

キーワード:円4個,半円2個,長方形
#Julia, #SymPy, #算額, #和算, #数学

長方形の中に,半円 2 個,正三角形 4 個,乙円 2 個,丙円 2 個を容れる。半円の半径が 48 寸のとき,乙円,丙円の半径はいかほどか。

半円の半径と中心座標を R, (0, √3R/2)
丙円の半径と中心座標を r3, (R - r3, 0)
乙円の半径と中心座標を r2, (r2, 0)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms R, r2, r3
eq1 = (R - r3)^2 + (√Sym(3)*R/2)^2 - (R + r3)^2
eq2 = r2^2 + (√Sym(3)*R/2)^2  - (R - r2)^2;

# r2
ans_r2 = solve(eq2, r2)[1]

ans_r2 |> println

    R/8

# r3
ans_r3 = solve(eq1, r3)[1]

ans_r3 |> println

    3*R/16

乙円,丙円の半径は,半円の直径の 1/8, 3/16 倍である。

半円の半径が 48 寸のとき,乙円,丙円の半径は 6 寸,9 寸である。

using Colors
function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r2, r3) = (R/8, 3R/16)
    @printf("半円の半径が %g のとき,乙円,丙円の半径は %g, %g である。\n", R, r2, r3)
    plot()
    circlef(0, √3R/2, R, parse(Colorant, "#FF8B3E"), beginangle=180, endangle=360)
    circlef(0, -√3R/2, R, parse(Colorant, "#FF8B3E"), beginangle=0, endangle=180)
    polygon(R/2, R/√3, R/√3, 3, φ=30, color=parse(Colorant, "#FFF565"), fcolor=parse(Colorant, "#FFF565"))
    polygon(-R/2, R/√3, R/√3, 3, φ=30, color=parse(Colorant, "#FFF565"), fcolor=parse(Colorant, "#FFF565"))
    polygon(R/2, -R/√3, R/√3, 3, φ=210, color=parse(Colorant, "#FFF565"), fcolor=parse(Colorant, "#FFF565"))
    polygon(-R/2, -R/√3, R/√3, 3, φ=210, color=parse(Colorant, "#FFF565"), fcolor=parse(Colorant, "#FFF565"))
    x = [R*cosd(z) for z in 60:0.01:120]
    y = [R*sind(z) - √3R/2 for z in 60:0.01:120]
    append!(x, reverse(x))
    append!(y, -reverse(y))
    circle2f(R - r3, 0, r3, parse(Colorant, "#F02F22"))
    plot!(x, y, seriestype=:shape, color=parse(Colorant, "#FFFCC4"), fcolor=parse(Colorant, "#FFFCC4"), lw=0.5)
    circle2f(r2, 0, r2, parse(Colorant, "#757CF7"))    
    circle(0, √3R/2, R, :black, beginangle=180, endangle=360)
    circle(0, -√3R/2, R, :black, beginangle=0, endangle=180)
    circle2(R - r3, 0, r3, :black)
    circle2(r2, 0, r2, :black)    
    rect(-R, -√3R/2, R, √3R/2, :black)
    plot!([-R, 0, R], √3R/2 .* [-1, 1, -1], color=:black, lw=0.5)
    plot!([-R, 0, R], √3R/2 .* [1, -1, 1], color=:black, lw=0.5)
    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(0, √3R/2, "半円:R,(0,√3R/2)", :black, :center, :bottom, delta=delta/2)
        point(R - r3, 0, "丙円:r2\n(R-r3,0)", :black, :center, delta=-delta/2)
        point(r2, 0, "乙円:r2,(r2,0)", :black, :left, delta=-5delta)
    end
end;

draw(48, true)


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

コメントを投稿

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

Julia」カテゴリの最新記事