裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

算額(その1154)

2024年07月17日 | Julia

算額(その1154)

一〇一 大宮市高鼻町 氷川神社 明治31年(1898)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円7個,楕円1個

外円の中に楕円 1 個,甲円 2 個を容れ,隙間に乙円 2 個,丙円 2 個を容れる。乙円の直径が 1 寸のとき,丙円の直径はいかほどか。

注:これだけでは条件不足である。「問」には書かれていないが,乙円は楕円の曲率円である。そのように解釈すれば条件は足りる。

楕円の長半径,短半径と中心座標を a, b, (0, 0); a = r1 + r3, b = a - 2r3
外円の半径と中心座標を R, (0, 0); R = a
甲円の半径と中心座標を r1, (0, R - r1)
乙円の半径と中心座標を r2, (R - r2, 0)
丙円の半径と中心座標を r3, (0, R - r3)
とおき,以下の連立方程式を解く。

include("julia-source.txt")

using SymPy

@syms a, b, R, r1, r2, r3

a = r1 + r3
b = a - 2r3
R = a
eq1 = (R - r2)^2 + (R - r1)^2 - (r1 + r2)^2
eq2 = r2 - b^2/a
res= solve([eq1, eq2], (r3, r1))[3]  # 3 of 3

   (r2*(sqrt(2) + 2)/2, r2*(4 + 3*sqrt(2))/2)

丙円の半径 r3 は,乙円の半径 r2 の √2/2 + 1 倍である。
乙円の直径が 1 寸のとき,丙円の直径は 1.7071067811865475 寸である。

術」は簡約化すれば,「乙円の径の √2/2 + 1 倍が丙円の径である」となり,同じである。

乙径 = 1
天 = √8 + 3
(天 - √天)*乙径/2

   1.7071067811865475

(√Sym(8) + 3 - sqrt(√Sym(8) + 3))/2 |> sympy.sqrtdenest |> simplify |> println

   sqrt(2)/2 + 1

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

  r2 = 0.5;  r3 = 0.853553;  r1 = 2.06066;  a = 2.91421;  b = 1.20711

function draw(r2, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   #@printf("正方形の一辺の長さが %g,大円の直径が %g のとき,小円の直径は %g である。\n", a, 2r1, 2r2)
   (r3, r1) = (r2*(sqrt(2) + 2)/2, r2*(4 + 3*sqrt(2))/2)
   a = r1 + r3
   b = a - 2r3
   @printf("乙円の直径が %g のとき,丙円の直径は %g である。\n", 2r2, 2r3)
   @printf("r2 = %g;  r3 = %g;  r1 = %g;  a = %g;  b = %g\n", r2, r3, r1, a, b)
   plot()
   circle(0, 0, a, :orange)
   circle22(0, a - r1, r1)
   circle22(0, a - r3, r3, :blue)
   circle2(a - r2, 0, r2, :green)
   ellipse(0, 0, a, b, color=:magenta)
   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, a - r1, "甲円:r1,(0,a-r1)", :red, :center, delta=-delta/2)
       point(a - r2, 0, "乙円:r2\n(a-r2,0)", :green, :center, :bottom, delta=delta/2)
       point(0, a - r3, "丙円:r3,(0,a-r3)", :blue, :center, delta=-delta/2)
       point(0, b, "b", :magenta, :center, delta=-delta/2)
       point(0, a - 2r3, "a-2r3", :blue, :center, :bottom, delta=delta/2)
       point(0, a, "a", :orange, :center, :bottom, delta=delta/2)
       point(a, 0, " a", :orange, :left, :bottom, delta=delta/2)
   end
end;


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1153) | トップ | Julia で統計解析 2024/7/18 版 »
最新の画像もっと見る

コメントを投稿

Julia」カテゴリの最新記事