以下の内容はhttps://sangaku0418.hatenablog.com/entry/2024/12/28/184545より取得しました。


算額(その1501)

64 岩手県花泉町花泉字東鹿野 天満社 明治3年(1870)

安富有恒:和算—岩手の現存算額のすべて,青磁社,東京都,1987.
http://www.wasan.jp/iwatenosangaku_yasutomi.pdf
キーワード:円7個,外円,円弧,弦,扇形
#Julia #SymPy #算額 #和算 #数学


外円の中に扇形を容れ,甲円 1 個,乙円 3 個,丙円 2 個を容れる。甲円の直径が 41 寸のとき,丙円の直径はいかほどか。

外円の半径と中心座標を \(R, (0, 0)\)
甲円の半径と中心座標を \(r_1, (0, 0); r_1 = R - 2r_2\)
乙円の半径と中心座標を \(r_2, (0, R - r_2), (x_2, y_2)\)
丙円の半径と中心座標を \(r_3, (x_3, y_3)\)
扇型の半径と中心座標を \( (2R - 2r_2), (0, -R)\)
とおき,以下の連立方程式を解く。

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

using SymPy

@syms R::positive, r1::positive, r2::positive, r3::positive, x3::positive, y3::positive
R = r1 + 2r2
eq1 = x3^2 + y3^2 - (R - r3)^2
eq2 = x3^2 + (y3 + R)^2 - (r3 + (2R - 2r2))^2
eq3 = x3^2 + (R - r2 - y3)^2 - (r2 + r3)^2
eq4 = r1^2 + (R - r2)^2 - R^2
res = solve([eq1, eq2, eq3, eq4], (r2, r3, x3, y3))[1]

    (r1/3, 12*r1/41, 8*sqrt(10)*r1/41, 151*r1/123)

丙円の半径 \(r_3\) は,甲円の半径 \(r_1\) の 12/41 倍である。
甲円の直径が 41 寸のとき,丙円の直径は 12 寸である。

算額の問に答えるのはここまでである。
以下では,図を描くためのパラメータを求める。

扇型と外円の交点座標を \( (x_0, y_0)\)
扇型の半径と外円に接する乙円の中心座標を \( (x_2, y_2)\)
として加え,8 元連立方程式を解く。

@syms x0, y0, x2, y2
eq5 = x0^2 + y0^2 - R^2
eq6 = x0^2 + (y0 + R)^2 - (2R - 2r2)^2
eq7 = dist2(0, -R, x0, y0, x2, y2, r3)
eq8 = x2^2 + y2^2 - (R - r2)^2
eq7 = y2/x2*(y0 + R)/x0 + 1;

res2 = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8], (r2, r3, x3, y3, x0, y0, x2, y2))
res2[4]

    (r1/3, 12*r1/41, 8*sqrt(10)*r1/41, 151*r1/123, 8*r1/5, 7*r1/15, 16*r1/15, -4*r1/5)

甲円の直径が 41 のとき,全パラメータは以下のとおりである。

r2 = 6.83333;  R = 34.1667;  r1 = 20.5;  r3 = 6;  x3 = 12.6491;  y3 = 25.1667;  x2 = 21.8667;  y2 = -16.4

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

function draw(r1, more=false)
    pyplot(size=(500, 500), showaxis=true, grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r2, r3, x3, y3, x0, y0, x2, y2) = (r1/3, 12*r1/41, 8*sqrt(10)*r1/41, 151*r1/123, 8*r1/5, 7*r1/15, 16*r1/15, -4*r1/5)
    R = r1 + 2r2
    @printf("r2 = %g;  R = %g;  r1 = %g;  r3 = %g;  x3 = %g;  y3 = %g;  x2 = %g;  y2 = %g\n", r2, R, r1, r3, x3, y3, x2, y2)
    plot()
    circle(0, 0, R, :green)
    circle(0, R - r2, r2)
    circle2(x3, y3, r3, :blue)
    circle(0, 0, r1, :magenta)
    θ = atand(y0 + R, x0)
    circle(0, -R, 2R - 2r2, :orange, beginangle=θ, endangle=180 - θ)
    plot!([-x0, 0, x0], [y0, -R, y0], color=:orange, lw=0.5)
    circle2(x2, y2, r2, :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(0, 0, "外円:R", :green, :center, :bottom, delta=delta)
        point(0, 0, "甲円:r1", :magenta, :center, delta=-delta)
        point(0, R - r2, "乙円:r2\n(0,R-r2)", :red, :center, delta=-delta)
        point(x2, y2, "乙円:r2\n(x2,y2)", :red, :center, delta=-delta)
        point(x3, y3, "丙円:r3\n(x3,y3)", :blue, :center, delta=-delta)
        point(0, R, "R", :green, :center, :bottom, delta=delta)
        point(x0, y0, "(x0,y0)  ", :orange, :right, :vcenter)
    end
end;

draw(41/2, true)


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




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

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