裏 RjpWiki

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

算額(その822)

2024年03月29日 | Julia

算額(その822)

宮城県栗原市瀬峰泉谷 瀬峰泉谷熊野神社奉納算額
徳竹亜紀子,谷垣美保,萬伸介:瀬峰泉谷熊野神社奉納算額をめぐる諸問題,仙台高等専門学校名取キャンパス 研究紀要 第60号(2024)

https://www.sendai-nct.ac.jp/natori-library/wp/wp-content/uploads/2024/03/kiyo2024-1.pdf

正方形の中に,四分円,半円,大円,小円を入れる。小円の直径が 16 寸のとき,大円の直径はいかほどか。

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

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy

@syms r1::positive, r2::positive, x2::positive,
     r3::positive, x3::positive, y3::positive
eq1 = (r1 - x2)^2 + r2^2 - (r1 - r2)^2
eq2 = (r1 - x3)^2 + y3^2 - (r1 - r3)^2
eq3 = (r1 - x2)^2 + (r1/2 - r2)^2 - (r1/2 + r2)^2
eq4 = (r1 - x3)^2 + (r1/2 - y3)^2 - (r1/2 + r3)^2
eq5 = (r1/2 - x3)^2 + (r1 - y3)^2 - (r1/2 - r3)^2;
res = solve([eq1, eq2, eq3, eq4, eq5], (r1, r2, x2, x3, y3))

   2-element Vector{NTuple{5, Sym{PyCall.PyObject}}}:
    (33*r3/4, 33*r3/16, -33*sqrt(2)*r3/8 + 33*r3/4, 13*r3/4, 21*r3/4)
    (33*r3/4, 33*r3/16, 33*sqrt(2)*r3/8 + 33*r3/4, 13*r3/4, 21*r3/4)

2 組の解が得られるが,最初のものが適解である。

大円の半径 r2 は小円の半径 r3 の 33/16 倍である。
小円の直径が 16 寸のとき,大円の直径は 33 寸である。

2res[1][2](r3 => 16/2).evalf() |> println

   33.0000000000000

なお,大円は 2 つある半円の片方とだけ接する。

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

r1 = 66;  r2 = 16.5;  x2 = 19.331;  x3 = 26;  y3 = 42

function draw(more)
    pyplot(size=(500, 500), grid=false, showaxis=true, aspectratio=1, label="", fontfamily="IPAMincho")
   r3 = 16//2
   (r1, r2, x2, x3, y3) = r3 .* (33/4, 33/16, 33(2 - √2)/8, 13/4, 21/4)
   @printf("大円の直径 = %g\n", 2r2)
   @printf("r1 = %g;  r2 = %g;  x2 = %g;  x3 = %g;  y3 = %g\n", r1, r2, x2, x3, y3)
   plot(r1 .* [0, 1, 1, 0, 0], r1 .* [0, 0, 1, 1, 0], color=:black, lw=0.5)
   circle(r1, 0, r1, beginangle=90, endangle=180)
   circle(r1, r1/2, r1/2, :magenta, beginangle=90, endangle=270)
   circle(r1/2, r1, r1/2, :magenta, beginangle=180, endangle=360)
   circle(x2, r2, r2, :green)
   circle(x3, y3, r3, :orange)
   if more == true
       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/2, r1, "半円:r1/2,(r1/2,r1)", :magenta, :center, :bottom, delta=delta/2)
       point(r1, r1/2, "半円:r1/2 \n(r1,r1/2) ", :magenta, :right, :vcenter)
       point(x2, r2, "大円:r2,(x2,r2)", :green, :center, delta=-delta/2)
       point(x3, y3, "小円:r3,(x3,y3)", :orange, :center, delta=-delta/2)
   end
end;

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

算額(その821)

2024年03月29日 | Julia

算額(その821)

宮城県栗原市瀬峰泉谷 瀬峰泉谷熊野神社奉納算額
徳竹亜紀子,谷垣美保,萬伸介:瀬峰泉谷熊野神社奉納算額をめぐる諸問題,仙台高等専門学校名取キャンパス 研究紀要 第60号(2024)

https://www.sendai-nct.ac.jp/natori-library/wp/wp-content/uploads/2024/03/kiyo2024-1.pdf

外円内に円弧,甲円,乙円を入れる。円弧は外円と同じ半径で周長は外円の 1/3 である。乙円の直径が 3 寸のとき,甲円の直径はいかほどか。

円弧は外円の中心を通る。
外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (r1, y1)
乙円の半径と中心座標を r2, (x2, y2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy

@syms R::positive, r1::positive, y1::positive,
     r2::positive, x2::positive, y2::negative
#r2 = 3
eq1 = r1^2 + (y1 + R)^2 - (r1 + R)^2
eq2 = x2^2 + (R + y2)^2 - (r2 + R)^2
eq3 = (x2 - r1)^2 + (y1 - y2)^2 - (r1 + r2)^2
eq4 = r1^2 + y1^2 - (R - r1)^2
eq5 = x2^2 + y2^2 - (R - r2)^2;
res = solve([eq1, eq2, eq3, eq4, eq5], (R, r1, y1, x2, y2));
res[2]

   (4*r2*(109282*sqrt(2107560*sqrt(3) + 3650401) + 63094*sqrt(6322680*sqrt(3) + 10951203) + 319330453 + 184365523*sqrt(3))/(3*(14764*sqrt(3)*sqrt(2107560*sqrt(3) + 3650401) + 25572*sqrt(2107560*sqrt(3) + 3650401) + 47909161*sqrt(3) + 82981101)), r2*(258564*sqrt(2107560*sqrt(3) + 3650401) + 149282*sqrt(6322680*sqrt(3) + 10951203) + 755543964 + 436213511*sqrt(3))/(3*(34932*sqrt(2107560*sqrt(3) + 3650401) + 20168*sqrt(3)*sqrt(2107560*sqrt(3) + 3650401) + 113354292 + 65445131*sqrt(3))), 4*r2*(23094*sqrt(6322680*sqrt(3) + 10951203) + 40000*sqrt(2107560*sqrt(3) + 3650401) + 67482465*sqrt(3) + 116883058)/(3*(14764*sqrt(3)*sqrt(2107560*sqrt(3) + 3650401) + 25572*sqrt(2107560*sqrt(3) + 3650401) + 47909161*sqrt(3) + 82981101)), -260*sqrt(3)*r2*sqrt(62400*sqrt(3)*sqrt(2107560*sqrt(3) + 3650401) + 108080*sqrt(2107560*sqrt(3) + 3650401) + 187572840*sqrt(3) + 324885689) + 1351*r2*sqrt(62400*sqrt(3)*sqrt(2107560*sqrt(3) + 3650401) + 108080*sqrt(2107560*sqrt(3) + 3650401) + 187572840*sqrt(3) + 324885689)/3, -5404*r2*sqrt(6322680*sqrt(3) + 10951203)/9 - 10*sqrt(3)*r2/9 + 2*r2 + 1040*sqrt(3)*r2*sqrt(6322680*sqrt(3) + 10951203)/3)

2 組の解が得られるが,2 番目のものが適解である。

桁数の多い数値を含む複雑な式が得られるが,簡約化すると非常に単純な解になる。
R, r1, y1, x2, y2 の結果は以下のようになる。

res[2][1] |> sympy.sqrtdenest |> simplify |> println
res[2][2] |> sympy.sqrtdenest |> simplify |> println
res[2][3] |> sympy.sqrtdenest |> simplify |> println
res[2][4] |> sympy.sqrtdenest |> simplify |> println
res[2][5] |> sympy.sqrtdenest |> simplify |> println

   28*sqrt(3)*r2/9
   7*r2/3
   -14*sqrt(3)*r2/9 + 14*r2/3
   13*r2/3
   2*r2*(9 - 7*sqrt(3))/9

甲円の半径 r1 は乙円の半径 r2 の 7/3 倍である。
乙円の直径が 3 寸のとき,甲円の直径は 7 寸である。

2res[2][2](r2 => 3/2).evalf() |> println

   7.00000000000000

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

R = 8.0829;  r1 = 3.5;  y1 = 2.95855;  x2 = 6.5;  y2 = -1.04145

function draw(more)
    pyplot(size=(500, 500), grid=false, showaxis=true, aspectratio=1, label="", fontfamily="IPAMincho")
   r2 = 3//2
   (R, r1, y1, x2, y2) = r2 .* (
       28√3/9,
       7/3,
       (42 - 14√3)/9,
       13/3,
       (18 - 14√3)/9)
   @printf("甲円の直径 = %g\n", 2r1)
   @printf("R = %g;  r1 = %g;  y1 = %g;  x2 = %g;  y2 = %g\n", R, r1, y1, x2, y2)
   plot()
   circle(0, 0, R)
   circle(0, -R, R, beginangle=30, endangle=150)
   circle2(r1, y1, r1, :green)
   circle2(x2, y2, r2, :blue)
   if more == true
       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, y1, "甲円:r1,(r1,y1)", :green, :center, delta=-delta/2)
       point(x2, y2, "乙円:r2\n(x2,y2)", :blue, :center, delta=-delta/2)
       point(R, 0, " R", :red, :left, :bottom, delta=delta/2)
   end
end;

 

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

算額(その820)

2024年03月29日 | Julia

算額(その820)

宮城県栗原市瀬峰泉谷 瀬峰泉谷熊野神社奉納算額
徳竹亜紀子,谷垣美保,萬伸介:瀬峰泉谷熊野神社奉納算額をめぐる諸問題,仙台高等専門学校名取キャンパス 研究紀要 第60号(2024)

https://www.sendai-nct.ac.jp/natori-library/wp/wp-content/uploads/2024/03/kiyo2024-1.pdf

正方形内に四分円,大円,小円を入れる。小円の直径が 4 寸のとき,大円の直径はいかほどか。

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

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy

@syms r1::positive, r2::positive, r3::positive,
     y3::positive

eq1 = (r1/2)^2 + r2^2 - (r1 - r2)^2
eq2 = (r1 - r3)^2 + y3^2 - (r1 + r3)^2
eq3 = r3^2 + y3^2 - (r1 - r3)^2
res = solve([eq1, eq2, eq3], (r1, r2, y3))[1]

   (6*r3, 9*r3/4, 2*sqrt(6)*r3)

大円の半径 r2 は小円の半径 r3 の 9/4 倍である。
小円の直径が 4 寸なら,大円の直径は 9 寸である。

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

   r1 = 12;  r2 = 4.5;  y3 = 9.79796

function draw(more)
    pyplot(size=(500, 500), grid=false, showaxis=true, aspectratio=1, label="", fontfamily="IPAMincho")
   r3 = 4//2
   (r1, r2, y3) = (6*r3, 9*r3/4, 2*sqrt(6)*r3)
   @printf("大円の直径 = %g\n", 2r2)
   @printf("r1 = %g;  r2 = %g;  y3 = %g\n", r1, r2, y3)
   plot([0, r1, r1, 0, 0], [0, 0, r1, r1, 0], color=:black, lw=0.5)
   circle(0, 0, r1,  beginangle=0, endangle=90)
   circle(r1, 0, r1,  beginangle=90, endangle=180)
   circle(r1 - r3, y3, r3, :green)
   circle(r3, y3, r3, :green)
   circle(r1/2, r2, r2, :blue)
   if more == true
       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/2, r2, "大円:r2,(r1/2,r2)", :blue, :center, delta=-delta)
       point(r1-r3, y3, "小円:r3,(r1-r3,y3)", :green, :center, delta=-delta)
       point(r1, 0, " r1", :red, :left, :bottom, delta=delta/2)
       point(0, r1, " r1", :red, :left, :bottom, delta=delta/2)
   end
end;

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

算額(その819)

2024年03月29日 | Julia

算額(その819)

宮城県栗原市瀬峰泉谷 瀬峰泉谷熊野神社奉納算額
徳竹亜紀子,谷垣美保,萬伸介:瀬峰泉谷熊野神社奉納算額をめぐる諸問題,仙台高等専門学校名取キャンパス 研究紀要 第60号(2024)

https://www.sendai-nct.ac.jp/natori-library/wp/wp-content/uploads/2024/03/kiyo2024-1.pdf

正三角形内に円弧(弧背),甲円,乙円を入れる。乙円の直径が 2 寸のとき,円弧が最大(最長)になるときの甲円の直径はいかほどか。

甲円の半径と中心座標を r1, (0, r1)
乙円の半径と中心座標を r2, (x2, r2)
円弧がその一部である円の半径と中心座標を r0, (2r1 - r0, 0)
二等辺三角形の一辺の長さと高さを a, √3a
とおき,以下の連立方程式を解く。

なお,円弧が最大というのは,円弧が斜辺に接する状態である。図では ∠BAH が直角である。AB = r0

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy

@syms a::positive, r0::positive, r1::positive,
     r2::positive, x2::positive

r0 = √Sym(3)a - 2r1
eq1 = 2r1 - (sqrt(Sym(3))a - 3r1)
eq2 = x2^2 + (r1 - r2)^2 - (r1 + r2)^2
eq3 = x2^2 + (r2 - 2r1 + r0)^2 - (r0 - r2)^2;

res = solve([eq1, eq2, eq3], (r1, a, x2))

   1-element Vector{Tuple{Sym{PyCall.PyObject}, Sym{PyCall.PyObject}, Sym{PyCall.PyObject}}}:
    (3*r2/2, 5*sqrt(3)*r2/2, sqrt(6)*r2)

甲円の直径は乙円の直径の 3/2 = 1.5 倍である。
乙円の直径が 2 寸なら,甲円の直径は 3 寸である。

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

r1 = 1.5;  a = 4.33013;  x2 = 2.44949;  r0 = 4.5

function draw(more)
    pyplot(size=(500, 500), grid=false, showaxis=true, aspectratio=1, label="", fontfamily="IPAMincho")
   r2 = 2//2
   (r1, a, x2) = (3/2, 5√3/2, √6)
   r0 = √3a - 2r1
   @printf("甲円の直径 = %g\n", 2r1)
   @printf("r1 = %g;  a = %g;  x2 = %g;  r0 = %g\n", r1, a, x2, r0)
   plot([a, 0, -a, a], [0, √3a, 0, 0], color=:black, lw=0.5)
   circle(0, r1, r1)
   circle(0, 3r1, r1)
   circle2(x2, r2, r2, :blue)
   circle(0, 2r1 - r0, r0, :green, beginangle=30, endangle=150)
   (x0, y0) = (r0*cosd(30), (2r1 - r0) + r0*sind(30))
   segment(0, 2r1 - r0, x0, y0, :orange)
   if more == true
       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(x0, y0, " A", :green, :left, :vcenter)
       point(-x0, y0, "C ", :green, :right, :vcenter)
       point(a, 0, " a", :black, :left, :vcenter)
       point(0, √3a, " H:√3a", :black, :left, :vcenter)
       point(0, 2r1 - r0, " B:2r1-r0", :orange, :left, :vcenter)
       point(0, r1, "甲円:r1,(0,r1)", :red, :center, delta=-delta)
       point(0, 3r1, "甲円:r1,(0,3r1)", :red, :center, delta=-delta)
       point(x2, r2, "乙円:x2,(0,r2)", :blue, :center, delta=-delta)
       point(0.6x2, 2r1, "弧背", :green, mark=false)
   end
end;

 

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

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

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