以下の内容はhttps://sangaku0418.hatenablog.com/entry/2025/02/03/144633より取得しました。


算額(その0021)

福島県田村郡三春町御木沢 厳島神社 明治18年(1885)

http://www.wasan.jp/fukusima/miharuitukusima3.html
キーワード:円5個,半円,長方形
#Julia #SymPy #算額 #和算 #数学


長方形の中に,半円 2 個,甲円 1 個,乙円 2 個,丙円 2 個を容れる。丙円の直径が与えられたとき,黒積を求める術を述べよ。

半円の半径と中心座標を \(R,\ (0,\ R/2)\)
甲円の半径と中心座標を \(r_1,\ (0,\ 0)\)
丙円の半径と中心座標を \(r_3,\ (R - r_3,\ 0)\)
乙円の半径と中心座標を \(r_2,\ (r_2,\ 0)\)
とおく。

黒積は,「半径 \(R\) の円の面積の 1/8 の扇形の面積 ACB から,三角形の面積 OBC と乙円の面積の 1/2 を引いたものの 4 倍である」。

以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース

using SymPy
@syms R, r1, r2, r3, 黒積

eq1 = r2^2 + r1^2 - (R - r2)^2
eq2 = (R - r3)^2 + r1^2 - (R + r3)^2
eq3 = 2r1^2 - R^2
eq4 = 4(PI*R^2/8 - r1^2/2 - PI*r2^2/2) - 黒積
res = solve([eq1, eq2, eq3, eq4], (r1, r2, R, 黒積))[3] # 3 of 3

    (4*sqrt(2)*r3, 2*r3, 8*r3, r3^2*(-64 + 24*pi))

# r1
res[1] |> println

    4*sqrt(2)*r3

# r2
res[2] |> println

    2*r3

# r3
res[3] |> println

    8*r3

# 黒積
res[4] |> println

    r3^2*(-64 + 24*pi)

黒積は,「円周率の 24 倍から 64 を引き,丙円の半径の二乗を掛ける」ことで得られる。

乙円の直径が 1 のとき,黒積は 2.84955592153876 である。

res[4](r3 => 1/2).evalf() |> println

    2.84955592153876

術は以下のようで,一致する。

円周率 = PI
丙円径 = 1
( (6円周率 - 16)*丙円径^2).evalf() |> println

    2.84955592153876

描画関数プログラムのソースを見る

function draw(r3, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r1, r2, R, 黒積) = (4*sqrt(2)*r3, 2*r3, 8*r3, r3^2*(-64 + 24*pi))
    @printf("半円の半径が %g のとき,甲円,乙円,丙円の半径は %g, %g, %g,黒積は %g である。\n", R, r1, r2, r3, 黒積)
    plot([R, R, -R, -R, R], [-r1, r1, r1, -r1, -r1], seriestype=:shape, color=:powderblue, lw=0.5, fillcolor=:powderblue)
    circlef(0, r1, R, :tomato, beginangle=180, endangle=360)
    circlef(0, -r1, R, :tomato, beginangle=0, endangle=180)
    circlef(0, 0, r1, :moccasin)
    x = [R*cosd(z) for z in 45:0.01:135]
    y = [R*sind(z) - r1 for z in 45:0.01:135]
    append!(x, reverse(x))
    append!(y, -reverse(y))
    plot!(x, y, seriestype=:shape, color=:gray60, fcolor=:gray60, lw=0.5, )
    circle2f(R - r3, 0, r3, :white)
    circle2f(r2, 0, r2, :moccasin)
    circle(0, r1, R, :black, beginangle=180, endangle=360)
    circle(0, -r1, R, :black, beginangle=0, endangle=180)
    circle(0, 0, r1, :black)
    circle2(R - r3, 0, r3, :black)
    circle2(r2, 0, r2, :black)    
    rect(-R, -r1, R, r1, :black)
    plot!([0, 0, r1, 0], [R - r1, -r1, 0, 0], 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.3)
        vline!([0], color=:gray80, lw=0.3)
        point(0, r1, "半円:R,(0,R/2)", :black, :center, :bottom, delta=delta)
        point(R - r3, 0, "丙円:r2,(R-r3,0)", :black, :right, :bottom, delta=2delta, deltax=4delta)
        point(r2, 0, "乙円:r2,(r2,0)", :black, :center, delta=-delta)
        point(0, R - r1, "A", :black, :center, :bottom, delta=delta)
        point(r1, 0, "B ", :black, :right, :vcenter)
        point(0, 0, "O ", :black, :right, :vcenter)
        point(0, -r1, "C ", :black, :right, :bottom, delta=delta)
        ylims!(-r1 - 2delta, r1 + 2delta)
    end
end;

draw(1/2, true)


以下のアイコンをクリックして応援してください




以上の内容はhttps://sangaku0418.hatenablog.com/entry/2025/02/03/144633より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14