算額(その1382)
一七 大里郡岡部村岡 稲荷社 文化13年(1816)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円1個,直角三角形,菱形2個
#Julia, #SymPy, #算額, #和算
直角三角形の中に,菱形を 2 個容れる。また,菱形の交差部分に円を容れる。直角三角形の底辺(股)と高さ(鈎)が 4 寸と 3 寸のとき,円の直径はいかほどか。
鈎,股の 辺上にある菱形の頂点座標を (0, y1), (0, y2), (x1, 0), (x2, 0) とおき,以下の連立方程式を解く。
求める円は 直角三角形 (0, 0), (0, y1), (x1, 0) に内接する円と合同なので,その直径は x1 + y1 - sqrt(x1^2 + y1^2) である。
include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
using SymPy
@syms 鈎::positive, 股::positive, x1::positive, y1::positive,
x2::positive, y2::positive
eq1 = 鈎 - y1 - sqrt(x1^2 + y1^2)
eq2 = y1/x1 - 鈎/股
eq3 = 股 - x2 - sqrt(x2^2 + y2^2)
eq4 = y2/x2 - 鈎/股
res = solve([eq1, eq2, eq3, eq4], (x1, y1, x2, y2))[1]
(股*鈎/(鈎 + sqrt(股^2 + 鈎^2)), 鈎^2/(鈎 + sqrt(股^2 + 鈎^2)), 股^2/(股 + sqrt(股^2 + 鈎^2)), 股*鈎/(股 + sqrt(股^2 + 鈎^2)))
鈎,股が 3 寸,4 寸のとき,円の直径は 3/4 = 0.75 寸である。
r = (res[1] + res[2] - sqrt(res[1]^2 + res[2]^2))/2 |> simplify;
r |> println
r(鈎 =>3, 股 => 4) |> println
r(鈎 =>3, 股 => 4) |> float |> println
鈎*(股 + 鈎 - sqrt(股^2 + 鈎^2))/(2*(鈎 + sqrt(股^2 + 鈎^2)))
3/8
0.375
function draw(鈎, 股, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(x1, y1, x2, y2) = (股*鈎/(鈎 + sqrt(股^2 + 鈎^2)), 鈎^2/(鈎 + sqrt(股^2 + 鈎^2)), 股^2/(股 + sqrt(股^2 + 鈎^2)), 股*鈎/(股 + sqrt(股^2 + 鈎^2)))
r = (x1 + y1 - sqrt(x1^2 + y1^2))/2
@printf("鈎が %g,股が %g のとき,円の直径は %g である。\n", 鈎, 股, 2r)
@printf("鈎 = %g; 股 = %g; x1 = %g; y1 = %g; x2 = %g; y2 = %g\n", 鈎, 股, x1, y1, x2, y2)
plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:black, lw=0.5)
circle(x1 - r, y2 - r, r)
#segment(0, y1, x1, 0, :blue)
#segment(x1, 0, x1, 鈎 - y1, :blue)
plot!([0, x1, x1, 0, 0], [y1, 0, 鈎 - y1, 鈎, y1], color=:green, lw=1)
#segment(0, y2, x2, 0, :red)
#segment(0, y2, 股 - x2, y2, :red)
plot!([0, x2, 股, 股 - x2, 0], [y2, 0, 0, y2 ,y2], color=:blue, lw=1)
if more == true
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, y1, "y1 ", :red, :right, :vcenter)
point(0, y2, "y2 ", :red, :right, :vcenter)
point(x1, 0, "x1", :red, :center, delta=-delta)
point(x2, 0, "x2", :red, :center, delta=-delta)
point(x1 - r, y2 - r, "円:r\n(x1-r,y2-r)", :red, :center, :bottom, delta=delta/2)
point(0, 鈎, "鈎 ", :green, :right, :vcenter)
point(股, 0, "鈎", :blue, :center, delta=-delta)
plot!(xlims=(-7delta, 股 + 5delta), ylims=(-5delta, 鈎 + 5delta))
end
end;
draw(3, 4, true)
※コメント投稿者のブログIDはブログ作成者のみに通知されます