福島県伊達市梁川町粟野堂内 粟野地蔵堂 明治16年(1883)
街角の数学 Street Wasan ~落書き帳「○△□」~ 43.ルージュの伝言
http://streetwasan.web.fc2.com/math15.6.25.html
キーワード:円3個,半円,長方形
#Julia #SymPy #算額 #和算 #数学
長方形の中に,大半円 2 個,中円 1 個,小円 2 個が入っている。小円の半径が与えられたとき,ピンクの部分の面積を求めよ。

中円の半径と中心座標を \(r_2,\ (0,\ 0)\)
大円の半径と中心座標を \(r_1,\ (0,\ r_2),\ (0 -r_2)\)
小円の半径と中心座標を \(r_3,\ (r_1 - r_3,\ 0)\)
とおき,以下の連立方程式を解いて \(r_1,\ r_2\)を得る。
include("julia-source.txt"); # julia-source.txt ソース
using 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 = \(r_2\), DA = \(r_1\) より,\(\pi r_2^2/4 - \pi r_1^2/8 + r_2^2/2 = 16r_3^2\) ゆえ,求める全体の面積はその 4 倍の \(64r_3^2\) である。
\(r_3\) が 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)
以下のアイコンをクリックして応援してください