算額(その148)
岐阜県 田代神社 天保12年(1841)8月
http://www.wasan.jp/gifu/tasiro.html
第3問: 正方形の中に 2 本の斜線を引き,甲正方形3個と乙正方形1個を入れる。甲正方形の一辺の長さを知って,乙正方形の一辺の長さを求めよ。
甲乙の正方形の一辺の長さを a, b とする。
⊿ABC と ⊿ADE が相似であることから,
a/(a+b) = (a+b)/(2a+b)
これを b について解く。
using SymPy
@syms a::positive, b::positive
eq = a/(a+b) - (a+b)/(2a+b)
answer = solve(eq, b)[1]
answer |> println
a*(-1 + sqrt(5))/2
つまり,b = (√5 - 1)/2 * a であり,術文と同じになる。
using Plots
using Printf
function point(x, y, string="", color=:green, position=:left, vertical=:top; mark=true)
mark && scatter!([x], [y], color=color, markerstrokewidth=0)
annotate!(x, y, text(string, 10, position, color, vertical))
end;
function segment(x1, y1, x2, y2, color=:black; linestyle=:solid, linewidth=0.5)
plot!([x1, x2], [y1, y2], color=color, linestyle=linestyle, linewidth=linewidth)
end;
function rect(x1, y1, x2, y2, color=:pink)
plot!([x1, x2, x2, x1, x1], [y1, y1, y2, y2, y1], color=color, linewidth=0.5, seriestype=:shape, fillcolor=color)
end;
function draw(a, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
b = (√5 - 1)/2 * a
plot([0, 2a + b, 2a + b, 0, 0], [0, 0, 2a + b, 2a + b, 0], color=:black, lw=0.5)
rect(0, 0, a, a)
rect(a + b, 0, 2a + b, a)
rect(0, a + b, a, 2a + b)
rect(a + b, a + b, 2a + b, 2a + b)
rect(a, a, a + b, a + b, :slategray1)
segment(0, a, 2a + b, 2a + b)
segment(a, 0, 2a + b, 2a + b)
if more == true
point(a / 2, a / 2, " 甲 axa")
point(a + b / 2, a + b / 2, " 乙 bxb")
point(2a + b, 2a + b, " A")
point(0, 2a + b, " B")
point(0, a, " C")
point(a, 2a + b, " D")
point(a, a + b, " E")
vline!([0], color=:black, lw=0.5)
hline!([0], color=:black, lw=0.5)
else
plot!(showaxis=false)
end
end;