算額(その256)
中村信弥「改訂増補 長野県の算額」
http://www.wasan.jp/zoho/zoho.html
県内の算額4(186)
長野県長野市北尾張部 連開庵 嘉永6年(1853)
正方形内に四分円,半円,天円,地円,人円が入っており,互いに内接・外接している。
地円,人円の径がそれぞれ 1寸4分4厘,1 寸のとき天円の径を求めよ。
四分円の半径を r0 とする。半円の半径は r0/2 である。
天円の半径と中心座標を r1, (x1, r0 - r1)
地円の半径と中心座標を r2, (x2, r2) とする。r2 = 1.44 である。
人円の半径と中心座標を r3, (r3, y3) とする。r3 = 1 である。
以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms r0::positive, r1::positive, x1::positive, r2::positive, x2::positive, r3::positive, y3::positive;
r2 = 144//200
r3 = 100//200
eq1 = (r0 - x1)^2 + r1^2 - (r0 - r1)^2
eq2 = (r0 - x1)^2 + (r0 - r1 - r0//2)^2 - (r1 + r0//2)^2
eq3 = (r0 - r3)^2 + (r0 - y3)^2 - (r0 + r3)^2
eq4 = (r0 - x2)^2 + (r0 - r2)^2 - (r0 + r2)^2
eq5 = (x2 - r3)^2 + (y3 - r2)^2 - (r2 + r3)^2
res = solve([eq1, eq2, eq3, eq4, eq5], (r0, r1, x1, x2, y3))
4-element Vector{NTuple{5, Sym}}:
(3*sqrt(2)/5 + 181/100 + 11*sqrt(120*sqrt(2) + 241)/100, 3*sqrt(2)/20 + 181/400 + 11*sqrt(120*sqrt(2) + 241)/400, 3*sqrt(2)/5 + 181/100 + 11*sqrt(120*sqrt(2) + 241)/100 + sqrt(660*sqrt(2)*sqrt(120*sqrt(2) + 241) + 18120*sqrt(2) + 34561 + 1991*sqrt(120*sqrt(2) + 241))/100, -sqrt(120*sqrt(2) + 241)/100 + 49/100 + 3*sqrt(2)/5, sqrt(3*sqrt(2)/250 + 241/10000) + 71/100 + 3*sqrt(2)/5)
(3*sqrt(2)/5 + 181/100 + 11*sqrt(120*sqrt(2) + 241)/100, 3*sqrt(2)/20 + 181/400 + 11*sqrt(120*sqrt(2) + 241)/400, -sqrt(660*sqrt(2)*sqrt(120*sqrt(2) + 241) + 18120*sqrt(2) + 34561 + 1991*sqrt(120*sqrt(2) + 241))/100 + 3*sqrt(2)/5 + 181/100 + 11*sqrt(120*sqrt(2) + 241)/100, -sqrt(120*sqrt(2) + 241)/100 + 49/100 + 3*sqrt(2)/5, sqrt(3*sqrt(2)/250 + 241/10000) + 71/100 + 3*sqrt(2)/5)
(-11*sqrt(120*sqrt(2) + 241)/100 + 3*sqrt(2)/5 + 181/100, -11*sqrt(120*sqrt(2) + 241)/400 + 3*sqrt(2)/20 + 181/400, -11*sqrt(120*sqrt(2) + 241)/100 - sqrt(-1991*sqrt(120*sqrt(2) + 241) - 660*sqrt(2)*sqrt(120*sqrt(2) + 241) + 18120*sqrt(2) + 34561)/100 + 3*sqrt(2)/5 + 181/100, sqrt(120*sqrt(2) + 241)/100 + 49/100 + 3*sqrt(2)/5, -sqrt(3*sqrt(2)/250 + 241/10000) + 71/100 + 3*sqrt(2)/5)
(-11*sqrt(120*sqrt(2) + 241)/100 + 3*sqrt(2)/5 + 181/100, -11*sqrt(120*sqrt(2) + 241)/400 + 3*sqrt(2)/20 + 181/400, -11*sqrt(120*sqrt(2) + 241)/100 + sqrt(-1991*sqrt(120*sqrt(2) + 241) - 660*sqrt(2)*sqrt(120*sqrt(2) + 241) + 18120*sqrt(2) + 34561)/100 + 3*sqrt(2)/5 + 181/100, sqrt(120*sqrt(2) + 241)/100 + 49/100 + 3*sqrt(2)/5, -sqrt(3*sqrt(2)/250 + 241/10000) + 71/100 + 3*sqrt(2)/5)
二番目の解が適切である。
天円の直径は 2寸4分4厘あまりである。
2res[2][2].evalf()
2.44388710953848
r0 = 4.88777; r1 = 1.22194; x1 = 1.43160; x2 = 1.13587; y3 = 1.76119
天円の直径 = 2.44388710953848
using Plots
using Printf
function draw(more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r0, r1, x1, x2, y3) = res[2]
@printf("r0 = %.5f; r1 = %.5f; x1 = %.5f; x2 = %.5f; y3 = %.5f\n", r0, r1, x1, x2, y3)
println("天円の直径 = $(2r1.evalf())")
plot([0, r0, r0, 0, 0], [0, 0, r0, r0, 0], linecolor=:black, linewidth=0.5)
circle(r0, r0, r0, beginangle=180, endangle=270)
circle(r0, r0//2, r0//2, :blue, beginangle=90, endangle=270)
circle(x1, r0 - r1, r1, :orange)
circle(x2, r2, r2, :magenta)
circle(r3, y3, r3, :green)
if more == true
point(r0, r0, "(r0,r0)", :black, :right, :bottom)
point(r0, r0/2, "(r0,r0/2)", :blue, :right)
point(x1, r0 - r1, " 天円:r1\n (x1,r0-r1)", :orange)
point(x2, r2, " 地円:r2\n (x2,r2)", :magenta)
point(r3, y3, "\n 人円:r3\n (r3,y3)", :green, :center, :top)
hline!([0], color=:black, lw=0.5)
vline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;