裏 RjpWiki

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

算額(その1502)

2024年12月28日 | Julia

算額(その1502)

六十三 花泉町金沢 大門神社・大門観世音菩薩堂 明治13年(1880)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html

今有如図 03064
https://w.atwiki.jp/sangaku/pages/292.html

キーワード:円8個,外円,弦
#Julia, #SymPy, #算額, #和算

外円の中に水平な弦と甲円,乙円を容れ,隙間に丙円 3 個,丁円 2 個を容れる。甲円,乙円の直径がそれぞれ 12 寸,8 寸のとき,丁円の直径はいかほどか。

「今有如図」の図が正しい。これに基づいて得た解は,答,術に一致する。

外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (0, r1 - R)
乙円の半径と中心座標を r2, (0, R - r2)
丙円の半径と中心座標を r3, (0, R - r3), (x3, R - 3r3)
丁円の半径と中心座標を r4, (x4, R - 2r3 + r4)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

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

    (r2*(r1 + r2)/(2*r1 + r2), 2*sqrt(2)*sqrt(r1)*r2*sqrt(r1 + r2)/(2*r1 + r2), r1*r2/(2*r1 + r2), 2*sqrt(2)*sqrt(r1)*r2*sqrt(r1 + r2)/(2*r1 + r2))

丁円の半径 r4 は,甲円,乙円の半径を r1, r2 とすると r1*r2/(2*r1 + r2) である。
甲円,乙円の直径がそれぞれ 12 寸,8 寸のとき,丁円の直径は 12*8/(2*12 + 8) = 3 寸である。

術は,「丁円径 = 甲円径/(2甲円径/乙円径 + 1) 」で同じ結果を得る。

function draw(r1, r2, more=false)
    pyplot(size=(500, 500), showaxis=true, grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r3, x3, r4, x4) = (r2*(r1 + r2)/(2*r1 + r2), 2*sqrt(2)*sqrt(r1)*r2*sqrt(r1 + r2)/(2*r1 + r2), r1*r2/(2*r1 + r2), 2*sqrt(2)*sqrt(r1)*r2*sqrt(r1 + r2)/(2*r1 + r2))
    R = r1 + r2
    y = R - 2r3
    x = sqrt(R^2 - y^2)
    @printf("甲円,乙円の直径がそれぞれ %g, %g のとき,丁円の直径は %g である。", 2r1, 2r2, 2r4)
    plot()
    circle(0, 0, R, :purple)
    segment(-x, y, x, y, :orange)
    circle(0, R - r3, r3, :blue)
    circle2(x3, R - 3r3, r3, :blue)
    circle(0, R - r2, r2, :green)
    circle(0, r1 - R, r1, :magenta)
    circle2(x4, R - 2r3 + r4, r4)
    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, r1 - R, "甲円:r1,(0,r1-R)", :magenta, :center, delta=-delta)
        point(0, R - r2, "乙円:r2,(0,R-r2)", :green, :center, delta=-4delta)
        point(0, R - r3, "丙円:r3\n(0,R-r3)", :blue, :center, :bottom, delta=delta)
        point(x3, R - 3r3, "丙円:r3\n(x3,R-3r3)", :blue, :center, delta=-delta)
        point(x4, R - 2r3 + r4, "丁円:r4,(x4,R-2r3+r4)", :red, :center, delta=-delta)
        point(0, R, "R", :purple, :center, :bottom, delta=delta)
    end
end;

draw(12/2, 8/2, true)


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

コメントを投稿

Julia」カテゴリの最新記事