街角の数学 Street Wasan ~落書き帳「○△□」~ 53. 角さんの色メガネ
http://streetwasan.web.fc2.com/math15.7.8.html
キーワード:円5個,外円,斜線
#Julia #SymPy #算額 #和算 #数学
正五角形の対角線を直径とする円(外円)を描き,もう 1 本の対角線で分割される線分を直径とする2 個の円(大円と中円)を描く。大円と中円の共通接線を 2 本描き,円に内接する小円1と,円に外接する小円2を描く。
小円1と小円2の半径を中円の半径で表わせ。


下敷きになる正五角形の一辺の長さを \(a\)
共通接線のなす角を \(2\theta\)
外円の半径と中心座標を \( (R,\ (0,\ 0)\)
大円の半径と中心座標を \(r_2,\ (r_2 - R,\ 0)\)
中円の半径と中心座標を \(r_1,\ (R - r_1,\ 0)\)
小円1の半径と中心座標を \(r_3,\ (R + r_3,\ 0)\)
小円2の半径と中心座標を \(r_4,\ (x_4,\ y_4)\)
共通接線の交点座標を \( (x,\ 0)\)
とおくと,\({\rm BC}/{\rm AB} = {\rm OH}/{\rm AO} = {\rm DE}/{\rm AD} = {\rm FG}/{\rm AF} = \sin θ\) なので,以下の方程式を順に解いていく。
include("julia-source.txt"); # julia-source.txt ソース
@syms a::positive, R, p, r1, r2, r3, r4, x4, y4, x;
# a: 正五角形の一辺の長さ
# r1: 中円の半径
r1 = (√Sym(5) - 1)a/4
r1.evalf()
\(0.309016994374947 a\)
# r2: 大円の半径(直径は 2r2 = a)
r2 = a/2
\(\displaystyle \frac{a}{2}\)
# R: 外円の半径
R = r1 + r2
R.evalf()
\(0.809016994374947 a\)
# p0: sin(θ)
x1 = R - r1
x2 = r2 - R
p = (r2 - r1)/(x1 - x2)
p.evalf()
\(0.23606797749979\)
θ = (asin(p)/pi*180).evalf()
\(13.6545847459755\)
# x
eq0 = r1/(x - (2r2 - R) - r1) - r2/(x - (2r2 - R) + r2);
ans_x = solve(eq0, x)[1] |> factor
@show(ans_x)
ans_x = a*(sqrt(5) + 5)/4
\(\displaystyle \frac{a \left(\sqrt{5} + 5\right)}{4}\)
ans_x.evalf()
\(1.80901699437495 a\)
# x1
(ans_x - (R - r1)).evalf()
\(1.30901699437495 a\)
# p1
(r1/(ans_x - (R - r1))).evalf()
\(0.23606797749979\)
# x2
x2 = r2 - R
\(\displaystyle - \frac{a \left(-1 + \sqrt{5}\right)}{4}\)
# p2
(r2/(x - x2))(x => ans_x).evalf()
\(0.23606797749979\)
eq1 = p - r3/(x - (R + r3)) # FG/AF
ans_r3 = solve(eq1(x => ans_x), r3)[1]
@show(ans_r3)
ans_r3 = a*(3 - sqrt(5))/4
\(\displaystyle \frac{a \left(3 - \sqrt{5}\right)}{4}\)
ans_r3.evalf()
\(0.190983005625053 a\)
# p3
(ans_r3/(ans_x - (R + ans_r3))).evalf()
\(0.23606797749979\)
eq2 = p - (R - 2r4)/x
ans_r4 = solve(eq2(x => ans_x), r4)[1] |> simplify
@show(ans_r4)
ans_r4 = a*(3 - sqrt(5))/4
\(\displaystyle \frac{a \left(3 - \sqrt{5}\right)}{4}\)
# p4
( (R - 2ans_r4)/ans_x).evalf()
\(0.23606797749979\)
小円1 と 小円2 の半径はともに \(\frac{a(3 - \sqrt{5}) }{4}\) で,同じ大きさである。
(ans_r3 ⩵ ans_r4)
\(\text{True}\)
描画関数プログラムのソースを見る
function draw(a, more)
pyplot(size=(600, 500), grid=false, aspectratio=1, showaxis=true, label="", fontfamily="IPAexMincho")
x = (√5 + 5)a/4
r3 = r4 = (3 - √5)a/4
r1 = (√5 - 1)a/4
r2 = a/2
R = r1 + r2
x1 = R - r1
x2 = r2 - R
println("x = \(x, r1 = \)r1, r2 = \(r2, R = \)R")
p = (r2 - r1)/(x1 - x2)
println("p = \(p, r2 - r1 = \)(r2 - r1), 2sqrt(r1*r2) = $(2sqrt(r1*r2))")
x3 = R + r3
p3 = r3/(x - x3)
println("p3 = \(p3, r3 = \)r3, x - x3 = $(x - x3)")
x1 = R - r1
p1 = r1/(x - x1)
println("p1 = \(p1, r1 = \)r1, x1 = \( (R - r1), x - x1 = \)(x - x1)")
x2 = r2 - R
p2 = r2/(x - x2)
println("p2 = \(p2, r2 = \)r2, x - x2 = $(x - x2)")
l = R - r4
θ = asin(r2/(x - r2 + R))
(x4, y4) = l.*(sin(θ), cos(θ))
p4 = (R - 2r4)/x
println("p4 = \(p4, r4 = \)r4, R - 2r4 = \( (R - 2r4), x = \)x")
plot()
circle(0, 0, R, :magenta)
circle(x1, 0, r1, :red)
circle(x2, 0, r2, :blue)
circle(x3, 0, r3, :green)
circle(x4, y4, r4, :darkgreen)
abline(x, 0, -tan(θ), x2 - r2, 1.1x)
abline(x, 0, tan(θ), x2 - r2, 1.1x)
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, 0, "O\nR,(0,0)", :magenta, :center, delta=-delta)
point(x, 0, "A\n(x,0)", :black, :center, delta=-delta)
point(x1, 0, "D\nr1,(x1,0)", :red, :center, delta=-delta)
point(x2, 0, "B\nr2,(x2,0)", :blue, :center, delta=-delta, deltax=-3delta)
(x02, y02) = (x2 + r2*sin(θ), r2*cos(θ))
segment(x2, 0, x02, y02, :blue)
point(x02, y02, "C", :blue, :left, :bottom, delta=delta/2)
(x00, y00) = (R - 2r4).*(sin(θ), cos(θ))
segment(0, 0, x00, y00, :magenta)
point(x00, y00, "H", :magenta, :left, :bottom, delta=delta/2)
(x01, y01) = (x1 + r1*sin(θ), r1*cos(θ))
segment(x1, 0, x01, y01, :red)
point(x01, y01, "E", :red, :left, :bottom, delta=delta/2)
(x03, y03) = (x3 + r3*sin(θ), r3*cos(θ))
segment(x3, 0, x03, y03, :green)
point(x03, y03, "G", :green, :left, :bottom, delta=delta/2)
point(x3, 0, " F\nr3,(x3,0)", :green, :left, delta=-delta, deltax=-7delta)
point(x4, y4, "r4,(x4,y4)", :darkgreen, :left, delta=-delta, deltax=-7delta)
circle(x, 0, r3, :brown, beginangle=(1 - θ/pi)*180, endangle=180, lw=3)
point(x, 0, "θ", :brown, :left, :bottom, delta=3delta, deltax=-10delta)
point(x2 - r2, 0, "L ", :blue, :right, :vcenter)
point(x2 + r2, 0, " J", :blue, :left, :vcenter)
point(x1 + r1, 0, " K", :blue, :left, :vcenter)
point(x3 + r3, 0, " N", :blue, :left, :vcenter)
end
end;
draw(1, true)
x = 1.8090169943749475, r1 = 0.30901699437494745, r2 = 0.5, R = 0.8090169943749475
p = 0.23606797749978967, r2 - r1 = 0.19098300562505255, 2sqrt(r1*r2) = 0.7861513777574233
p3 = 0.23606797749978967, r3 = 0.19098300562505255, x - x3 = 0.8090169943749475
p1 = 0.23606797749978972, r1 = 0.30901699437494745, x1 = 0.5, x - x1 = 1.3090169943749475
p2 = 0.2360679774997897, r2 = 0.5, x - x2 = 2.118033988749895
p4 = 0.23606797749978975, r4 = 0.19098300562505255, R - 2r4 = 0.42705098312484235, x = 1.8090169943749475
「算額あれこれ」の全ページの索引
以下のアイコンをクリックして応援してください