裏 RjpWiki

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

算額(その1220)

2024年08月16日 | Julia

算額(その1220)

(2) 大阪府豊中市服部元町 服部天神社 天保14年(1843)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.
キーワード:円8個,外円

外円の中に 7 個の円を容れる。外円と甲円の直径が 3 寸,1.8 寸のとき,乙円,丙円,丁円の直径を求めよ。

算額(その868)」は累円であるが,これはそのうちの最初に 3 個の円についてである。
パラメータの求め方はそちらを参照(なお,SymPy のバージョンの違いで,当時「算額(その868)」で得られた解が今では違ったものになっている)。
ここでは,累円それぞれの数値解を求めるやりかたでパラメータを求める。

include("julia-source.txt");

using SymPy

@syms R::positive, r1::positive,
     r2::positive, x2::positive, y2::real,
     r3::positive, x3::positive, y3::real,
     r4::positive, x4::positive, y4::positive
R = 3//2
r1 = 18//20
x2 = r2
eq1 = r2^2 + y2^2 - (R - r2)^2
eq4 = r2^2 + (R - r1 - y2)^2 - (r1 + r2)^2;

res1 = solve([eq1, eq4], (r2, y2))[1]

   (9/16, -3/4)

@syms R::positive, r1::positive,
     r2::positive, x2::positive, y2::real,
     r3::positive, x3::positive, y3::real
R = 3//2
r1 = 18//20
(r2, y2) = (9//16, 3//4)
x2 = r2
eq2 = x3^2 + y3^2 - (R - r3)^2
eq5 = x3^2 + (R - r1 - y3)^2 - (r1 + r3)^2
eq7 = (x3 - x2)^2 + (y3 - y2)^2 - (r3 + r2)^2;

res2 = solve([eq2, eq5, eq7], (r3, x3, y3))[2]

   (3/8, 9/8, 0)

@syms R::positive, r1::positive,
     r2::positive, x2::positive, y2::real,
     r3::positive, x3::positive, y3::real
R = 3//2
r1 = 18//20
(r2, y2) = (9//16, 3//4)
x2 = r2
(r3, x3, y3) = (3/8, 9/8, 0)
eq3 = x4^2 + y4^2 - (R - r4)^2
eq6 = x4^2 + (R - r1 - y4)^2 - (r1 + r4)^2
eq8 = (x4 - x3)^2 + (y4 - y3)^2 - (r4 + r3)^2;

res2 = solve([eq3, eq6, eq8], (r4, x4, y4))[1]

   (0.225000000000000, 1.12500000000000, 0.600000000000000)

外円と甲円の直径が 3 寸,1.8 寸のとき,乙円,丙円,丁円の直径は 9/8 寸,3/4 寸,9/20 寸である。

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (R, r1) = (3/2, 1.8/2)
   (r2, x2, y2) = (0.5624999999999999, 0.5624999999999999, -0.75)
   (r3, x3, y3) = (0.3749999999999999, 1.125, -3.3306690738754696e-16)
   (r4, x4, y4) = (0.225000000000000, 1.12500000000000, 0.600000000000000)
   plot()
   circlef(0, 0, R, :cornsilk2)
   circle2f(0, R - r1, r1, 1)
   circle2f(x2, y2, r2, 2)
   circle2f(x3, y3, r3, 3)
   circle2f(x4, y4, r4, 4)
   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, R, "R", :black, :center, :bottom, delta=delta)
       point(0, R - r1, "甲円:r1,(0,R-r1)", :white, :center, delta=-delta)
       point(x2, y2, "乙円:r2,(x2,y2)", :white, :center, delta=-delta)
       point(x3, y3, "丙円:r3\n(x3,y3)", :white, :center, :vcenter)
       point(x4, y4, "丁円:r4\n(x4,y4)", :white, :center, :vcenter)
   end
end;

draw(true)

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

コメントを投稿

Julia」カテゴリの最新記事