算額(その449)
松山市南柳井町 中村正教 昭和12年9月
数学史研究,通巻 186 号,2005年7月〜9月
http://www.wasan.jp/sugakusipdf/186.pdf
大円の中に 4 個の小円が入っている。図の黒色部分の面積(黒積)が与えられたとき,大円の半径を求めよ。
小円の半径を r とする(大円の半径は 2r である)。
図形のうち,赤の斜線で区切られた全体の 1/8 をみる。
黒積は甲と乙の面積の和の 8 倍である。乙と丙は相似なので甲と丙の面積の和を求める。甲と丙の面積の和は,大円の面積 π(2r)^2 の 1/8 から乙と丁の面積を引いたものである。乙と丁の面積の和は 2r * r / 2 = r^2 である。
なお,甲と乙の面積を別々に求めると両者は等しいことがわかる。
include("julia-source.txt")
using SymPy
@syms r::positive, 黒積::positive;
eq = 8(4PI*r^2/8 - r^2) - 黒積 |> simplify
eq |> println
-8*r^2 + 4*pi*r^2 - 黒積
solve(eq, r)[1] |> println
sqrt(黒積)/(2*sqrt(-2 + pi))
黒積を与えて大円の半径を求める関数 f(黒積) は以下のようになる。
f(黒積) = sqrt(黒積)/(2*sqrt(-2 + pi));
黒積 = 10 のとき,大円の半径は以下のようになる。
f(10)
1.479838839994118
逆に,大円の半径が 1.479838839994118 のとき,黒積は 10 になる。
r = 1.479838839994118
8(4*pi*r^2/8 - r^2)
10.000000000000004
using Plots
function circle42f(x, y, r, color=:red)
circlef(x, y, r, color)
circlef(x, -y, r, color)
circlef(y, -x, r, color)
circlef(-y, -x, r, color)
end;
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r = 1
plot()
circlef(0, 0, 2r, :gray60)
circle42f(0, r, r, :white)
circlef(r, 0, r, :gray60, beginangle=90, endangle=180)
circlef(r, 0, r, :gray60, beginangle=180, endangle=270)
circlef(-r, 0, r, :gray60, beginangle=0, endangle=90)
circlef(-r, 0, r, :gray60, beginangle=270, endangle=360)
circlef(0, r, r, :gray60, beginangle=270, endangle=360)
circlef(0, r, r, :gray60, beginangle=180, endangle=270)
circlef(0, -r, r, :gray60, beginangle=0, endangle=90)
circlef(0, -r, r, :gray60, beginangle=90, endangle=180)
circle(0, 0, 2r, :black)
circlef(r, 0, r, :lightblue1, beginangle=0, endangle=90)
segment(0, 0, √2r, √2r, :red, lw=0.3)
segment(0, 0, 2r, 0, :red, lw=1)
circle(0, 0, 2r, :red, beginangle=0, endangle=45)
if more
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) / 3 # size[2] * fontsize * 2
point(1.5, 1.1, "甲", :yellow, mark=false)
point(0.55, 0.5, "乙", :yellow, mark=false)
point(1.5, 0.7, "丙", mark=false)
point(1.1, 0.3, "丁", mark=false)
point(r, 0, "r", :black, :center, :top, delta=-delta/2)
point(2r, 0, "2r", :black, :right, :top, delta=-delta/2)
hline!([0], color=:gray, lw=0.5)
vline!([0], color=:gray, lw=0.5)
else
plot!(showaxis=false)
end
end;
※コメント投稿者のブログIDはブログ作成者のみに通知されます