算額(その924)
香川県善通寺市与北町 皇美屋神社 明治11年(1878)
本田益夫:算額随想-香川県内の算額について-,私家版,昭和45年(1970).
直角三角形内に菱形を入れる。鈎,股,弦の長さがそれぞれ 3 寸,4 寸,5 寸のとき,菱形の一辺の長さはいかほどか。
鈎,股,弦の長さをそのまま変数名として使う。
菱形の左側の一辺が鈎,股と交差する座標を (0, b), (a, 0)
菱形の一辺の長さを diamond
とおき,以下の連立方程式を解く。
include("julia-source.txt");
using SymPy
@syms 鈎::positive, 股::positive, 弦::positive,
a::positive, b::positive, diamond::positive
eq1 = a^2 + b^2 - diamond^2
eq2 = (鈎 - b)/diamond - 鈎/股
eq3 = b/a - 鈎/股
(a, b, diamond) = solve([eq1, eq2, eq3], (a, b, diamond))[1];
菱形の一辺の長さは 股*(股^2 - 股*sqrt(股^2 + 鈎^2) + 鈎^2)/鈎^2 である。
diamond |> println
股*(股^2 - 股*sqrt(股^2 + 鈎^2) + 鈎^2)/鈎^2
鈎,股,弦の長さがそれぞれ 3 寸,4 寸,5 寸のとき,菱形の一辺の長さは 20/9 = 2.22222222222222 寸である。
ちなみに,a = 16/9 = 1.77777777777778 寸, b = 4/3 = 1.33333333333333 寸である。
a(鈎 => 3, 股 => 4, 弦 => 5).evalf() |> println
b(鈎 => 3, 股 => 4, 弦 => 5).evalf() |> println
1.77777777777778
1.33333333333333
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(鈎, 股, 弦) = (3, 4, 5)
(a, b, diamond) = (股^2*(-股 + sqrt(股^2 + 鈎^2))/鈎^2, 股*(-股 + sqrt(股^2 + 鈎^2))/鈎, 股*(股^2 - 股*sqrt(股^2 + 鈎^2) + 鈎^2)/鈎^2)
@printf("鈎 %g; 股 = %g; 弦 = %g のとき, 菱形の一辺の長さ = %g\n", 鈎, 股, 弦, diamond)
@printf("a = %g; b = %g; diamond = %g\n", a, b, diamond)
plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:blue, lw=0.5)
plot!([0, a, 股, diamond, 0], [b, 0, 0, b, b], color=:red, lw=1)
if more
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, " 股", :blue, :left, :bottom, delta=delta/2)
point(a, 0, " a", :blue, :left, :bottom, delta=delta/2)
point(0, 鈎, " 鈎", :blue, :left, :bottom, delta=delta/2)
point(0, b, " b", :blue, :left, :vcenter)
end
end;