裏 RjpWiki

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

算額(その1176)

2024年08月01日 | Julia

算額(その1176)

一八 大里郡岡部村岡 稲荷社 文化14年(1817)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

(9) 滋賀県新旭町大田 大田神社 慶応4年(1868)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.

キーワード:円3個,正方形,等脚台形

正方形の中に等脚台形と円 3 個を容れる。甲円と丙円の直径が 3 寸,1 寸のとき,乙円の直径を求めよ。

正方形の一辺の長さを a
台形の頂点の座標を (0, b), (c, a), (a, d)
甲円の半径と中心座標を r1, (a - r1, a - r1)
乙円の半径と中心座標を r2, (a - r2, r2)
丙円の半径と中心座標を r3, (r3, a - r3)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

@syms a::positive, b::positive, c::positive, d::positive,
     r1::positive, r2::positive, r3::positive, 
     l1::positive, l2::positive, l3::positive
l1 = (a - c)^2 + (a - d)^2
l2 = a^2 + d^2
l3 = (a - b)^2 + c^2
eq1 = l1 - b^2 |> expand
eq2 = ((a - d) + (a - c) - 2r1)^2 - l1
eq3 = (d + a - 2r2)^2 - l2 |> expand
eq4 = ((a - b) + c - 2r3)^2 - l3 |> expand
eq5 = r2 - a*r3/c  # c/a - r3/r2 |> expand;
#res = solve([eq1, eq2, eq3, eq6, eq5], (a, b, c, d, r2))
res = solve([eq1, eq3, eq4, eq5], (a, b, c, d))[4];  # 4 of 4
res |> println

   (r2*(2*r2 + sqrt(2*r2^2 + 2*r3^2))/(r2 - r3), (2*r2^3 + r2^2*sqrt(2*r2^2 + 2*r3^2) + 2*r2*r3^2 + r3^2*sqrt(2*r2^2 + 2*r3^2))/(r2^2 - r3^2), r3*(2*r2 + sqrt(2*r2^2 + 2*r3^2))/(r2 - r3), r2*(2*r2 + sqrt(2*r2^2 + 2*r3^2))/(r2 + r3))

eq2 = eq2(a => res[1], b => res[2], c => res[3], d => res[4]);

eq12 = eq2(r1 => 3/2, r3 => 1/2) |> simplify;

solve(eq12, r2)[1] |>  println

   3.50000000000000

甲円,丙円の直径が 3, 1 のとき,乙円の直径は 7 である。

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

  r1 = 1.5;  r3 = 0.5;  r2 = 3.5;  a = 14;  b = 12.5;  c = 2;  d = 10.5

function draw(r1, r3, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r2 = 3.5
   (a, b, c, d) = (r2*(2*r2 + sqrt(2*r2^2 + 2*r3^2))/(r2 - r3), (2*r2^3 + r2^2*sqrt(2*r2^2 + 2*r3^2) + 2*r2*r3^2 + r3^2*sqrt(2*r2^2 + 2*r3^2))/(r2^2 - r3^2), r3*(2*r2 + sqrt(2*r2^2 + 2*r3^2))/(r2 - r3), r2*(2*r2 + sqrt(2*r2^2 + 2*r3^2))/(r2 + r3))
   @printf("甲円,丙円の直径が %g, %g のとき,乙円の直径は %g である。\n", 2r1, 2r3, 2r2)
   @printf("r1 = %g;  r3 = %g;  r2 = %g;  a = %g;  b = %g;  c = %g;  d = %g\n", r1, r3, r2, a, b, c, d)
   plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:magenta, lw=0.5)
   plot!([0, a, c, 0, 0], [0, d, a, b, 0], color=:orange, lw=0.5)
   circle(a - r1, a - r1, r1)
   circle(a - r2, r2, r2, :blue)
   circle(r3, a - r3, r3, :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(a - r1, a - r1, "甲円:r1\n(a-r1,a-r1)", :red, :center, :bottom, delta=delta/2)
       point(a - r2, r2, "乙円:r2,(a-r2,r2)", :blue, :center, delta=-delta/2)
       point(r3, a - r3, "  丙円:r3,(r3a-r3)", :green, :left, delta=-delta)
       point(a, 0, " a", :magenta, :left, :bottom, delta=delta/2)
       point(0, b, "b ", :magenta, :right, :vcenter)
       point(c, a, "(c,a)", :magenta, :center, :bottom, delta=delta/2)
       point(a, d, " (a,d)", :magenta, :left, :vcenter)
       xlims!(-4delta, a + 4delta)
   end
end;

draw(3/2, 1/2, true)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村