以下の内容はhttps://sangaku0418.hatenablog.com/entry/2024/06/14/145735より取得しました。


算額(その1060)

九十四 岩手県大船渡市立根町 五葉神社 文政5年(1822)

山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
キーワード:円3個,正三角形,正方形
#Julia #SymPy #算額 #和算 #数学


正三角形の中に正方形と大円,小円を容れる。大円の直径が 1 寸のとき,小円の直径はいかほどか。

正三角形の一辺の長さを \(2a\)
正方形の対角線の長さを \(b\)
大円の半径と中心座標を \(r_1,\ (x_1,\ r_1)\)
小円の半径と中心座標を \(r_2,\ (0,\ b + r_2)\)
とおき,まず eq1, eq2, eq3 の連立方程式を解き \(a,\ b,\ x_1\) を求める(4元連立方程式を一度に解けないので)。

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

using SymPy
@syms a::positive, b,
     r1::positive, x1::positive, r2::positive
eq1 = dist2(0, 0, b/2, b/2, x1, r1, r1)
eq2 = dist2(a, 0, 0, √Sym(3)a, x1, r1, r1)
eq3 = √Sym(3)a - b/2 - √Sym(3)b/2
res = solve([eq1, eq2, eq3], (a, b, x1))[2]  # 2 of 2

   (-sqrt(6)*r1*sqrt(sqrt(3) + 2)/3 + sqrt(3)*r1/3 + r1 + sqrt(2)*r1 + sqrt(2)*r1*sqrt(sqrt(3) + 2), -sqrt(6)*r1 + 2*sqrt(2)*r1/sqrt(sqrt(3) + 2) + 2*r1 + 3*sqrt(2)*r1, r1*(1 + sqrt(2)))

得られた \(a,\ b\) を eq4 の \(a,\ b\)  に代入し,方程式を解き \(r_2\) を求める。

eq4 = √Sym(3)a - b - 3r2
eq = eq4(a => res[1], b => res[2]);
ans_r2 = solve(eq, r2)[1]
ans_r2 |> println

   r1*(-2*sqrt(2) + sqrt(sqrt(3) + 2)*(-3*sqrt(2) - sqrt(2*sqrt(3) + 4) - 1 + sqrt(3) + sqrt(6*sqrt(3) + 12) + 2*sqrt(6)))/(3*sqrt(sqrt(3) + 2))

@syms d
final = apart(ans_r2, d) |> simplify |> sympy.sqrtdenest |> simplify |> factor
final |> println

   -r1*(-2*sqrt(6) - 3 + sqrt(3) + 3*sqrt(2))/3

小円の半径 \(r_2\) は,大円の半径の \( (2\sqrt{6} + 3 - \sqrt{3} - 3\sqrt{2})/3\) 倍である。

大円の直径が 1 寸のとき,小円の直径は 0.6414293302927311 寸である。

2final(r1 => 1/2).evalf() |> println

   0.641429330292731

その他のパラメータは以下のとおりである。

\(r_1 = 0.5;\ r_2 = 0.320715;\ a = 2.07313;\ b = 2.62863;\ x_1 = 1.20711\)

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

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = 1/2
   t = sqrt(√3 + 2)
   (a, b, x1) = r1 .* (
       -√6t/3 + √3/3 + 1 + √2 + √2t,
       -√6 + 2√2/t + 2 + 3√2,
       1 + √2)
   r2 = r1*(2√6 + 3 - √3 - 3√2)/3
   @printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r2)
   @printf("r1 = %g;  r2 = %g;  a = %g;  b = %g;  x1 = %g\n", r1, r2, a, b, x1)
   plot([a, 0, -a, a], [0, √3a, 0, 0], color=:blue, lw=0.5)
   plot!([0, b/2, 0, -b/2, 0], [0, b/2, b, b/2, 0], color=:magenta, lw=0.5)
   circle2(x1, r1, r1, :green)
   circle(0, b + r2, r2)
   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(a, 0, "a", :blue, :left, :bottom, delta=delta/2)
       point(0, √3a, " √3a", :blue, :left, :vcenter)
       point(0, b, "b", :magenta, :center, :bottom, delta=delta/2)
       point(b/2, b/2, " (b/2,b/2)", :magenta, :left, :vcenter)
       point(0, b + r2, "小円:r2\n(0,b+r2)", :red, :center, :bottom, delta=delta/2)
       point(x1, r1, "大円:r1\n(x1,r1)", :green, :center, :bottom, delta=delta/2)
   end
end;


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




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

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