裏 RjpWiki

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

算額(その1276)

2024年09月06日 | Julia

算額(その1276)

百四十七 群馬県甘楽郡妙義町下高田 高太神社 大正12年(1923)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円2個,正方形2個

直線の上に正方形 2 個と大円,小円が載っている。正方形の一辺の長さが 5 寸,小円の直径が 4 寸のとき,大円の直径はいかほどか。

正方形の一辺の長さを a
大円の半径と中心座標を r1, (2r2 + r1)
小円の半径と中心座標を r2, (0, r2)
とおき,以下の方程式を解く。

include("julia-source.txt");

using SymPy
@syms a::positive, r1::positive, r2::positive;
eq1 = r2^2 + (2r2 + r1 - a)^2 - r1^2
res = solve(eq1, r1)[1]
res |> println

   (r2^2 + (a - 2*r2)^2)/(2*(a - 2*r2))

大円の半径 r1 は,正方形の一辺の長さ a と小円の半径 r2 の関数である。
正方形の一辺の長さが 5 寸,小円の直径が 4 寸のとき,大円の直径は 5 寸である。

「答」では 10.0625 となっているが...

a = 5
r2 = 4/2
(r2^2 + (a - 2*r2)^2)/(2*(a - 2*r2)) * 2

   5.0

function draw(a, r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = (r2^2 + (a - 2*r2)^2)/(2*(a - 2*r2))
   @printf("正方形の一辺の長さが %g,小円の直径が %g のとき,大円の直径は %g である。\n", a, 2r2, 2r1)
   plot()
   circle(0, 2r2 + r1, r1)
   circle(0, r2, r2, :blue)
   rect(r2, 0, r2 + a, a, :green)
   rect(-r2, 0, -r2 - a, a, :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, 2r2 + r1, "大円:r1,(0,2r2+r1)", :red, :center, delta=-delta)
       point(0, r2, "小円:r2,(0,r2)", :blue, :center, delta=-delta)
       point(r2, a, "(r2,a)", :green, :left, delta=-delta)
   end

end;

draw(5, 4/2, true)

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

算額(その1275)

2024年09月06日 | Julia

算額(その1275)

百四十三 群馬県榛名町榛名山 榛名神社 明治33年(1900)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円9個,外円

外円の中に,中円 4 個,小円 4 個を容れる。小円の直径が 1 寸のとき,中円の直径はいかほどか。

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

include("julia-source.txt");

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

   (r2*(9 - 4*sqrt(2)), 7*r2, r2*(1 + 5*sqrt(2)))

中円の半径 r1 は,小円の半径 r2 の (9 - 4√2) 倍である。
小円の直径が 1 寸のとき,中円の直径は 9 - 4√2 = 3.3431457505076194 寸である。

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

   r2 = 0.5;  R = 4.03553;  r1 = 1.67157;  x2 = 3.5

function draw(r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, x2, R) = (r2*(9 - 4*sqrt(2)), 7*r2, r2*(1 + 5*sqrt(2)))
   @printf("小円の直径が %g のとき,中円の直径は %g である。\n", 2r2, 2r1)
   @printf("r2 = %g;  R = %g;  r1 = %g;  x2 = %g\n", r2, R, r1, x2)
   plot()
   circle(0, 0, R, :green)
   circle4(r1, r1, r1)
   circle4(x2, r2, 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(R, 0, " R", :green, :left, :bottom, delta=delta)
       point(r1, r1, "中円:r1,(r1,r1)", :red, :center, delta=-delta/2)
       point(x2, r2, "小円:r2,(x2,r2) ", :black, :right, :vcenter)
   end
end;

draw(1/2, true)

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

算額(その1274)

2024年09月06日 | Julia

算額(その1274)

百四十 群馬県甘楽郡妙義町下高田 高太神社 明治22年(1888)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,外円,半円4個

外円の中に,等円 4 個,半円 4 個を容れる。外円の直径が 24 寸のとき,等円の直径はいかほどか

外円の半径と中心座標を R, (0, 0)
半円の半径と中心座標を r1, (R/2, R/2), (R/2, -R/2)
等円の半径と中心座標を r2, (R/2, 0); r1 - R/2
とおく。

r1 = √2R/2 ゆえ,r2 = r1 - R/2 = √2R/2 - R/2 = R*(√2 - 1)/2 である。

等円の半径 r2 は,外円の半径 R の (√2 - 1)/2 倍である。

外円の直径が 24 寸のとき,等円の直径は 24*(√2 ー1)/2 = 4.970562748477142 寸である。

include("julia-source.txt");

function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = √2R/2
   r2 = R*(√2 - 1)/2
   @printf("外円の直径が %g のとき,等円の直径は %g である。\n", 2R, 2r2)
   @printf("R = %g;  r1 = %g;  r2 = %g\n", R, r1, r2)
   plot()
   circle(0, 0, R, :green)
   circle(R/2, R/2, r1, beginangle= 135, endangle=315)
   circle(R/2, -R/2, r1, beginangle= 45, endangle=225)
   circle(-R/2, R/2, r1, beginangle= 225, endangle=405)
   circle(-R/2, -R/2, r1, beginangle= -45, endangle=135)
   circle42(0, R/2, 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(R, 0, " R", :green, :left, :bottom, delta=delta)
       point(R/2, R/2, "半円:r1,(R/2,R/2)", :red, :center, delta=-delta/2)
       point(R/2, 0, "等円:r2\n(R2,0)", :blue, :center, delta=-delta/2)
       segment(0, R, R, 0, :pink)
   end
end;

draw(24/2, true)

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

算額(その1273)

2024年09月06日 | Julia

算額(その1273)

百四十 群馬県甘楽郡妙義町下高田 高太神社 明治22年(1888)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円8個,四分円4個,正方形

正方形の中に,甲円 4 個,乙円 4 個,四分円 4 個を容れる。正方形の一辺の長さが与えられたとき,乙円の直径はいかほどか。

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

include("julia-source.txt");

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

   (a*(3/2 - sqrt(2))/2 + a/4, a*(3/2 - sqrt(2)))

乙円の直径は正方形の一辺の長さの (3/2 - √2) 倍である。
たとえば,正方形の一辺の長さが 10 寸のとき,乙円の直径は 10(3/2 - √2) = 0.8578643762690485 である。

10(3/2 - √2)

   0.8578643762690485

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

   a = 5;  r1 = 1.46447;  x1 = 1.03553;  r2 = 0.428932

function draw(a, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2) = (a*(3/2 - sqrt(2))/2 + a/4, a*(3/2 - sqrt(2)))
   x1 = r1 - r2
   @printf("正方形の一辺の長さが %g のとき,乙円の直径は %g である。\n", 2a, 2r2)
   @printf("a = %g;  r1 = %g;  x1 = %g;  r2 = %g\n", a, r1, x1, r2)
   plot([a, a, -a, -a, a], [-a, a, a, -a, -a], color=:blue, lw=0.5)
   circle(a, a, 2a, beginangle= 180, endangle=270)
   circle(-a, a, 2a, beginangle= 270, endangle=360)
   circle(a, -a, 2a, beginangle= 90, endangle=180)
   circle(-a, -a, 2a, beginangle= 0, endangle=90)
   circle4(x1, x1, r1, :green)
   circle42(0, x1, r2, :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(a, a, "(a,a)", :blue, :right, :bottom, delta=delta/2)
       point(x1, x1, "甲円:r1\n(x1,x1)", :green, :center, :bottom, delta=delta/2)
       point(x1, 0, "乙円:r2,(x1,0)", :magenta, :left, delta=-3delta, deltax=-5delta)
   end
end;

draw(10/2, true)

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

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

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