算額(その332)
石川県能登町 白山神社
【算額に挑戦】石川県の算額 ―その2―
http://blog.livedoor.jp/enjoy_math/archives/51206109.html
直線上に甲円と乙円が載っており,互いに接している。
大円と小円も同じ直線上にあり,互いに接している。
また,甲円と大円,乙円と小円も互いに接している。
甲円,乙円,大円の直径がそれぞれ 64寸,54寸,11寸のとき,小円の直径を求めよ。
甲円の直径,中心座標を r1, (0, r1)
乙円の直径,中心座標を r2, (x2, r2)
大円の直径,中心座標を r3, (x3, r3)
小円の直径,中心座標を r4, (x4, r4)
とおき,以下の連立方程式を解く。
なお,同一直線に載っている2つの円 r1, r2 の中心間の水平距離は 2√(r1*r2) なので,eq1 は見かけは長ったらしいが実際には x2^2 = 3456 という式になっている。ほかも同様である。
include("julia-source.txt");
using SymPy
@syms r1::positive, r2::positive, x2::positive,
r3::positive, x3::positive, r4::positive, x4::positive;
#@syms r1, r2, x2, r3, x3, r4, x4;
(r1, r2, r3) = (64, 54, 11) .// 2
eq1 = x2^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = x3^2 + (r1 - r3)^2 - (r1 + r3)^2
eq3 = (x2 - x4)^2 + (r2 - r4)^2 - (r2 + r4)^2
eq4 = (x4 - x3)^2 + (r3 - r4)^2 - (r3 + r4)^2
res = solve([eq1, eq2, eq3, eq4], (x2, x3, r4, x4))
1-element Vector{NTuple{4, Sym}}:
(24*(18 - sqrt(66))/sqrt(65 - 6*sqrt(66)), 8*(-11 + 3*sqrt(66))/sqrt(65 - 6*sqrt(66)), 211232/1849 - 24960*sqrt(66)/1849, 48*sqrt(4290/1849 - 396*sqrt(66)/1849))
それぞれの式は,必要に応じて分母の有理化や二重根号を外すなどで簡約化できる場合もある。
@syms dummy
apart(res[1][1], dummy) |> sympy.sqrtdenest |> simplify |> println
apart(res[1][2], dummy) |> sympy.sqrtdenest |> simplify |> println
apart(res[1][3], dummy) |> println
apart(res[1][4], dummy) |> sympy.sqrtdenest |> simplify |> println
24*sqrt(6)
8*sqrt(11)
211232/1849 - 24960*sqrt(66)/1849
-528*sqrt(6)/43 + 864*sqrt(11)/43
小円の直径は 2(211232 - 24960*sqrt(66))/1849 = 9.146567247470445 である。
2(211232 - 24960*sqrt(66))/1849
9.146567247470445
using Plots
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r1, r2, r3) = (64, 54, 11) .// 2
x2 = 24*sqrt(6)
x3 = 8*sqrt(11)
r4 = 211232/1849 - 24960*sqrt(66)/1849
x4 = -528*sqrt(6)/43 + 864*sqrt(11)/43
@printf("小円の直径 = %.6f\n", 2r4)
plot()
circle(0, r1, r1)
circle(x2, r2, r2, :blue)
circle(x3, r3, r3, :green)
circle(x4, r4, r4, :orange)
if more
point(0, r1, " 甲円\n r1", :red, :left, :vcenter)
point(x2, r2, " 乙円:r2\n (x2,r2)", :blue, :left, :vcenter)
point(x3, r3, " 大円:r3 \n(x3,r3) ", :green, :right, :bottom)
point(x4, r4, " 小円:r4,(x4,r4)", :orange, :left, :bottom)
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;