以下の内容はhttps://sangaku0418.hatenablog.com/entry/2024/09/03/153431より取得しました。


算額(その1268)

百三十三 群馬県高崎市山名町 八幡宮 明治18年(1885)

群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円3個,直角三角形
#Julia #SymPy #算額 #和算 #数学


直角三角形の底辺に大円 1 個,等円 2 個が互いに接し合って載っている。直角三角形の直角を挟む二辺の短い方(鈎)が 2.8 寸,長い方(股)が 6.72 寸のとき,大円の直径はいかほどか。

鈎,股をそのまま「鈎」,「股」
大円の半径と中心座標を \(r_1,\ (r_1,\ r_1)\)
等円の半径と中心座標を \(r_2,\ (r_2,\ r_2),\ (x_2, r_2)\)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms 鈎::positive, 股::positive,
     r1::positive, r2::positive, x2::positive;
eq1 = 2(r1 - r2)^2 - (r1 + r2)^2
eq2 = x2 + r2 - 2r1
eq3 = dist2(0, 鈎, 股, 0, x2, r2, r2);
# res = solve([eq1, eq2, eq3], (r1, r2, x2))

たかが三元連立方程式なのに,Python では一度に解けないので,まず eq1, eq2 を解いて \(r_2,\ x_2\) を求める。

res = solve([eq1, eq2], (r2, x2))[1];
ans_r2 = res[1] |> simplify;
ans_r2 |> println
ans_x2 = res[2]
ans_x2 |> println;

   r1*(3 - 2*sqrt(2))
   r1*(-1 + 2*sqrt(2))

eq3 に \(r_2,\ x_2\) を代入し,\(r_1\) を求める。

eq13 = eq3(r2 => ans_r2, x2 => ans_x2);
ans_r1 = solve(eq13, r1)[2]
ans_r1 |> println

   股*(-3*股 + 2*sqrt(2)*股 - 2*sqrt(2)*鈎 + 鈎 + sqrt(17 - 12*sqrt(2))*sqrt(股^2 + 鈎^2))/(2*(-8*sqrt(2)*股 + 11*股 - 4*sqrt(2)*鈎 + 4*鈎))

    \(\displaystyle \frac{股 \left(- 3 股 + 2 \sqrt{2} 股 - 2 \sqrt{2} 鈎 + 鈎 + \sqrt{17 - 12 \sqrt{2}} \sqrt{股^{2} + 鈎^{2}}\right)}{- 16 \sqrt{2} 股 + 22 股 - 8 \sqrt{2} 鈎 + 8 鈎}\)

複雑な式になるが,鈎 =2.8, 股 = 6.72 を代入すると \(r_1 = 5.00318003274053\) が得られる。

2ans_r1(鈎 => 2.8, 股 => 6.72).evalf() |> println

   5.00318003274053

すべてのパラメータは以下のとおりである。

\(鈎 = 2.8;\  股 = 6.72;\  r_1 = 2.50159;\  r_2 = 0.429205;\  x_2 = 4.57398\)

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

function draw(鈎, 股, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = 股*(-3*股 + 2*sqrt(2)*股 - 2*sqrt(2)*鈎 + 鈎 + (3 - 2*sqrt(2))*sqrt(股^2 + 鈎^2))/(2*(-8*sqrt(2)*股 + 11*股 - 4*sqrt(2)*鈎 + 4*鈎))
   r2 = r1*(3 - 2*sqrt(2))
   x2 = r1*(-1 + 2*sqrt(2))
   @printf("鈎,股が %g, %g のとき,大円の直径は %g である。\n", 鈎, 股, 2r1)
   @printf("鈎 = %g;  股 = %g;  r1 = %g;  r2 = %g;  x2 = %g\n", 鈎, 股, r1, r2, x2)
   plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:blue, lw=0.5)
   circle(r1, r1, r1)
   circle(x2, r2, r2, :green)
   circle(r2, r2, r2, :green)
   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(r1, r1, "大円:r1,(r1,r1)", :red, :center, delta=-delta/2)
       point(r2, r2, "等円:r2,(r2,r2)", :green, :left, :bottom, delta=delta, deltax=7delta)
       point(x2, r2, "r2,(x2,r2)", :green, :right, :bottom, delta=delta, deltax=-7delta)
       point(0, 鈎, "鈎 ", :blue, :right, :vcenter)
       point(股, 0, " 股", :blue, :left, delta=-delta/2)
       plot!(xlims=(-6delta, 股 + 5delta), ylims=(-5delta, 2r1 + delta))
   end
end;

draw(2.8, 6.72, true)


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




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

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