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


算額(その1314)

百四十 群馬県甘楽郡妙義町下高田 高太神社 明治22年(1889)

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


菱形の中に等円を 16 個容れる。菱形の対角線の長いほうが 80 寸,菱形の一辺の長さが 50 寸のとき,等円の直径はいかほどか。

本問は,算額(その928)の類題である。

菱形の対角線を \(2a, 2b;  a > b\)
等円の半径と中心座標を \(r, (x, r), (r, y), ( (2r + x)/3, (r + 2y)/3), ( (r + 2x)/3, (2r + y)/3)\)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms a::positive, b::positive, c::positive,
     r::positive, x::positive, y::positive
b = sqrt(c^2 - a^2) 
eq1 = dist2(a, 0, 0, b, r, y, r)
eq2 = dist2(a, 0, 0, b, x, r, r)
eq3 = (x - r)^2 + (y - r)^2 - 36r^2;

eq1, eq2 から \(y, x\) を求める。

ans_y = solve(eq1, y)[1]
ans_y |> println
ans_x = solve(eq2, x)[1]
ans_x |> println

   (-c*r + (a - r)*sqrt(-a^2 + c^2))/a
   (a^2 - a*c + r*sqrt(-a^2 + c^2))/(a - c)

\(y, x\) を eq3 に代入する。

eq13 = eq3(x => ans_x, y => ans_y) |> expand |> simplify |> numerator
eq13 |> println

   a^3*c^2 - 36*a^3*r^2 - a^2*c^3 - 2*a^2*c^2*r + 36*a^2*c*r^2 + 2*a*c^3*r + 2*a*c^2*r*sqrt(-a^2 + c^2) - 2*c^3*r^2 - 2*c^2*r^2*sqrt(-a^2 + c^2)

\(r\) について解く。

ans_r = solve(eq13, r)[2]  # 2 of 2
ans_r |> println

   a*c*(6*a*(a - c) + c*(-a + c + sqrt(-a^2 + c^2)))/(2*(18*a^3 - 18*a^2*c + c^3 + c^2*sqrt(-a^2 + c^2)))

等円の直径は 2*4.54545454545454 = 9.09090909090908 = 100/11 寸である。

ans_r(a => 80/2, c=> 50, b => 30) |> println

   4.54545454545454

\(ans_x, ans_y\) は \(a, c\) の他に \(r\) を含む式であるが,上で得られた \(ans_r\) を代入すればよい。

ans_x(a => 80/2, c=> 50, r => 50/11) |> println  # 290/11
ans_y(a => 80/2, c=> 50, r => 50/11) |> println  # 230/11

   26.3636363636364
   20.9090909090909

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

function draw(a, c, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   b = sqrt(c^2 - a^2)
   r = a*c*(6*a*(a - c) + c*(-a + c + sqrt(-a^2 + c^2)))/(2*(18*a^3 - 18*a^2*c + c^3 + c^2*sqrt(-a^2 + c^2)))
   y = (-c*r + (a - r)*sqrt(-a^2 + c^2))/a
   x = (a^2 - a*c + r*sqrt(-a^2 + c^2))/(a - c)  
   @printf("a = %g;  b = %g;  c = %g\n", a, b, c)
   @printf("r = %g;  x = %g;  y = %g\n", r, x, y)
   @printf("等円の直径は %g 寸である。\n", 2r)
   plot([a, 0, -a, 0, a], [0, b, 0, -b, 0], color=:green, lw=0.5)
   circle4(r, y, r)
   circle4( (2r + x)/3, (r + 2y)/3, r)
   circle4( (r + 2x)/3, (2r + y)/3, r)
   circle4(x, r, r)
   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(r, y, "(r,y)", :red, :right, delta=-delta, deltax=4delta)
       point(x, r, "(x,r)", :red, :right, delta=-delta, deltax=4delta)
       point(0, b, " b", :green, :left, :bottom, delta=delta/2)
       point(a, 0, " a", :green, :left, :bottom, delta=delta/2)
   end
end;

draw(80/2, 50, true)


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




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

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