算額(その1368)
五十九 群馬県佐波郡玉村町飯塚 光琳寺 天保8年(1837)
六十一 群馬県高崎市石原町 清水寺 天保10年(1839)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:直角三角形,長方形,最大面積
#Julia, #SymPy, #算額, #和算
直角三角形の中に長方形を容れる。斜辺(弦)が 64 寸,長方形の長辺が 27 寸とする。長方形の面積が最大になるのは底辺(股)はいかほどか。
基本的に,算額(その816)と同じである。
鈎,股を A, B,鈎,股上にある点を a(平), b(長) とおくと,長方形の面積 S は S = a*b である。
以下の連立方程式を解く。
include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
using SymPy
@syms A, B, a, b, S
b = 27
eq1 = (A - a)/b - A/B
eq2 = a/(B - b) - A/B
eq3 = a*b - S
eq1 = A^2 + B^2 - 64^2
res = solve([eq1, eq2, eq3], (a, A, S))[2]
(sqrt(4096 - B^2)*(B - 27)/B, sqrt(4096 - B^2), 27*sqrt(-(B - 64)*(B + 64))*(B - 27)/B)
面積 S は,B の関数である。
S = res[3]
S |> println
27*sqrt(-(B - 64)*(B + 64))*(B - 27)/B
面積は B が 50 前後で最大値を取る。
pyplot(size=(300, 150), grid=false, aspectratio=:none, label="", fontfamily="IPAMincho")
plot(S, xlims=(27, 64), xlabel="B", ylabel="S(B)")
面積が最大になるのは上図の曲線の接線の傾きが 0 になるときである。数値的に解くには,S(B) を B で微分し,S'(B) = 0 になるときの B の値を求める。
diff(S, B) |> println
27*sqrt(-(B - 64)*(B + 64))*(B - 27)/((B - 64)*(B + 64)) + 27*sqrt(-(B - 64)*(B + 64))/B - 27*sqrt(-(B - 64)*(B + 64))*(B - 27)/B^2
solve(diff(S, B), B)[1] |> println
48
面積が最大になるのは,B が 48 のときである。
S(B => 48) |> println
S(B => 48).evalf() |> println
189*sqrt(7)
500.046997791208
B が 48 のとき,面積は最大値 500.046997791208 になる。
function draw(more)
pyplot(size=(300, 300), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
S = 500.046997791208
B = 48
A = sqrt(4096 - B^2)
a = sqrt(4096 - B^2)*(B - 27)/B
b = S/a
plot([0, B, 0, 0], [0, 0, A, 0], showaxis=false)
rect(0, 0, b, a, :red)
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)
#plot!(showaxis=false, xlims=(-0.1, 9.5))
point(0, A, " A(鈎)", :blue, :left, :bottom, delta=delta/2)
point(B, 0, " B(股)", :blue, :left, :bottom, delta=delta/2)
point(0, a, " a(平)", :red, :left, :bottom, delta=delta/2)
point(b, 0, " b(長)", :red, :left, :bottom, delta=delta/2)
end
end;
draw(true)
※コメント投稿者のブログIDはブログ作成者のみに通知されます