算額(その90)
千葉県君津市 神野寺 万延2(1861)年2月
http://www.wasan.jp/chiba/jinyaji1.html
3 種類の円が図のように配置されている。大円,中円の径(直径)が □ 寸,□ 寸のとき,小円の径を求めよ。
大円,中円の径が不鮮明で読み取れないので,それぞれの半径を r1 = 3, r2 = 2 とする(任意に設定できるわけではない)。
大円,中円の中心座標を (0, y1), (x2, r2)とする。
それぞれの円が外接していることに基づく方程式を解く。
using SymPy
@syms r3::positive, x2::positive, y1::positive;
r1 = 3
r2 = 2
eq1 = (x2 - r3)^2 + (r2 - r3)^2 - (r2 + r3)^2
eq2 = x2^2 + (y1 - r2)^2 - (r1 + r2)^2
eq3 = r3^2 + (y1 - r3)^2 - (r1 + r3)^2
solve([eq1, eq2, eq3], (r3, y1, x2))
2-element Vector{Tuple{Sym, Sym, Sym}}:
(8 - 4*sqrt(3), 5, 4)
(4*sqrt(3) + 8, 5, 4)
最初のものが適解である。小円の半径は 8 - 4*sqrt(3) = 1.0717967697244912 になる。
using Plots
function circle(ox, oy, r, color=:red; beginangle=0, endangle=360)
θ = beginangle:0.1:endangle
x = r.*cosd.(θ)
y = r.*sind.(θ)
plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5)
end;
function point(x, y, string="", color=:green, position=:left, vertical=:top; fontsize=10, mark=true)
mark && scatter!([x], [y], color=color, markerstrokewidth=0)
annotate!(x, y, text(string, fontsize, vertical, position, color))
end;
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r3, y1, x2) = (8 - 4*sqrt(3), 5, 4)
(r1, r2) = (3, 2)
println("小円の半径は $(8 - 4*sqrt(3))")
plot()
circle(0, y1, r1, :green)
circle(x2, r2, r2)
circle(-x2, r2, r2)
circle(r3, r3, r3, :blue)
circle(-r3, r3, r3, :blue)
hline!([0], color=:black, lw=0.5)
if more
vline!([0], color=:black, lw=0.5)
point(0, y1, "y1 ", :green, :bottom, :right)
point(r3, r3, "(r3,r3)", :blue, :top)
point(x2, r2, "(x2,r2)", :red, :top)
end
end;
小円の半径は 1.0717967697244912
※コメント投稿者のブログIDはブログ作成者のみに通知されます