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


算額(その1252)

七十四 群馬県甘楽郡妙義町菅原 菅原神社 嘉永4年(1851)

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


5 個の大円が交差する隙間に 6 個の小円を容れる。大円の直径が 5 寸のとき,小円の直径はいかほどか。



大円の半径と中心座標を \(r_1, (0, r_1 + r_2)\)
小円の半径と中心座標を \(r_2, (0, 0), (x_2, y_2); y_2 = x_2\text{tand}(54)\)
とおき,以下の連立方程式を解く。

一度に解くと \(r_2\) を表す式がとてつもなく複雑になるので,まず eq2 から \(x_2\) を求め,その解を eq1 に代入して \(r_2\) を求める。

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

using SymPy
@syms r1::positive, r2::positive, x2::positive, y2::positive;
y2 = x2*tand(Sym(54))
eq1 = x2^2 + (r1 + r2 - y2)^2 - (r1 - r2)^2
eq2 = x2 - (r1 + r2)*cosd(Sym(18))/2;

ans_x2 = solve(eq2, x2)[1];
eq11 = eq1(x2 => ans_x2);

@syms d
ans_r2 = solve(eq11, r2)[1]
ans_r2 = solve(eq11, r2)[1]/r1 |> x -> apart(x, d)*r1 |> simplify
ans_r2 |> println
(ans_r2.evalf()) |> println
ans_r2(r1 => 5/2).evalf() |> println

   r1*(-2*sqrt(10*sqrt(5) + 50) - 4*sqrt(5) + 11 + 4*sqrt(2*sqrt(5) + 10))
   0.259616183682498*r1
   0.649040459206249

小円の半径 \(r_2\) は,大円の半径 \(r_1\) の \(-2 \sqrt{10 \sqrt{5} + 50} - 4 \sqrt{5} + 11 + 4 \sqrt{2 \sqrt{5} + 10} = 0.259616183682498\) 倍である。
大円の直径が 5 寸のとき,小円の直径は 1.29808091841249 寸である。

ans_x2 = ans_x2(r2 => ans_r2) |> simplify
ans_x2 |> println
ans_x2.evalf() |> println
ans_x2(r1 => 5/2).evalf() |> println

   r1*(-sqrt(10*sqrt(5) + 50) - 3*sqrt(5) + 5 + 3*sqrt(2*sqrt(5) + 10))/2
   0.598983089761036*r1
   1.49745772440259

大円の直径が 5 寸のとき,小円の半径の中心座標は (3.743644311006475 寸, 5.152684346344076 寸) である。

1.49745772440259*5/2, 1.49745772440259*5/2*tand(54)

   (3.743644311006475, 5.152684346344076)

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

function draw(r1, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r2 = r1*(11 + 4*sqrt(2√5 + 10) - 2sqrt(10√5 + 50) - 4√5)
   x2 = r1*( 5 + 3*sqrt(2√5 + 10) -  sqrt(10√5 + 50) - 3√5)/2
   y2 = x2*tand(54)
   @printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r2)
   plot()
   rotate(0, r1 + r2, r1, angle=72)
   rotate(x2, y2, r2, :blue, angle=72)
   circle(0, 0, r2, :blue)
   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(x2, y2, " 小円:r2,(x1,y2)", :blue, :left, :vcenter)
       point(0, r1 + r2, "大円:r1,(0,r1+r2)", :red, :center, :bottom, delta=delta/2)
   end
end;

draw(5/2, true)


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




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

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