以下の内容はhttps://sangaku0418.hatenablog.com/entry/2024/05/07/232327より取得しました。


算額(その0929)

百三十五 群馬県安中市鷺宮 咲前神社 明治20年(1887)

群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.

「算額」第三集 全国調査,香川県算額研究会.(香川県立図書館蔵)

キーワード:円5個,外円,菱形
#Julia #SymPy #算額 #和算 #数学


外円の中に大きな菱形が容り,その菱形を合同な 4 個の小さな菱形に区分し,それぞれに内接する等円を容れる。大きな菱形の一辺の長さが 10 寸,等円の直径が 4.8 寸のとき,外円の直径を求めよ。

菱形の一辺の長さを \(c\),短い方の対角線の長さを \(2b\) とする(長いほうの対角線の長さは \(2R\) である)。
菱形の一辺の長さを \(c\) とすると,\(a = \sqrt{c^2 - b^2}\) である。
等円の半径を r とする。中心座標は \( (0,\ b/2),\ (0,\ -b/2),\ (R/2,\ 0),\ (-R/2,\ 0)\) である。
と置き,以下の連立方程式を解く。

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

using SymPy
@syms b::positive,
      R::positive, r::positive, x::positive
eq1 = dist2(R, 0, 0, b, R/2, 0, r)
eq2 = R^2 + b^2 - c^2
(R, b) = solve([eq1, eq2], (R, b))[2];  # 2 of 4

R |> println
R(c=>10, r=>2.4) |> println
b |> println
b(c=>10, r=>2.4) |> println

   sqrt(c - sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2))*sqrt(c + sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2))
   8.00000000000000
   sqrt(c^2/2 - c*sqrt(c - 4*r)*sqrt(c + 4*r)/2)
   6.00000000000000

菱形の一辺の長さが 10 寸,等円の直径が 4.8 寸のとき,外円の直径は 16 寸である。

\(R\) と \(b\) は,手作業でもう少し簡約化できる。

R |> println

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

R = (√2/2)*sqrt(c^2 + c*sqrt(c^2 - 16r^2))
R(c=>10, r=>2.4) |> println

   8.00000000000000

b |> println

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

b = (√2/2)*sqrt(c^2 - c*sqrt(c^2 - 16*r^2))
b(c=>10, r=>2.4) |> println

   6.00000000000000

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

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (c, r) = (10, 4.8/2)
   t = c*sqrt(c^2 - 16r^2)
   R = (√2/2)*sqrt(c^2 + t)
   b = (√2/2)*sqrt(c^2 - t)
   @printf("菱形の一辺の長さが %g,等円の直径が %g のとき,外円の直径は %g である。\n", c, 2r, 2R)
   plot([R, 0, -R, 0, R], [0, b, 0, -b, 0], color=:green, lw=0.5)
   circle(0, 0, R, :blue)
   circle22(0, b/2, r)
   circle2(R/2, 0, r)
   segment(-R/2, -b/2, R/2, b/2, :green)
   segment(R/2, -b/2, -R/2, b/2, :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(0, b, " b", :green, :left, :bottom, delta=delta/2)
       point(R, 0, " R", :green, :left, :bottom, delta=delta/2)
   end
end;


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




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

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