算額(その1414)
八四 加須市不動岡 総願寺 明治12年(1879)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円4個,正方形,斜線3本
#Julia, #SymPy, #算額, #和算
正方形の中に一つの頂点から対角線を含んで 3 本の斜線を引く。できた 4 個の区画に等円を入れる。
問題は判読不能ということであるが,算額(その1413)にも書いたように,どのような問題であるかは何通りか考えることができる。
一案として,「正方形の一辺の長さが与えられたとき,等円の直径を求める術(すべ)を述べよ。」を吟味しよう。
これは算額(その1205)と同じである。
include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
using SymPy
@syms a::positive, b::positive, r::positive, y::positive
eq1 = a + b - sqrt(a^2 + b^2) - 2r
eq2 = dist2(a, 0, 0, b, r, y, r)
eq3 = dist2(a, 0, 0, a, r, y, r)
eq4 = dist2(a, 0, 0, b, r, r, r);
[eq1, eq2, eq3] を使う場合の解と [eq2, eq3, eq4] を使う場合の解では,数値にすると同じであるが,見かけの式は随分違う。
前者では r = a*(1 - sqrt(-1 + sqrt(2)))/2 であるが,
後者では r = a*(-22*sqrt(2) - 3*sqrt(-1 + sqrt(2)) + 33)/(2*(-7*sqrt(2) - 7*sqrt(2)*sqrt(-1 + sqrt(2)) + 8*sqrt(-1 + sqrt(2)) + 11)) であり,SymPy では簡約化できない。
res1 = solve([eq1, eq2, eq3], (r, y, b))[3] # 3 of 3
(a*(1 - sqrt(-1 + sqrt(2)))/2, -sqrt(2)*a/2 + sqrt(2)*a*sqrt(-2 + 2*sqrt(2))/4 + a*sqrt(-2 + 2*sqrt(2))/2 + a/2, a*(-20 - 2*sqrt(-2 + 2*sqrt(2)) + 3*sqrt(-1 + sqrt(2)) + 14*sqrt(2))/(-12*sqrt(-1 + sqrt(2)) - 4 + 3*sqrt(2) + 8*sqrt(2)*sqrt(-1 + sqrt(2))))
res1[1](a => 3973).evalf() |> println
res1[2](a => 3973).evalf() |> println
res1[3](a => 3973).evalf() |> println
708.000016603060
2263.73675775652
1808.07201601373
res2 = solve([eq2, eq3, eq4], (r, y, b))[4] # 4 of 4
(a*(-22*sqrt(2) - 3*sqrt(-1 + sqrt(2)) + 33)/(2*(-7*sqrt(2) - 7*sqrt(2)*sqrt(-1 + sqrt(2)) + 8*sqrt(-1 + sqrt(2)) + 11)), a*(-3*sqrt(-1 + sqrt(2)) - sqrt(2) + sqrt(-2 + 2*sqrt(2)) + 3)/(2*(-sqrt(2) + sqrt(2)*sqrt(-1 + sqrt(2)) + 1)), a*sqrt(-1/2 + sqrt(2)/2))
res2[1](a => 3973).evalf() |> println
res2[2](a => 3973).evalf() |> println
res2[3](a => 3973).evalf() |> println
708.000016603060
2263.73675775652
1808.07201601373
正方形の一辺の長さが 3973 のとき,等円の直径は 1416.0000 有奇である。
全てのパラメータは以下のとおりである。
a = 3973; r = 708; y = 2263.74; b = 1808.07
function draw(a, more)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(r, y, b) = (a*(1 - sqrt(-1 + sqrt(2)))/2, -sqrt(2)*a/2 + sqrt(2)*a*sqrt(-2 + 2*sqrt(2))/4 + a*sqrt(-2 + 2*sqrt(2))/2 + a/2, a*(-20 - 2*sqrt(-2 + 2*sqrt(2)) + 3*sqrt(-1 + sqrt(2)) + 14*sqrt(2))/(-12*sqrt(-1 + sqrt(2)) - 4 + 3*sqrt(2) + 8*sqrt(2)*sqrt(-1 + sqrt(2))))
@printf("正方形の一辺の長さが %.9g のとき,等円の直径は %.9g である。\n", a, 2r)
@printf("a = %g; r = %g; y = %g; b = %g\n", a, r, y, b)
plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:green, lw=0.5)
circle(r, r, r)
circle(r, y, r)
circle(a - y, a - r, r)
circle(a - r, a - r, r)
segment(0, a, a, 0, :magenta)
segment(0, b, a, 0, :magenta)
segment(a - b, a, a, 0, :magenta)
if more
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3 # size[2] * fontsize * 2
hline!([0], color=:gray80, lw=0.5)
point(r, r, "等円:r,(r,r)", :red, :left, :center, delta=-delta)
point(r, y, "等円:r,(r,y)", :red, :left, :center, delta=-delta)
point(0, b, "b ", :magenta, :right, :vcenter)
point(a, 0, "a", :green, :center, delta=-delta/2)
plot!(xlims=(-4delta, a + 5delta), ylims=(-4delta, a + 5delta))
end
end;
draw(3973, true)
※コメント投稿者のブログIDはブログ作成者のみに通知されます