宮城県角田市小田字斗蔵 斗蔵寺 明治42年(1909)
https://tajin.shiriagari.com/framepage5000.htm
(リンク先の左のインデックスから選択)
キーワード:直角三角形,正方形
#Julia #SymPy #算額 #和算 #数学
直角三角形の中に,図のように正方形を容れる。正方形の一辺の長さが 12 寸のとき,黒積が最大になるのはどのようなときか。またその最大値はいかほどか。

正方形の一辺の長さを \(a\),黒積の直角三角形の頂点を \( (0,\ 0),\ (x,\ 0),\ (0,\ y)\)
鈎,股,弦をそのまま変数名とする。
証明はそんなに難しいものでもないが,直感でわかり,またそれが正しいことも簡単に示すことができる。
黒積が最大になるのは黒積が直角二等辺三角形のときである。斜辺が 12 寸のとき等辺は \(12/\sqrt{2}\) なので,黒積は \( (12/\sqrt{2})^2/2 = 36\) 平方寸 である。
鈎 = 25.4558; 股 = 25.4558; 弦 = 36; 正方形の一辺の長さ = 12; 黒積 = 36
答えは 「4 歩」,術は「弦の冪(二乗)を 36 で割る」となっている。
図に描いてみると,元の直角三角形は黒積と相似(相似比は 3)なので,弦は 12*3 = 36 である。
確かに \(36^2 / 36 = 36\) となるが,「36」が「4 歩」というのはちょっとおかしい。一般的には「1 歩 = 36 平方尺 = 3600 平方寸」なので,単位に無頓着に「1 歩 = 36 平方寸」としてしまったのか?それにしても「4 歩 = 36」は理解しがたい。
以下は,無理やり SymPy で解く筋道である。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms 股, 鈎, 弦, 黒積, a, x, y
弦 = sqrt(鈎^2 + 股^2)
a = 12
eq1 = x^2 + y^2 - a^2
eq2 = y/x - 鈎/股
eq3 = 黒積 - x*y/2
res = solve([eq1, eq2, eq3], (黒積, x, y))[2]
(72*股*鈎/(股^2 + 鈎^2), 12*股*sqrt(1/(股^2 + 鈎^2)), 12*鈎*sqrt(1/(股^2 + 鈎^2)))
\(黒積 = 72股\cdot 鈎/(股^2 + 鈎^2)= 72股\cdot鈎/弦^2\) である。
diff(res[1], 鈎) |> simplify |> println
72*股*(股^2 - 鈎^2)/(股^2 + 鈎^2)^2
ans_鈎 = solve(diff(res[1], 鈎), 鈎)[2] # 2 of 2
ans_鈎 |> println
股
鈎 = 股 のとき(つまり,二等辺直角三角形のとき)に,黒積は最大になる。
黒積の直角三角形は外側の直角三角形と相似なので,黒積が最大のとき,\(x = y\) である。
\(x^2 + y^2 = 12\) なので \(x = 6\sqrt{2}\) である。
つまり,\(x = y = 6\sqrt{2}\) の二等辺三角形のとき黒積が最大値 = \( (6\sqrt{2})^2/2 = 36\) 平方寸 である。
描画関数プログラムのソースを見る
function draw(a, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
x = y = 12/√2
鈎 = 股 = 3x
弦 = sqrt(鈎^2 + 股^2)
黒積 = x*y/2
@printf("鈎 = %g; 股 = %g; 弦 = %g; 正方形の一辺の長さ = %g; 黒積 = %g\n", 鈎, 股, 弦, a, 黒積)
plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:green, lw=0.5)
segment(x, 0, 0, y, :black)
segment(0, y, y, y + x, :black)
segment(x, 0, x + y, x, :black)
plot!([0, x, 0, 0], [0, 0, y, 0], seriestype=:shape, color=:gray80, fillcolor=:gray80, lw=0.5)
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, 鈎, " 鈎", :red, :left, :bottom, delta=delta/2)
point(股, 0, "股", :red, :left, :bottom, delta=delta/2, deltax=0.7delta)
point(0, y, " y", :red, :left, :vcenter)
point(x, 0, "x", :red, :center, :bottom, delta=delta)
end
end;
draw(12, true)
以下のアイコンをクリックして応援してください