百三十七 群馬県藤岡市藤岡 金光寺 明治21年(1888)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円4個,扇
#Julia #SymPy #算額 #和算 #数学
扇面に大円 2 個,中円 1 個,小円 1 個を容れる。扇長(要から先端までの長さ)と大円の直径が与えられたとき,小円の直径はいかほどか。

扇長を \(R\)
大円の半径と中心座標を \(r_1,\ (x_1,\ y_1)\)
中円の半径と中心座標を \(r_2,\ (0,\ R - r_2)\)
小円の半径と中心座標を \(r_3,\ (0,\ R - 2r_2 - r_3)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms R::positive,
r1::positive, x1::positive, y1::positive,
r2::positive, r3::positive;
r3 = r1 - r2
eq1 = x1^2 + y1^2 - (R - r1)^2
eq2 = x1^2 + (R - r2 - y1)^2 - (r1 + r2)^2
eq3 = x1^2 + (R - 2r2 - r3 - y1)^2 - (r1 + r3)^2
res = solve([eq1, eq2, eq3], (r2, x1, y1))[1] # 1 of 2
(-sqrt(R)*sqrt(R - 2*r1)/2 + R/2, sqrt(4*R^(3/2)*sqrt(R - 2*r1) - 4*sqrt(R)*r1*sqrt(R - 2*r1) - 4*R^2 + 8*R*r1), 2*sqrt(R)*sqrt(R - 2*r1) - R + r1)
小円の半径 \(r_2\) は,扇長 \(R\) と大円の半径 \(r_1\) の関数である。
\( r_2 = \frac{R - \sqrt{R(R - 2r_1)}}{2}\)
扇長と大円の直径がそれぞれ 28 寸,16.6 寸のとき,中円の直径は 10.1338308526982 寸である。
R = 28; r1 = 16.6/2
2(R - sqrt(R*(R - 2r1)))/2 |> println
10.133830852698168
すべてのパラメータは以下のとおりである。
\(R = 28;\ r_1 = 8.3;\ r_2 = 5.06692;\ x_1 = 11.4479;\ y_1 = 16.0323\)
描画関数プログラムのソースを見る
function draw(R, r1, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r2, x1, y1) = (-sqrt(R)*sqrt(R - 2*r1)/2 + R/2, sqrt(4*R^(3/2)*sqrt(R - 2*r1) - 4*sqrt(R)*r1*sqrt(R - 2*r1) - 4*R^2 + 8*R*r1), 2*sqrt(R)*sqrt(R - 2*r1) - R + r1)
r3 = r1 - r2
θ = atand(y1, x1) - asind(r1/(R - r1))
@printf("扇長と大円の直径がそれぞれ %g 寸,%g 寸のとき,中円の直径は %g である。\n", R, 2r1, 2r2)
@printf("R = %g; r1 = %g; r2 = %g; x1 = %g; y1 = %g\n", R, r1, r2, x1, y1)
plot()
circle(0, 0, R, :magenta, beginangle=θ, endangle=180 - θ)
circle(0, 0, R - 2r1, :blue, beginangle=θ, endangle=180 - θ)
circle2(x1, y1, r1)
circle(0, R - r2, r2, :blue)
circle(0, R - 2r2 - r3, r3, :orange)
segment(0, 0, R*cosd(θ), R*sind(θ))
segment(0, 0, -R*cosd(θ), R*sind(θ))
if more
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3 # size[2] * fontsize * 2
hline!([0], color=:gray80, lw=0.5)
vline!([0], color=:gray80, lw=0.5)
point(0, R, "R", :green, :center, :bottom, delta=delta)
point(x1, y1, "大円:r1,(x1,y1)", :red, :center, delta=-delta)
point(0, R - r2, "中円:r2\n(0,R-r2)", :blue, :center, delta=-delta)
point(0, R - 2r2 - r3, "小円:r3\n(0,R-2r2-r3)", :black, :right, :vcenter, deltax=-delta)
end
end;
draw(28, 16.6/2, true)
以下のアイコンをクリックして応援してください