裏 RjpWiki

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

算額(その1584)

2025年02月03日 | Julia

算額(その1584)

福島県田村市 安倍文殊菩薩堂 明治10年(1877)
深川英俊,トニー・ロスマン:聖なる数学:算額,p. 103,森北出版株式会社,2010年4月22日.

キーワード:円6個,接線2本
#Julia, #SymPy, #算額, #和算, #数学

大円 2 個が外接しており,上の大円内に中円 2 個が内接している。2 個の中円の共通接線は上の大円の中心を通る。中円と共通接線に接する小円を容れる。また,上の大円の中心を通り,下の大円が内接する外円を描く。小円の直径を 1 としたとき,大円,中円,外円の直径はいかほどか。

外円の半径と中心座標を R, (0, r3 - R); R = 3r3/2
大円の半径と中心座標を r3, (0, r3), 0, -r3)
中円の半径と中心座標を r2, (0, r2), (0, 2r3 - r2)
小円の半径と中心座標を r1, (0, 2r3, - 2r2, -r1)
とおき,以下の連立方程式を解く。

eq2 の中に,"r3/2r3" があるのでわかるように,二本の共通接線のなす角は 60° である。

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

using SymPy
@syms R, r1, r2, r3
R = 3r3/2
eq1 = r2/(r3 - r2) - r1/(r3 - 2r2 - r1)
eq2 = r2/(r3 - r2) - r3/2r3
res = solve([eq1, eq2], (r2, r3))[1]

    (3*r1, 9*r1)

中円の直径は小円の直径の 3 倍,大円の直径は小円の直径の 9 倍である。
外円の直径は大円の直径の 3/2 倍なので,小円の 27/2 倍である。
小円の直径が 1 寸のとき,外円,大円,中円の直径はそれぞれ 27/2 寸,9 寸,3 寸 である。

function draw(r1, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r2, r3) = (3*r1, 9*r1)
    R = 3r3/2
    @printf("小円の直径が %g のとき,外円,大円,中円の直径は %g, %g, %g である。\n", 2r1, 2R, 2r3, 2r2)
    plot()
    circle22(0, r3, r3)
    circle(0, 2r3 - r2, r2, :blue)
    circle(0, r2, r2, :blue)
    circle(0, 2r3 - 2r2 - r1, r1, :green)
    circle(0, r3 - R, R, :magenta)
    segment(R*cosd(30), r3-R-R*sind(30), -r3*sind(30), r3+r3*cosd(30))
    segment(-R*cosd(30), r3-R-R*sind(30), r3*sind(30), r3+r3*cosd(30))
    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, -r3, "大円:r3,(0,-r3)", :red, :center, delta=-delta)
        point(0, r3, " 大円:r3,(0,r3)", :red, :left, :vcenter)
        point(0, 2r3 - r2, " 中円:r2,(0,2r3-r2)", :blue, :left, :vcenter)
        point(0, r2, " 中円:r2,(0,r2)", :blue, :left, :vcenter)
        point(0, 2r3 - 2r2 - r1, "   小円:r1,(0,2r3-2r2-r1)", :green, :left, :vcenter)
        point(0, r3 - R, "外円,R,(0,r3-R)", :magenta, :center, delta=-delta)
        point(R*cosd(30), r3-R-R*sind(30))
        point(-r3*sind(30), r3+r3*cosd(30))
        point(-R*cosd(30), r3-R-R*sind(30))
        point(r3*sind(30), r3+r3*cosd(30))
    end
end;

draw(1/2, true)


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

コメントを投稿

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

Julia」カテゴリの最新記事