裏 RjpWiki

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

算額(その1435)

2024年11月30日 | Julia

算額(その1435)

福島県伊達市梁川町粟野堂内 粟野地蔵堂 明治16年(1883)
街角の数学 ~落書き帳「○△□」~ 43.ルージュの伝言

http://streetwasan.web.fc2.com/math15.6.25.html
キーワード:円3個,半円2個,長方形
#Julia, #SymPy, #算額, #和算

長方形の中に,大半円 2 個,中円 1 個,小円 2 個が入っている。小円の半径が与えられたとき,ピンクの部分の面積を求めよ。

中円の半径と中心座標を r2, (0, 0)
大円の半径と中心座標を r1, (0, r2), (0 -r2)
小円の半径と中心座標を r3, (r1 - r3, 0)
とおき,以下の連立方程式を解いて r1, r2 を得る。

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cfusing SymPy
@syms r1::positive, r2::positive, r3::positive
eq1 = (r1 - r3)^2 + r2^2 - (r1 + r3)^2
eq2 = 2r2^2 - r1^2
res = solve([eq1, eq2], (r1, r2))[1];

# r1 大円の半径
res[1] |> println

    8*r3

# r2 中円の半径
res[2] |> println

    4*sqrt(2)*r3

求める面積の 1/4 は第1象限にある A, B, Cで囲まれる図形である。
その図形は,「四分円 OAB」 - 「八分円 DAC」 + 「二等辺三角形 OAD」である。
OA = r2, DA = r1 より,π*r2^2/4 - πr1^2/8 + r2^2/2 = 16r3^2ゆえ,求める全体の面積はその 4 倍の 64r3^2 である。
r3 が 1 寸のとき,面積は 64 平方寸である。

(r1, r2) = (8*r3, 4*sqrt(Sym(2))*r3)
S = 4 * (PI*r2^2/4 - PI*r1^2/8 + r2^2/2)
S |> println

    64*r3^2

定積分を求めるのが簡単で間違いがない。

@syms x
S = 4 * integrate(sqrt(r2^2 - x^2) - sqrt(r1^2 - x^2) + r2, (x, 0, r2))
S |> println

    64*r3^2

function draw(r3, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r1, r2) = (8*r3, 4*sqrt(2)*r3)
    @printf("r3 = %g;  r1 = %g;  r2 = %g\n", r3, r1, r2)
    plot([r1, r1, -r1, -r1, r1], [-r2, r2, r2, -r2, -r2], color=:green, lw=0.5)
    circlef(0, 0, r2, :pink)
    circle(0, 0, r2)
    circlef(0, r2, r1, :white, beginangle=225, endangle=315)
    circlef(0, -r2, r1, :white, beginangle=45, endangle=135)
    circle(0, r2, r1, beginangle=180, endangle=360)
    circle(0, -r2, r1, beginangle=0, endangle=180)
    circle2(r1 - r3, 0, r3, :blue)
    if more
        delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
        hline!([0], color=:gray80, lw=0.5)
        point(0, 0, "O ", :black, :right, :vcenter)
        point(r2, 0, "A  ", :black, :right, :vcenter)
        point(0, r2, "B", :black, :center, :bottom, delta=delta)
        point(0, r1 - r2, "C ", :black, :right, :bottom, delta=delta)
        point(0, -r2, "D ", :black, :right, :bottom, delta=delta)
        point(r1, r2, "(r1,r2)", :green, :right, :bottom, delta=delta)
        point(r1 - r3, 0, "小円\n\nr3", :blue, :center, :vcenter)
        vline!([0], color=:gray70, lw=0.5)
    end
end;

draw(1, true)


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

コメントを投稿

Julia」カテゴリの最新記事