以下の内容はhttps://sangaku0418.hatenablog.com/entry/2024/10/08/152820より取得しました。


算額(その1337)

新潟県小千谷市 小千谷二荒神社 天保4年(1833)

和算の館
http://www.wasan.jp/niigata/niko.html

涌田和芳,外川一仁:小千谷二荒神社の紛失算額,長岡工業高等専門学校研究紀要,第 51 巻,p.35-40,2015.
https://kinpoku.nagaoka-ct.ac.jp/lib/kiyo/vol_51/51_35wakuta.pdf

キーワード:累円,長方形
#Julia #SymPy #算額 #和算 #数学


長方形の中に円弧,等円から始まる累円を容れる。長方形の長辺の長さが 28寸,等円の直径が 4 寸,累円の松園の直径が 1 寸のとき,(等円の次から末円までの)左右の円の個数はいくつか。

長方形の長辺の長さを \(2a\)
円弧の半径と中心座標を \(R,\ (0,\ R)\)
等円の半径と中心座標を \( (x_1,\ r_1);\ x_1 = a - r_1\)
二円,三円の半径と中心座標を \([r_2,\ (x_2,\ r_2)],\ [r_3,\ (x_3,\ r_3)],\ \dots\)
末円の半径と中心座標を \(r_n,\ (x_n,\ r_n)\)
とおく。

まず,円弧と等円,二円の関連について以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース

using SymPy
@syms R::positive, a::positive,
     r1::positive, x1::posistive,
     r2::positive, x2::posistive;
x1 = a - r1
eq1 = x1^2 + (R - r1)^2 - (R + r1)^2
eq2 = x2^2 + (R - r2)^2 - (R + r2)^2
eq3 = (x1 - x2)^2 + (r1 - r2)^2 - (r1 + r2)^2
res = solve([eq1, eq2, eq3], (R, r2, x2))[2];

二円の半径は \(r_1(r_1 - a)^2/(a + r_1)^2\) である。

res[1] |> println
res[2] |> println
res[3] |> factor |> println

   (-a + r1)^2/(4*r1)
   r1*(-a + r1)^2/(a + r1)^2
   (-a + r1)^2/(a + r1)

次に,\(R,\ r_2,\ x_2\) が既知として,三円のパラメータ \(r_3,\ x_3\) を求める。

@syms r3::positive, x3::posistive;
(R, r2, x2) = (x1^2/(4*r1), r1*x1^2/(2*r1 + x1)^2, x1^2/(2*r1 + x1))
eq4 = x3^2 + (R - r3)^2 - (R + r3)^2
eq5 = (x2 - x3)^2 + (r2 - r3)^2 - (r2 + r3)^2
res2 = solve([eq4, eq5], (r3, x3))[2];

res2[1] |> simplify |> factor |> println
res2[2] |> simplify |> factor |> println

   r1*(-a + r1)^2/(a + 3*r1)^2
   (-a + r1)^2/(a + 3*r1)

三円の半径は \(r_1(r_1 - a)^2/(a + 3r_1)^2\) である。

さらに,\(r_3,\ x_3\) も既知として,四円のパラメータ \(r_4,\ x_4\) を求める。

@syms r4::positive, x4::posistive;
(R, r2, x2) = (x1^2/(4*r1), r1*x1^2/(2*r1 + x1)^2, x1^2/(2*r1 + x1))
(r3, x3) = (r1*(-a + r1)^2/(a + 3*r1)^2, (-a + r1)^2/(a + 3*r1))
eq6 = x4^2 + (R - r4)^2 - (R + r4)^2
eq7 = (x3 - x4)^2 + (r3 - r4)^2 - (r3 + r4)^2
res3 = solve([eq6, eq7], (r4, x4))[2];

res3[1] |> simplify |> factor |> println
res3[2] |> simplify |> factor |> println

   r1*(-a + r1)^2/(a + 5*r1)^2
   (-a + r1)^2/(a + 5*r1)

ここまでやってくると,累円の半径は規則的な式で表されていることがわかる。
\(r_1(r_1 - a)^2/(a + 1r_1)^2\)
\(r_1(r_1 - a)^2/(a + 3r_1)^2\)
\(r_1(r_1 - a)^2/(a + 5r_1)^2\)

なお,各段階での累円の半径は,\(r_1,\ a\) のみで表されることがわかり,四円の半径は 0.5 であることもわかる。

res3[1](r1 => 4//2, a => 28//2) |> println

   1/2

もう少し考察を進めていく予定であったが,答えが出てしまった。
つまり,四円の直径がちょうど 1 寸であり,これが末円である。
累円は,二円,三円,四円の 3 個,左右合わせて 6 個というのが解である。

\(r_2 = 1.125,\ x = 9,\ 直径 = 2.25\)
\(r_3 = 0.72,\ x = 7.2,\ 直径 = 1.44\)
\(r_4 = 0.5,\ x = 6,\ 直径 = 1\)
\(r_5 = 0.367347,\ x = 5.14286,\ 直径 = 0.734694\)
\(r_6 = 0.28125,\ x = 4.5,\ 直径 = 0.5625\)
\(r_7 = 0.222222,\ x = 4,\ 直径 = 0.444444\)
\(r_8 = 0.18,\ x = 3.6,\ 直径 = 0.36\)
\(r_9 = 0.14876,\ x = 3.27273,\ 直径 = 0.297521\)
\(r_10 = 0.125,\ x = 3,\ 直径 = 0.25\)
\(r_11 = 0.106509,\ x = 2.76923,\ 直径 = 0.213018\)

以下では追加的に一般解を求める。等円の次の円から順に一番目,二番目,...,\(n\) 番目とすれば,\(n\) 番目の円の半径は \( r_1(r_1 - a)^2/(a + (2n - 1)r_1)^2\)
中心の \(x\) 座標は \( (r_1 - a)^2/(a + (2n - 1)r_1)\)
である。

等円の直径が 4 寸,長方形の長辺が 28 寸のとき,「\(半径 - 0.5\)」の式を \(n\) で解くと \(n = 3\) が得られる。

@syms n, rn
rn = r1*(r1 - a)^2/(a + (2n - 1)*r1)^2
rn = rn(r1 => 4//2, a => 28//2)
rn |> println

   288/(4*n + 12)^2

eq = rn - 1//2
eq |> println

   -1/2 + 288/(4*n + 12)^2

solve(eq, n)[2] |> println

   3

描画関数プログラムのソースを見る

function draw(a, r1, more)
   pyplot(size=(700, 700), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   names = ["二", "三", "四"]
   (R, r2, x2) = ( (-a + r1)^2/(4*r1), r1*(-a + r1)^2/(a + r1)^2, (a^2 - 2*a*r1 + r1^2)/(a + r1))
   x1 = a - r1
   θ = atand(-sqrt(R^2 - a^2), a)
   plot()
   rect(-a, 0, a, R - sqrt(R^2 - a^2), :green)
   circlef(0, R, R, :cornsilk2, beginangle=180 - θ, endangle=360 + θ)
   circle2f(x1, r1, r1)
   for n = 1:100
       i = 2n - 1
       r = r1*(r1 - a)^2/(a + i*r1)^2
       x = (r1 - a)^2/(a + i*r1)
       n <= 10 && @printf("r%d = %g, x = %g, 直径 = %g\n", n + 1, r, x, 2r)
       circle2f(x, r, r, i)
       n <= 3 && point(x, r, names[n], :white, :center, :vcenter, mark=false)
   end
   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(x1, r1, "等円:r1\n(x1,r1)", :white, :center, delta=-3delta)
       point(a, R - sqrt(R^2 - a^2), "(a,R-√(R^2-a^2))", :green, :right, :bottom, delta=delta/2)
   end  
end;

draw(28/2, 4/2, true)


以下のアイコンをクリックして応援してください




以上の内容はhttps://sangaku0418.hatenablog.com/entry/2024/10/08/152820より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14