算額(その255)
中村信弥「改訂増補 長野県の算額」
http://www.wasan.jp/zoho/zoho.html
県外(285)
東京都あきる野市 二宮神社 寛政6年(1794)
勾股弦(直角三角形)に 5 個の等円(直径が同じ円)が弦(直角に対する変)及び鉤(直角を挟む短い方の辺),股(同じく長い方の辺)に接している。内接する全円の径が 44 寸のとき,等円の径を求めよ。
全円の半径を r1 = 22 寸 とする。
等円の半径を r2 とする。
以下の方程式をとき,まず勾,股,弦の長さを求める。
include("julia-source.txt");
using SymPy
# 全円半径 r1 = 22 寸、
# 等円半径 r2
@syms 鉤, 股, 弦, r1::positive, r2::positive, x::positive, y::positive
弦 = 110
eq1 = 鉤 + 股 - 弦 - 44 # 鉤股弦と内接円の径の関係
eq2 = 鉤^2 + 股^2 - 弦^2 # ピタゴラスの定理
(鉤, 股) = solve([eq1, eq2], (鉤, 股))[1]
(66, 88)
eq3 = distance(0, 鉤, 股, 0, r2, y) - r2^2
eq4 = distance(0, 鉤, 股, 0, x, r2) - r2^2
eq5= (x - r2)^2 + (y - r2)^2 -(8r2)^2;
res = solve([eq3, eq4, eq5], (r2, x, y))
4-element Vector{Tuple{Sym, Sym, Sym}}:
(110/13, 814/13, 638/13)
(660/53, 4884/53, 3828/53)
(-1540/191 + 880*sqrt(15)/191, 21428/191 - 2640*sqrt(15)/191, 440*sqrt(15)/191 + 11836/191)
(-2310/491 + 1980*sqrt(15)/491, 660*sqrt(15)/491 + 42438/491, 37026/491 - 3960*sqrt(15)/491)
names = ["等円半径", "内側の股の x 座標", "内側の鉤の y 座標"]
for i = 1:4
println(i)
for j = 1:3
println("$(names[j]) = $(res[i][j]) = $(res[i][j].evalf())")
end
end
1
等円半径 = 110/13 = 8.46153846153846
内側の股の x 座標 = 814/13 = 62.6153846153846
内側の鉤の y 座標 = 638/13 = 49.0769230769231
2
等円半径 = 660/53 = 12.4528301886792
内側の股の x 座標 = 4884/53 = 92.1509433962264
内側の鉤の y 座標 = 3828/53 = 72.2264150943396
3
等円半径 = -1540/191 + 880*sqrt(15)/191 = 9.78128452702894
内側の股の x 座標 = 21428/191 - 2640*sqrt(15)/191 = 58.6561464189132
内側の鉤の y 座標 = 440*sqrt(15)/191 + 11836/191 = 70.8906422635145
4
等円半径 = -2310/491 + 1980*sqrt(15)/491 = 10.9134562637285
内側の股の x 座標 = 660*sqrt(15)/491 + 42438/491 = 91.6378187545762
内側の鉤の y 座標 = 37026/491 - 3960*sqrt(15)/491 = 44.1730874725430
一番目の解が適切である。
(r2, x, y) = (110/13, 814/13, 638/13)
(8.461538461538462, 62.61538461538461, 49.07692307692308)
等円の半径 = 8.46154; 等円の直径 = 16.92308; x = 62.61538; y = 49.07692
function draw(more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(鉤, 股, r2, x, y) = (66, 88, 110/13, 814/13, 638/13)
@printf("等円の半径 = %.5f; 等円の直径 = %.5f; x = %.5f; y = %.5f\n", r2, 2r2, x, y)
plot([0, 88, 0, 0], [0, 0, 66, 0], color=:black, lw=0.5)
circle(22, 22, 22, :red)
for i = 0:4
circle(r2*(1 + 2i*4/5) , y - 2i*r2*3/5, r2, :blue)
end
if more == true
plot!([r2, x, r2, r2], [r2, r2, y, r2], color=:black, lw=0.5)
circle(r2, r2, r2, :blue)
point(股, 0, "88", :black, :left, :bottom)
point(0, 鉤, " 66", :black)
point(22, 22, " 全円\n(r1,r1)", :red)
point(r2, y, " 等円 (r2,y)\n", :blue, :center, :bottom)
point(x, r2, "\n (x,r2)", :blue, :center, :top)
point(r2, r2, " (r2,r2)", :blue)
hline!([0], color=:black, lw=0.5)
vline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;