裏 RjpWiki

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

算額(その1283)

2024年09月08日 | Julia

算額(その1283)

長野県小諸市荒町 八幡宮 天保9年(1838)
香川県算額研究会:「算額」第四集 全国調査
キーワード:円7個,外円,弦

外円の中に,水平な弦を引き,甲円 1 個,乙円 1 個,丙円 4 個を容れる。甲円,乙円の直径が 6.4 寸,1.6 寸のとき,丙円の直径はいかほどか。

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

include("julia-source.txt");

using SymPy
@syms R::positive, r1::positive, r2::positive,
     r3::positive, x31::positive, x32::positive;
R = r1 + r2
eq1 = x32^2 + (2r2 - R - r3)^2 - (R - r3)^2
eq2 = x32^2 + (r2 - r3)^2 - (r2 + r3)^2
eq3 = x31^2 + (2r2- R + r3)^2 - (R - r3)^2
res = solve([eq1, eq2, eq3], (r3, x31, x32))[1]

   (r1*r2/(r1 + r2), 2*r1*sqrt(r2)/sqrt(r1 + r2), 2*sqrt(r1)*r2/sqrt(r1 + r2))

丙円の半径 r3 は,甲円,乙円の半径 r1, r2 により,r1*r2/(r1 + r2) と表せる。
甲円,乙円の直径が 6.4 寸,1.6 寸のとき,丙円の直径は (6.4 * 1.6)/(6.4 + 1.6) = 1.28 寸である。

すべてのパラメータは以下のとおりである。

   r1 = 3.2;  r2 = 0.8;  R = 4;  r3 = 0.64;  x31 = 2.86217;  x32 = 1.43108;  

function draw(r1, r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r3, x31, x32) = (r1*r2/(r1 + r2), 2*r1*sqrt(r2)/sqrt(r1 + r2), 2*sqrt(r1)*r2/sqrt(r1 + r2))
   R = r1 + r2
   @printf("甲円,乙円の直径が %g,%g のとき,丙円の直径は %g である。\n", 2r1, 2r2, 2r3)
   @printf("r1 = %g;  r2 = %g;  R = %g;  r3 = %g;  x31 = %g;  x32 = %g;  \n", r1, r2, R, r3, x31, x32)
   plot()
   circle(0, 0, R, :green)
   circle(0, R - r1, r1)
   circle(0, r2 - R, r2, :blue)
   circle2(x31, 2r2 - R + r3, r3, :magenta)
   circle2(x32, 2r2 - R - r3, r3, :magenta)
   y = 2r2 - R
   x = sqrt(R^2 - y^2)
   segment(-x, y, x, y, :black)
   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", :green, :center, :bottom, delta=delta/2)
       point(0, R - r1, "甲円:r1,(0,R-r1)", :red, :center, delta=-delta/2)
       point(0, r2 - R, "乙円:r2\n(0,r2-R)", :blue, :center, delta=-delta/2)
       point(x31, 2r2 - R + r3, "丙円:r3\n(x31,2r2-R+r3)", :magenta, :center, delta=-delta/2)
       point(x32, 2r2 - R - r3, "丙円:r3\n(x32,2r2-R-r3)", :magenta, :center, delta=-delta/2)
       point(0, R - 2r1, "R-2r1", :red, :center, :bottom, delta=delta/2)
       point(0, 2r2 - R, "2r2-R", :blue, :center, delta=-delta/2)
   end

end;

draw(6.4/2, 1.6/2, true)

 

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

算額(その1282)

2024年09月08日 | Julia

算額(その1282)

百五十二 群馬県前橋市下大屋町 産泰神社 年代不明
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円3個,正方形

正方形の中に大円 1 個,小円 2 個を容れる。大円の直径が与えられたとき,小円の直径はいかほどか。

大円の半径と中心座標を r1, (r1, r1); 正方形の一辺の長さは a = 2r1
小円の半径と中心座標を r2, (x2, r2), (a - r2, a - x2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive, x2::positive, a::positive;
a = 2r1
eq1 = (x2 - r1)^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = 2(2r1 - r2 - x2)^2 - 4r2^2
res = solve([eq1, eq2], (r2, x2))[1]  # 1 of 3

   ((-r1 + r1*(-2*sqrt(2) + sqrt(8 - 4*sqrt(2)) + 3))^2/(4*r1), r1*(-2*sqrt(2) + sqrt(8 - 4*sqrt(2)) + 3))

res[1] |> simplify |> println

   r1*(-1 - sqrt(2 - sqrt(2)) + sqrt(2))^2

res[2] |> println

   r1*(-2*sqrt(2) + sqrt(8 - 4*sqrt(2)) + 3)

小円の半径 r2は,大円の半径 r1 の (√2 - 1 - sqrt(2 - √2))^2 倍である。
大円の直径が 1 寸のとき,小円の直径は 0.12330864175628588 寸である。

すべてのパラメータは以下のとおりである。

   r1 = 0.5;  r2 = 0.0616543;  x2 = 0.851153

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

end;

draw(1/2, true)

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

算額(その1281)

2024年09月08日 | Julia

算額(その1281)

百五十一 群馬県前橋市下大屋町 産泰神社 年代不明
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,直線上

直線の上に大円 2 個に挟まれて,中円 1 個,小円 2 個が載っている。大円の直径が与えられたとき,小円の直径はいかほどか。

大円の半径と中心座標を r1, (r1, r1)
中円の半径と中心座標を r2, (0, r2)
小円の半径と中心座標を r3, (x3, r3)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive,
     r3::positive, x3::positive;
eq1 = r1^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = (r1 - x3)^2 + (r1 - r3)^2 - (r1 + r3)^2
eq3 = x3^2 + (r2 - r3)^2 - (r2 + r3)^2
res = solve([eq1, eq2, eq3], (r2, r3, x3))[1]

   (r1/4, r1/9, r1/3)

小円の半径 r3 は,大円の半径の 1/9 倍である。
大円の直径が 9 寸のとき,小円の直径は 1 寸である。
ちなみに,中円の直径は大円の直径の 1/4 倍である。

function draw(r1, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r2, r3, x3) = (r1/4, r1/9, r1/3)
   @printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r3)
   plot()
   circle2(r1, r1, r1)
   circle(0, r2, r2, :green)
   circle2(x3, r3, r3, :blue)
   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(r1, r1, "大円:r1,(r1,r1)", :red, :center, delta=-delta)
       point(0, r2, " 中円:r2,(0,r2)", :green, :left, :bottom, delta=delta)
       point(x3, r3, "小円:r3,(x3,r3) ", :blue, :left, :vcenter, deltax=6delta)
   end

end;

draw(9/2, true)

 

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

算額(その1280)

2024年09月08日 | Julia

算額(その1280)

百四十八 群馬県安中市磯部 赤城神社 昭和52年(1977) 復元
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円2個,正方形,直線上

直線の上に大円,小円,正方形が載っている。大円の直径は正方形の対角線の長さと同じである。大円の直径が 10 寸のとき,小円の直径はいかほどか。

大円の半径と中心座標を r1, (0, r1)
小円の半径と中心座標を r2, (x2, r2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive, x2::positive;
eq1 = x2^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = dist2(r1, r1, 2r1, 0, x2, r2, r2)
res = solve([eq1, eq2], (r2, x2))[2]

   (r1*(2 - sqrt(2))^2, 2*r1*(2 - sqrt(2)))

小円の半径 r2 は,大円の半径 r1 の (2 - √2)^2 倍である。
大円の直径が 10 寸のとき,小円の直径は 10(2 - √2)^2 = 3.431457505076197 寸である。
なお,中心座標は (5.857864376269049,0)

function draw(r1, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r2, x2) = (r1*(2 - sqrt(2))^2, 2*r1*(2 - sqrt(2)))
   @printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r2)
   plot([r1, 2r1, 3r1, 2r1, r1], [r1, 0, r1, 2r1, r1], color=:blue, lw=0.5)
   circle(0, r1, r1)
   circle(x2, r2, r2, :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, r1, "大円:r1,(0,r1)", :red, :center, delta=-delta)
       point(x2, r2, "小円:r2\n(x2,r2)", :green, :center, delta=-delta)
       point(2r1, r1, "正方形:(2r1,r1)", :blue, :center, delta=-delta)
   end

end;

draw(10/2, true)

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

算額(その1279)

2024年09月08日 | Julia

算額(その1279)

百四十八 群馬県安中市磯部 赤城神社 昭和52年(1977) 復元
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,斜線,弦

外円の中に,2 本の等斜を引き,大円 1 個,等円 3 個を容れる。大円内の等円は,水平な弦に接している。外円の直径が 10 寸,等斜の長さが 8 寸のとき,等円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
大円の半径と中心座標を r1, (0, R - r1)
等円の半径と中心座標を r2, (r2, R - 2r1 + 3r2), (0, R - 2r1 + r2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms R::positive, r1::positive, r2::positive,
     x::positive, y::positive, 等斜::positive;
eq1 = r2^2 + (3r2 - r1)^2 - (r1 - r2)^2
eq2 = x^2 + (sqrt(R^2 - x^2) + R)^2 - 等斜^2
eq3 = (2R - r1)*(x/等斜) - r1
res = solve([eq1, eq2, eq3], (r1, r2, x))[1]

   (2*R*sqrt(4*R^2 - 等斜^2)/(2*R + sqrt(4*R^2 - 等斜^2)), 8*R*sqrt(4*R^2 - 等斜^2)/(9*(2*R + sqrt(4*R^2 - 等斜^2))), 等斜*sqrt(4*R^2 - 等斜^2)/(2*R))

外円の直径が 10 寸,等斜が 8 寸のとき,等円の直径は 10/3 寸である。

2res[2](R => 10//2, 等斜 => 8) |> println

   10/3

天 = sqrt(4R^2 - 等斜^2) と置くと,等円の半径は 8R*天/(9(2R+天) である。

R = 10/2
等斜 = 8
天 = sqrt(4R^2 - 等斜^2)
r1 = 8R*天/(9(2R+天))

   1.6666666666666667

すべてのパラメータは以下のとおりである。

   R = 5;  等斜 = 8;  r1 = 3.75;  r2 = 1.66667;  x = 4.8

function draw(R, 等斜, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2, x) = (2*R*sqrt(4*R^2 - 等斜^2)/(2*R + sqrt(4*R^2 - 等斜^2)), 8*R*sqrt(4*R^2 - 等斜^2)/(9*(2*R + sqrt(4*R^2 - 等斜^2))), 等斜*sqrt(4*R^2 - 等斜^2)/(2*R))
   y = sqrt(R^2 - x^2)
   y0 = R - 2r1 + 2r2
   x0 = sqrt(r1^2 - (r1 - 2r2)^2)
   plot()
   circle(0, 0, R, :green)
   circle(0, R - r1, r1) 
   circle2(r2, R - 2r1 + 3r2, r2, :blue)
   circle(0, R - 2r1 + r2, r2, :blue)
   segment(-x0, y0, x0, y0)
   plot!([-x, 0, x], [y, -R, y], color=:black, lw=0.5)
   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(x, y, " (x,y)", :black, :left, :vcenter)
       point(x0, y0, "(x0,y0) ", :black, :right, delta=-delta/2)
       point(0, R - 2r1 + 2r2, "R-2r1+2r2", :blue, :center, delta=-delta/2)
       point(0, R - 2r1, "R-2r1", :red, :center, delta=-delta/2)
       point(0, R, "R", :green, :center, :bottom, delta=delta/2)
       point(0, R - r1, "大円:r1,(0,R-r1)", :red, :center, :bottom, delta=delta/2)
       point(0, R - 2r1 + r2, "等円:r2,(0,R-2r1+r2)", :blue, :center, :bottom, delta=delta/2)
       point(r2, R - 2r1 + 3r2, "等円:r2\n(r2,R-2r1+3r2)", :blue, :center, :bottom, delta=delta/2)
   end

end;

draw(10/2, 8, true)

 

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

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

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