松山市南柳井町 中村正教 昭和12年(1937)
数学史研究,通巻 186 号,2005年7月〜9月
http://www.wasan.jp/sugakusipdf/186.pdf
キーワード:円5個,外円
#Julia #SymPy #算額 #和算 #数学
大円の中に 4 個の小円が入っている。図の黒色部分の面積(黒積)が与えられたとき,大円の半径を求めよ。

小円の半径を \(r\) とする(大円の半径は \(2r\) である)。
図形のうち,赤の斜線で区切られた全体の 1/8 をみる。
黒積は甲と乙の面積の和の 8 倍である。乙と丙は相似なので甲と丙の面積の和を求める。甲と丙の面積の和は,大円の面積 \(\pi(2r)^2\) の 1/8 から乙と丁の面積を引いたものである。乙と丁の面積の和は \(2r\cdot r / 2 = r^2\) である。
なお,甲と乙の面積を別々に求めると両者は等しいことがわかる。
include("julia-source.txt"); # 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
描画関数プログラムのソースを見る
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)
end
end;
以下のアイコンをクリックして応援してください