裏 RjpWiki

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

算額(その1624)

2025年02月19日 | Julia

算額(その1624)

長野県上水内牟礼村牟礼 渋薬師堂嘉永2年(1849) 大久保善賢氏保管 
中村信弥「改訂増補 長野県の算額」
http://www.wasan.jp/zoho/zoho.html
キーワード:球5個,回転楕円体,3次元
#Julia, #Julia, #SymPy, #算額, #和算, #数学

回転楕円体の中に,甲球 2 個,乙球 3 個を容れる。回転楕円体の長径と短径が与えられたとき,甲球の直径を得る術を述べよ。

回転楕円体の長径,短径を 2a, 2b
甲球の半径と中心座標を r1, (0, 0, z1)
乙球の半径と中心座標を r2, (b - r2, 0, 0)
甲球と回転楕円体の x-z 平面上の交点座標を (x0, 0, z0)
とおき,以下の連立方程式を解く。
まず,eq1 を解き r2 を求める。
次いで, eq3, eq4, eq5 を解き,z1, x0, z0 を求める。
最後に,eq2 を解き r1 を求める。

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

using SymPy
@syms a::positive, b::positive, x0::positive,
      z0::positive, r1::positive, z1::positive,
      r2::positive
eq1 = (2r2/√Sym(3) + r2) - b
eq2 = z1^2 + (b - r2)^2 - (r1 + r2)^2 |> expand
eq3 = x0^2/a^2 + z0^2/b^2 - 1 |> expand
eq4 = (x0 - z1)^2 + z0^2 - r1^2 |> expand
eq5 = -b^2*x0/(a^2*z0) + (x0 - z1)/z0 |> expand;

# r2 乙球の半径
ans_r2 = solve(eq1, r2)[1] |> simplify
ans_r2 |> println

    b*(-3 + 2*sqrt(3))

# z1, x0, z0
res = solve([eq3, eq4, eq5], (z1, x0, z0))[4]  # 4 of 4

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

eq2 に,ここまでで得られた r2, x1, x0, z0 を代入し,r1 を求める。

eq12 = eq2(r2 => ans_r2, z1 => res[1], x0 => res[2], z0 => res[3]) |> simplify;

# r1 甲球の半径
ans_r1 = solve(eq12, r1)[1]
ans_r1 |> println

    b*(a^2 - 4*sqrt(3)*b^2 + 6*b^2)/a^2

甲球の半径は b*(a^2 - 4√3b^2 + 6b^2)/a^2 である。
長径が 4,短径が 2 のとき,甲球の直径は 1.53589838486225 である。

2*ans_r1(a => 4/2, b => 2/2).evalf()|> println

    1.53589838486225

術は以下のようになっている。

@syms 短径, 長径
甲球径 = 2(短径/2 - (2√3 -3)*短径^3/長径^2)
甲球径(短径 => 2, 長径 => 4) |> println

    1.53589838486225

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

回転楕円体の長径が 4,短径が 2 のとき,甲球の直径は 1.5359,乙球の直径は 0.928203 である。
a = 2;  b = 1;  r1 = 0.767949;  r2 = 0.464102;  z1 = 1.1094;  x0 = 1.4792;  z0 = 0.673049

function draw1(a, b, r1, z1, r2, x0, z0, more)
    p1 = plot()
    circle(0, 0, b, :green)
    rotate(0, b - r2, r2, :blue)
    circle(0, 0, r1)
    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, b, "b", :green, :center, :bottom, delta=delta/2)
        point(0, b - r2, "乙球:r2(0,b-r2,0)", :blue, :center, delta=-delta/2)
        point(0, r1, "r1", :red, :center, :bottom, delta=delta/2)
    end
end;

function draw2(a, b, r1, z1, r2, x0, z0, more)
    plot()
    circle2(z1, 0, r1)
    circle(0, b - r2, r2, :blue)
    circle(0, -(b - r2)/2, r2, :blue)
    ellipse(0, 0, a, b, color=: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, b - r2, "乙球:r2\n(0,b-r2,0)", :blue, :center, delta=-delta)
        point(a, 0, "a", :green, :left, :bottom, delta=delta)
        point(0, b, "b", :green, :center, :bottom, delta=delta)
        point(z1, 0, "甲球:r1,(0, 0, z1)", :red, :center, delta=-delta)
        point(x0, z0, "(x0,z0)", :green, :left, :bottom, delta=delta)
    end
end;

function draw(a, b, func, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r1 = b*(a^2 - 4*sqrt(3)*b^2 + 6*b^2)/a^2
    r2 = b*(-3 + 2*sqrt(3))
    z1 = sqrt((a*b^2 - a*r1^2 + b^3 - b*r1^2)/(a - b))*(a - b)/b
    x0 = a^2*sqrt((b^2 - r1^2)/(a - b))/(b*sqrt(a + b))
    z0 = sqrt((a^2*r1^2 - b^4)/(a - b))/sqrt(a + b)
    @printf("回転楕円体の長径が %g,短径が %g のとき,甲球の直径は %g,乙球の直径は %g である。\n", 2a, 2b, 2r1, 2r2)
    @printf("a = %g;  b = %g;  r1 = %g;  r2 = %g;  z1 = %g;  x0 = %g;  z0 = %g\n", a, b, r1, r2, z1, x0, z0)
    func(a, b, r1, z1, r2, x0, z0, more)
end;

draw(4/2, 2/2, draw1, true)
draw(4/2, 2/2, draw2, true)

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

算額(その1623)

2025年02月18日 | Julia

算額(その1623)

~落書き帳「○△□」~ 392.○△□の新算額(その5)
http://streetwasan.web.fc2.com/math18.2.1.html
キーワード:円4個,外円,円弧
#Julia, #Julia, #SymPy, #算額, #和算, #数学

算額(その1622)は,もともとは(注)以下のようなものである。
外円の中に,甲円 1 個,乙円 1 個,丙円 2 個を容れる。外円の直径が与えられたとき,丙円の直径は甲円の直径により変化する。丙円の直径が最大になるのはどのようなときか。また,そのときの直径ははいかほどか。

注:和算の解法ー美しい幾何の問題を解く楽しみー,米山忠興著,開成出版 2012)

外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (0, R - r1)
乙円の半径と中心座標を r2, (0, r2 - R)
丙円の半径と中心座標を r3, (x3, y3)
外円と乙円の交点座標を (x0, y0)
とおき,以下の連立方程式を解き,r2, r3, x3, y3, x0, y0 を求める。
それぞれの解は R と r1 を含む式で表される。

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

using SymPy
@syms R::positive, r1::positive, r2::positive,
      r3::positive, x3::positive, y3::positive,
      x0::positive, y0::positive
eq1 = x3^2 + (R - r1 - y3)^2 - (r1 + r3)^2
eq2 = x3^2 + (y3 + R)^2 - (r2 + r3)^2
eq3 = x3^2 + y3^2 - (R - r3)^2
#eq4 = (r1 + r2)^2 - ((r1 + r3)^2 + (r2 + r3)^2)
eq5 = 2r1 + r2 - 2R
eq6 = x0^2 + (y0 + R)^2 - r2^2
eq7 = x0^2 + y0^2 - R^2
res = solve([eq1, eq2, eq3, eq5, eq6, eq7], (r2, r3, x3, y3, x0, y0))[1];  # 1 of 2

丙円の半径 r3 は,以下の式のようになり,R は固定された定数で,甲円の半径 r1 により変化する。

# r3
res[2] |>  println

    r1*(-2*R + r1)*(-R + r1)/(2*R^2 - 2*R*r1 + r1^2)

R = 1/2 のとき,r1 と r3 の関係は以下の図のようになる。r1 が 0.2 ~ 0.3 の間で r3 は最大になる。

pyplot(size=(300, 200), grid=false, aspectratio=:none, label="", fontfamily="IPAMincho")
plot(res[2](R => 1/2), xlims=(0, 1/2), xlabel="r1", ylabel="r3")

r3 が最大になるときの r1 は,r3 の導関数を求め,方程式「導関数 = 0」をとき,r3 が最大になるときの r1 を求める。

ans_r1 = solve(diff(res[2], r1), r1)[1]  # 1 of 4
ans_r1 |>  println

    R*(1 - sqrt(-2 + sqrt(5)))

R = 1/2 のとき,r1 = 0.257065864121677 のときに r3 は最大になる。

ans_r1(R => 1/2).evalf() |> println

    0.257065864121677

r1 = 0.257065864121677 のときの r3 の値は 0.150141553000389 である。

res[2](r1 => 0.257065864121677)(R => 1/2) |>  println

    0.150141553000389

外円の直径が 1 のとき,甲円の直径が 0.514132 のときに丙円が最大になり,その直径は 0.300283 である。

# r2
res[1] |> println

    -2*(-R + r1)

# r3
res[2] |> println

    r1*(-2*R + r1)*(-R + r1)/(2*R^2 - 2*R*r1 + r1^2)

# x3
res[3] |> println

    -2*sqrt(2)*sqrt(R)*r1*(-R + r1)*sqrt(2*R - r1)/(2*R^2 - 2*R*r1 + r1^2)

# y3
res[4] |> println

    (2*R^3 - 4*R^2*r1 + r1^3)/(2*R^2 - 2*R*r1 + r1^2)

# x0
res[5] |> println

    -2*sqrt(r1)*(-R + r1)*sqrt(2*R - r1)/R

# y0
res[6] |> println

    (R^2 - 4*R*r1 + 2*r1^2)/R

function draw(R, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r1 = R*(1 - sqrt(√5 - 2))
    r3 = r1*(2R - r1)*(R - r1)/(2R^2 - 2R*r1 + r1^2)
    r2 = 2(R - r1)
    x3 = 2√2r1*sqrt(R*(2R - r1))*(R - r1)/(2R^2 - 2R*r1 + r1^2)
    y3 = (2R^3 - 4*R^2*r1 + r1^3)/(2R^2 - 2R*r1 + r1^2)
    x0 = 2sqrt(r1)*(R - r1)*sqrt(2R - r1)/R
    y0 = (R^2 - 4R*r1 + 2r1^2)/R
    @printf("外円の直径が %g のとき,甲円の直径が %g のときに丙円が最大になり,その直径は %g である。\n", 2R, 2r1, 2r3)
    @printf("R = %g;  r1 = %g;  r2 = %g;  r3 = %g;  x3 = %g;  y3 = %g\n", R, r1, r2, r3, x3, y3)
    θ = atand(y0 + R, x0)
    println(θ)
    plot()
    circle(0, 0, R, :green)
    circle(0, R - r1, r1)
    circle(0, -R, r2, :blue, beginangle=θ, endangle=180 - θ)
    circle2(x3, y3, r3, :orange)
    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)
        point(0, -R, "乙円:r2,(0,-R)", :blue, :center, :bottom, delta=2delta)
        point(x3, y3, "丙円:r3\n(x3,y3)", :orange, :center, delta=-delta)
    end
end;

draw(1/2, true)

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

算額(その1622)

2025年02月17日 | Julia

算額(その1622)

~落書き帳「○△□」~ 392.○△□の新算額(その5)
http://streetwasan.web.fc2.com/math18.2.1.html
キーワード:円4個,外円,円弧
#Julia, #Julia, #SymPy, #算額, #和算, #数学

外円の中に,甲円 1 個,乙円 1 個,丙円 2 個を容れる。外円の直径が与えられ,甲円,乙円,丙円の中心を結ぶと直角三角形になるとき,丙円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (0, R - r1)
乙円の半径と中心座標を r2, (0, r2 - R)
丙円の半径と中心座標を r3, (x3, y3)
外円と乙円の交点座標を (x0, y0)
とおき,以下の連立方程式を解く。

注:「甲円,乙円,丙円の中心を結ぶと直角三角形になる」という条件を eq4 で記述する。

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

using SymPy
@syms R::integer, r1::positive, r2::positive,
      r3::positive, x3::positive, y3::negative,
      x0::positive, y0::positive
eq1 = x3^2 + (R - r1 - y3)^2 - (r1 + r3)^2
eq2 = x3^2 + (y3 + R)^2 - (r2 + r3)^2
eq3 = x3^2 + y3^2 - (R - r3)^2
eq4 = (r1 + r2)^2 - ((r1 + r3)^2 + (r2 + r3)^2)
eq5 = 2r1 + r2 - 2R
eq6 = x0^2 + (y0 + R)^2 - r2^2
eq7 = x0^2 + y0^2 - R^2
res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7], (r1, r2, r3, x3, y3, x0, y0))[1];  # 1 of 3

@syms d, t
# r1
ans_r1 = res[1](629 + 48√Sym(177) => t) |> simplify |> println

    R*(-10*sqrt(177)*t^(2/3) + 109*t^(2/3) - 46*sqrt(177)*t^(1/3) + 713*t^(1/3) + 3703)/3174

# r2
res[2](629 + 48√Sym(177) => t) |> simplify |> println

    R*(-109*t^(2/3) + 10*sqrt(177)*t^(2/3) - 713*t^(1/3) + 46*sqrt(177)*t^(1/3) - 529)/1587

# r3
res[3](629 + 48√Sym(177) => t) |> simplify |> println

    R*(-48*sqrt(177)*t^(2/3) + 629*t^(2/3) + 529*t^(1/3) - 3703)/3174

t = 629 + 48√177 とおいたとき,
外円の半径が R のとき,丙円の半径 r3 は R*(-48√177t^(2/3) + 629t^(2/3) + 529t^(1/3) - 3703)/3174 である。
たとえば,外円の直径が 1 のとき,丙円の直径は 0.282881192474901 である。

res[3](R => 1).evalf() |> println

    0.282881192474901

# x3
res[4](629 + 48√Sym(177) => t) |> simplify |> println

    2*sqrt(-3447*t^(2/3) + 258*sqrt(177)*t^(2/3) - 138*sqrt(177)*t^(1/3) - 1035*t^(1/3) + 33327)*Abs(R)/69

# y3
res[5](629 + 48√Sym(177) => t) |> simplify |> println

    R*(-88*sqrt(177)*t^(2/3) + 1065*t^(2/3) - 184*sqrt(177)*t^(1/3) + 3381*t^(1/3) + 1587)/3174

# x0
res[6](629 + 48√Sym(177) => t) |> simplify |> println

    sqrt(-1248*sqrt(177)*t^(2/3) + 15825*t^(2/3) - 1104*sqrt(177)*t^(1/3) + 28221*t^(1/3) - 46023)*Abs(R)/138

# y0
apart(res[7], d)(629 +48√Sym(177) => t) |> simplify |> println

    R*(t^(1/3)*(t^(1/3) - 13) - 23)/(6*t^(1/3))

function draw(R, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    t = 629 +48√177
    t13 = t^(1/3)
    t23 = t13^2
    r1 = R*(-10√177t23 + 109t23 - 46√177*t13 + 713t13 + 3703)/3174
    r2 = R*(-109t23 + 10√177t23 - 713t13 + 46√177*t13 - 529)/1587
    r3 = R*(-48√177t23 + 629t23 + 529t13 - 3703)/3174
    x3 = 2R*sqrt(-3447t23 + 258√177*t23 - 138√177t13 - 1035t13 + 33327)/69
    y3 = R*(-88√177t23 + 1065t23 - 184√177t13 + 3381t13 + 1587)/3174
    x0 = R*sqrt(-1248√177t23 + 15825t23 - 1104√177t13 + 28221t13 - 46023)/138
    y0 = R*(t13*(t13 - 13) - 23)/(6t13)
    @printf("外円の直径が %g のとき,丙円の直径は %g である。\n", 2R, 2r3)
    @printf("R = %g;  r1 = %g;  r2 = %g;  r3 = %g;  x3 = %g;  y3 = %g\n", R, r1, r2, r3, x3, y3)
    θ = atand(y0 + R, x0)
    println(θ)
    plot()
    circle(0, 0, R, :green)
    circle(0, R - r1, r1)
    circle(0, -R, r2, :blue, beginangle=θ, endangle=180 - θ)
    circle2(x3, y3, r3, :orange)
    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)
        point(0, -R, "乙円:r2,(0,-R)", :blue, :center, :bottom, delta=2delta)
        point(x3, y3, "丙円:r3\n(x3,y3)", :orange, :center, delta=-delta)
    end
end;

draw(1/2, true)

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

根っこ 空港通り店

2025年02月17日 | さぬきうどん

高松市鹿角町 セルフ 本格手打ち 根っこ 空港通り店
やや細麺



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

算額(その1621)

2025年02月17日 | Julia

算額(その1621)

京都市東山区 安井金比羅宮
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.

・ 奉納算題四季詠の五月問題

平成元年(1989)正月 奉納絵馬
http://www.wasan.jp/kyoto/yasuikonpira2.html

大橋彪正:和算を用いた数学教育
https://www.st.nanzan-u.ac.jp/info/gr-thesis/2019/koto/pdf/16ss056.pdf

キーワード:九曜紋
#Julia, #SymPy, #算額, #和算, #数学

幟をそむる事有定紋の図を見るに九曜也惣径二尺あるときは大小の円径各いかにと問

注:惣径 = 大円径 + 2*小円径 である。

惣径を K
大円の半径と中心座標を R, (0, 0)
小円の半径と中心座標を r, (0, R + r)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms n::integer, R::positive, r::positive, K::positive
n = 9
R = K/2 - 2r
eq = (R + r)*sind(Sym(180)/(n - 1)) - r
res = solve(eq, r)[1];

# r 小円径
res |>  println
res

    K*sqrt(2 - sqrt(2))/(2*sqrt(2 - sqrt(2)) + 4)

sqrt(2 - sqrt(2)) が 2 回出てくるので,これを t とおくと K*t/(2*(t + 2)) のように簡単になる。

なお,sin(π/8) = sqrt(2 - sqrt(2))/2 = 0.3826834323650898 である。

@syms t
res(sqrt(2 - √Sym(2)) => t) |> factor |> println

    K*t/(2*(t + 2))

半径を直径にして,術風に書くと算額の術より短くなる。

惣径 = 20
人 = sqrt(2 - √2)
小円径 = 惣径*人/(人 + 2)
大円径 = 惣径 - 2*小円径
(小円径, 大円径)

    (5.535373078283104, 8.929253843433791)

算額の術は以下のようになっている。

惣径 = 20
天 = (√2 + 1)^2
小円径 = ((√(天 + 1) - 1) / 天)*惣径
大円径 = 惣径 - 2*小円径
(小円径, 大円径)

    (5.535373078283104, 8.929253843433791)

function draw(K, more=false)
    pyplot(size=(1000, 1000), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    t = sqrt(2 - sqrt(2)) 
    r = K/2*t/(t + 2)
    R = K/2 - 2r
    @printf("惣径が %d のとき,大円径 = %g,小円径 = %g である。\n", K, 2R, 2r)
    plot()
    circlef(0, 0, R, :orange)
    rotatef(0, r + R, r, :pink, angle=360/8)
    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)
    end
end;

draw(20, true)

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

算額(その1620)

2025年02月17日 | Julia

算額(その1620)

~落書き帳「○△□」~ 720. n 曜紋の芯
http://streetwasan.web.fc2.com/math19.10.11.html

- 梅鉢 算額(その682)

愛媛県 大洲市新谷 法眼寺 寛政6年(1794)11月
http://www.wasan.jp/ehime/hogenji.html

埼玉県比企郡鳩山町 円正寺不動堂 文政 11 年(1828)8月http://www.wasan.jp/saitama/ensyoji.html

埼玉県加須市大越六間 天神社 明治14年(1881)
https://gunmawasan.web.fc2.com/k-n-mondai.html

- 七曜紋

家紋,神紋として多く使われるが算額としては未見
東京鳥越神社、兵庫県名草神社
https://irohakamon.com/kamon/hoshi/shichiyou.html

- 九曜紋 算額(その1621)

京都市東山区 安井金比羅宮 奉納算題四季詠の五月問題

近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.

平成元年(1989)正月 奉納絵馬
http://www.wasan.jp/kyoto/yasuikonpira2.html

大橋彪正:和算を用いた数学教育
https://www.st.nanzan-u.ac.jp/info/gr-thesis/2019/koto/pdf/16ss056.pdf

キーワード:梅鉢紋,七曜紋,九曜紋
#Julia, #SymPy, #算額, #和算, #数学

n 曜紋の周りの等円の半径を R、芯の半径を r とします。4 ≦ n ≦ 9 の場合について、R を r を用いて表してください。

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

using SymPy
@syms n::integer, R::positive, r::positive
eq = (R + r)*sind(180/(n - 1)) - R
solve(eq, R)[1] |> println

    -r*sin(pi/(n - 1))/(sin(pi/(n - 1)) - 1)

等円の半径 R は,芯の半径 r の sin(π/(n - 1))/(1 - sin(π/(n - 1))) 倍である。

n = 7 のときは R = 1 である。

n = 4, R = 6.4641
n = 5, R = 2.41421
n = 6, R = 1.42592
n = 7, R = 1
n = 8, R = 0.766422
n = 9, R = 0.619914
n = 10, R = 0.519803
n = 11, R = 0.447214
n = 12, R = 0.392239

ちなみに,n をどんどん大きくしていき,n*R/r を計算すると円周率に近づいていく(当たり前だが)

n = 1000000000
r = 5
a = r*sin(π/(n - 1))/(1 - sin(π/(n - 1)))
a, a*n/r

    (1.5707963333004954e-8, 3.141592666600991)

function draw(r, n, more=false)
    pyplot(size=(1000, 1000), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    R = r*sin(π/(n - 1))/(1 - sin(π/(n - 1)))
    @printf("n = %d, R = %g\n", n, R)
    p = plot()
    circlef(0, 0, r, :orange)
    rotatef(0, r + R, R, :pink, angle=360/(n - 1))
    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, @sprintf("R = %g", R), :black, :left, delta=-delta) 
    end
    return p
end;

r = 1
p4 = draw(r, 4, true)
p5 = draw(r, 5, true)
p6 = draw(r, 6, true)
p7 = draw(r, 7, true)
p8 = draw(r, 8, true)
p9 = draw(r, 9, true)
p10 = draw(r, 10, true)
p11 = draw(r, 11, true)
p12 = draw(r, 12, true)
plot!(p4, p5, p6, p7, p8, p9, p10, p11, p12)
savefig("/Users/aoki/Downloads/fig1.png")

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

算額(その1619)

2025年02月16日 | Julia

算額(その1619)

福島県 福島郷社稲荷社 明治22年(1889)
~落書き帳「○△□」~ 600. 第9回【街角の問題】
http://streetwasan.web.fc2.com/math19.5.30.html
キーワード:円4個,正方形,対角線,斜線2本
#Julia, #SymPy, #算額, #和算, #数学

正方形の中に対角線(方斜)1 本,斜線 2 本を引き,区画された領域に等円 4 個を容れる。対角線の長さが 54.56 寸のとき,等円の直径はいかほどか。

ページの作者は,『原文では何故「方斜」を、それも「五十四寸五分六厘」という中途半端な数値で与えているのか。解いてみれば分からなくもありませんが、ここでは不問としておきましょう。』と言っている。

ここでは普通に(?),方斜ではなく正方形の一辺(方面)を与えて等円の直径を求めることにする(方斜が与えられたらそれを 1/√2 倍して,計算すればよい)。

正方形の一辺の長さを a
等円の半径と中心座標を r, (r, y), (x, r), (a- y, a - r), (a - r, a - x)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms a::positive, b::positive, r::positive, x::positive, y::positive

eq1 = dist2(0, a, b, 0, r, y, r)/b
eq2 = dist2(0, a, b, 0, x, r, r)/a
eq3 = dist2(0, 0, a, a, r, y, r)*2
eq4 = dist2(0, a, a, 0, x, r, r)*2
res = solve([eq1, eq2, eq3, eq4], (r, b, x, y))[4]  # 4 of 5

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

# r
res[1] |> factor

SymPy ではこれ以上簡約化できないが,紙と鉛筆で
a*(sqrt(2√2 - 1)*(√2 - 2) + √2)/4
になる。

方斜が 54.56 寸のとき正方形の一辺の長さは a = 54.56/√2 なので,等円の半径は 6.000278751635302,直径は 12.000557503270604 である。

(54.56/√2)*(sqrt(2√2 - 1)*(√2 - 2) + √2)/4

    6.000278751635302

方斜が 54.56 のとき,等円の直径は 12.0005575032706 である。
このとき正方形の一辺の長さは 38.579745981538 で,方斜よりもっときれいな数ではない。

正方形の一辺の長さが 21115(整数)のとき,等円の直径は 6568.00000193929 である。小数点のあと 5 個も 0 が続く。
しかしこのときの方斜は 29861.1193695079 で,きれいな数ではない。

function draw(a, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r, b, x, y) = (-a*sqrt(-1 + 2*sqrt(2))/2 + sqrt(2)*a/4 + sqrt(2)*a*sqrt(-1 + 2*sqrt(2))/4, a*(-sqrt(-1 + 2*sqrt(2)) + 1 + sqrt(2))/2, a*(-6*sqrt(-1 + 2*sqrt(2)) - 3*sqrt(2) + 4 + 5*sqrt(-2 + 4*sqrt(2)))/(2*(-3*sqrt(2) - 2*sqrt(-1 + 2*sqrt(2)) + sqrt(2)*sqrt(-1 + 2*sqrt(2)) + 6)), a*(-sqrt(-1/2 + sqrt(2))/2 + sqrt(2)/4 + 1/2))
    方斜 = √2a
    @printf("方斜 %.15g のとき,等円の直径は %.15g である。\n", 方斜, 2r)
    @printf("a = %.15g;   b = %g;   r = %g;   x = %g;   y = %g\n", a, b, r, x, y)
    plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:green, lw=0.5)
    circle(r, y, r)
    circle(a- y, a - r, r)
    circle(x, r, r)
    circle(a - r, a - x, r)
    segment(0, 0, a, a, :blue)
    segment(0, a, b, 0, :blue)
    segment(0, a, a, a - b, :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(a, a, "(a,a)", :green, :right, :bottom, delta=delta/2)
        point(b, 0, "(b,0)  ", :green, :right, :bottom, delta=delta/2)
        point(r, y, "等円:r,(r,y)", :red, :center, delta=-delta/2)
        point(x, r, "等円:r,(x,r)", :red, :center, delta=-delta/2)
    end
end;

#draw(54.56/√2, true)
draw(21115, true)

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

算額(その1618)

2025年02月14日 | Julia

算額(その1618)

福島県白河市南湖 南湖神社 昭和58年(1983)
http://www.wasan.jp/fukusima/nanko.html
キーワード:円5個,外円,楕円,面積
#Julia, #SymPy, #算額, #和算, #数学

外円の中に楕円 1 個と等円 4 個を容れる。等円の面積が与えられたとき,赤積を求めよ。

外円の半径と中心座標を R, (0, 0)
等円の半径と中心座標を r, (R - r, 0), (0, R - r)
楕円の長半径,短半径と中心座標を a, b, (0, 0)
とおく。

a = R, b = R - 2r である。
また,楕円内の等円は曲率円なので,r = b^2/a である。

等円の面積 = π*r^2
赤積 = 外円の面積 - 楕円の面積 - 2×等円の面積
    = π*R^2 - π*a*b - 2π*r^2

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

using SymPy
@syms R, r, a, b
a = R
b = R - 2r
eq = r - (R - 2r)^2/R  # b^2/a
ans_r = solve(eq, r)[1]
ans_r |> println

    R/4

等円の半径は外円の半径の 1/4 である。

等円の面積 = (PI*r^2)(r => R/4)
等円の面積 |> println

    pi*R^2/16

赤積 = (PI*R^2 - PI*a*b - 2PI*r^2)(r => R/4)
赤積 |> println

    3*pi*R^2/8

赤積と等円の面積の比を取ると 6 である。
赤積は,等円の面積の 6 倍である。

赤積/等円の面積 |> println

    6

function draw(R, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r = R/4
    a = R
    b = R - 2r
    plot()
    circlef(0, 0, R)
    ellipse(0, 0, a, b, color=:orange, fcolor=:orange)
    circle42f(0, R - r, r, :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)
    end
end;

draw(1, true)

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

算額(その1617)

2025年02月14日 | Julia

算額(その1617)

山形県鶴岡市大山 椙尾神社 文政元年8
http://www.wasan.jp/yamagata/sugio.html
キーワード:円2個,円弧,直角三角形
#Julia, #SymPy, #算額, #和算, #数学

外円の一部の円弧(弓形)の中に楕円を容れる。楕円の長径が 6 寸,短径が 3 寸,矢が 3.1 寸のとき外円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
楕円の半径と中心座標を a, b, (0, R - 矢 + b)
円弧と楕円の接点座標を (x0, y0)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms R::positive, x0::positive, y0::positive, a::positive, b::positive, 矢::positive
eq1 = x0^2/a^2 + (y0 - (R - 矢 + b))^2/b^2 - 1
eq2 = x0^2 + y0^2 - R^2
eq3 = -b^2*x0/(a^2*(y0 - (R - 矢 + b))) + x0/y0;
res = solve([eq2, eq3], (x0, y0))[2];

# x0
@syms d
ans_x0 = res[1] |> simplify |> x -> apart(x, d) |> simplify
ans_x0 |> println

    sqrt(-2*R^2*a^2*b^2 + R^2*b^4 - 2*R*a^4*b + 2*R*a^4*矢 - a^4*b^2 + 2*a^4*b*矢 - a^4*矢^2)/(a^2 - b^2)

# y0
ans_y0 = res[2]
ans_y0 |> println

    a^2*(R + b - 矢)/(a^2 - b^2)

eq11 = eq1(x0 => ans_x0, y0 => ans_y0) |> simplify |> numerator;

# R
ans_R = solve(eq11, R)[1]  # 1 of 2
ans_R |> println

    a*(a*(-b + 矢) - sqrt(矢)*sqrt(-2*a^2*b + a^2*矢 + 2*b^3 - b^2*矢))/b^2

長径が 6,短径が 3,矢が 3.1 のとき,外円の直径は 8.94254 である。

2ans_R(a => 6/2, b => 3/2, 矢 => 3.1).evalf() |> println

    8.94253969560281

function draw(a, b, 矢, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    R = a*(a*(-b + 矢) - sqrt(矢)*sqrt(-2*a^2*b + a^2*矢 + 2*b^3 - b^2*矢))/b^2
    x0 =  sqrt(-(R*b^2 + a^2*b - a^2*矢)*(2*R*a^2 - R*b^2 + a^2*b - a^2*矢))/((a - b)*(a + b))
    y0 = a^2*(R + b - 矢)/(a^2 - b^2)
    y = R - 矢
    x = sqrt(R^2 - y^2)
    θ = atand(y, x)
    @printf("長径が %g,短径が %g,矢が %g のとき,外円の直径は %g である。\n", 2a, 2b, 矢, 2R)
    @printf("x0 = %g;  y0 = %g\n", x0, y0)
    plot()
    circle(0, 0, R, :blue, beginangle=θ, endangle=180-θ, n=1000)
    ellipse(0, R - 矢 + b, a, b, color=:red)
    segment(-x, y, x, y, :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)
        dimension_line(0, R, 0, y, "矢 ", :blue, :right, dx=-3delta)
        dimension_line(0, y + b, 0, y + 2b, " b", :red, :left)
        dimension_line(0, y + b, a, y + b, " a", :red, :center, delta=-2delta)
        point(0, R, "R", :blue, :center, :bottom, delta=2delta)
        point(0, y, "R-矢+b", :red, :center, delta=-2delta)
        point(x0, y0, "(x0,y0)", :red, :left, :bottom)
        point(0, y + b, "", :red)
        point(a, y + b, "", :red)
        point(0, y + 2b, "", :red)
    end
end;

draw(6/2, 3/2, 3.1, true)

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

算額(その1616)

2025年02月14日 | Julia

算額(その1616)

山形県新庄市堀端町 戸澤神社(戸沢神社) 文政元年(1818) 
http://www.wasan.jp/yamagata/tozawa.html
キーワード:円2個,円弧,直角三角形
#Julia, #SymPy, #算額, #和算, #数学

直角三角形の中に,円弧,大円,小円を容れる。鈎,股が与えられたとき,小円の最小値を求めよ。

鈎,股をそのまま変数名とし,弦を前もって求めておく。
大円の半径と中心座標を r1, (r1, r1)
小円の半径と中心座標を r2, (r1 + 2sqrt(r1*r2), r2)
円弧の半径と中心座標を R, (x, y)
とおき,以下の連立方程式を立てる。

算額の図では,円弧は股に一点で交差または外接している。そのためには円弧の中心の x 座標が股の長さに等しくなければならない。もしその条件が満たされないと,円弧は股と 2 点で交差することになり,算額の図のようにはならない。つまり,円弧は股に接しているのである。そのとき小円は確定し,必然的に最小値になる。

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

using SymPy
@syms R::positive, x::positive, y::positive, r1::positive, r2::positive, 鈎::positive, 股::positive
@syms R, x, y, r1, r2, 鈎, 股
x = 股
y = R
eq1 = (x - r1)^2 + (y - r1)^2 - (R + r1)^2
eq2 = (x - (r1 + 2sqrt(r1*r2)))^2 + (y - r2)^2 - (R + r2)^2
eq3 = x^2 + (y - 鈎)^2 - R^2;

eq3 から円弧の半径,eq1 から大円の半径,eq2 から小円の半径が順次決定できる。

# R
ans_R = solve(eq3, R)[1]
ans_R |> println

    (股^2 + 鈎^2)/(2*鈎)

# r1
ans_r1 = solve(eq1, r1)[1]
ans_r1 |> println

    2*R + 股 - 2*sqrt(R*(R + 股))

# r2
@syms d
ans_r2 = solve(eq2, r2)[1] |> x -> apart(x, d) |> factor
ans_r2 |> println

    (r1 - 股)^2*(R + r1 - 2*sqrt(R*r1))/(4*(-R + r1)^2)

たとえば,鈎 = 3, 股 = 4 のとき,弦 = 5, r1 = 0.666666666666667 = 2/3, r2 = 0.340136054421768 である。

ans_r2(R => ans_R, r1 => 0.666666666666667)(鈎 => 3, 股 => 4).evalf() |>  println

    0.340136054421769

function draw(鈎, 股, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    R = (股^2 + 鈎^2)/(2*鈎)
    x = 股
    y = R
    r1 = 2R + 股 - 2sqrt(R*(R + 股))
    r2 = (r1 - 股)^2*(R + r1 - 2sqrt(R*r1))/(4(r1 - R)^2)
    @printf("r1 = %g;  R = %g;  x = %g;  y = %g;  r2 = %g\n", r1, R, x, y, r2)
    plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:green, lw=0.5)
    circle(x, y, R, :magenta)
    circle(r1, r1, r1)
    circle(r1 + 2sqrt(r1*r2), 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(x, y, "円弧:R,(x,y)", :magenta, :center, :bottom, delta=delta)
        point(x + 3delta, y - 7delta, "大円:r1,(r1,r1)", :red, :left, mark=false)
        point(x + 3delta, y - 10delta, "小円:r2,(r1+2√(r1*r2),r2)", :blue, :left, mark=false)
        segment(x, y, 股, 0, :orange)
    end
end;

draw(3, 4, true)

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

セルフうどん ぼっこ屋 川東店

2025年02月14日 | さぬきうどん

高松市香川町川東下 セルフうどん ぼっこ屋 川東店
やや細麺

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

算額(その1615)

2025年02月13日 | Julia

算額(その1615)

八戸市北糠塚 光龍寺 昭和54年(1979)8月18日 桑原秀夫 復元奉納
http://www.wasan.jp/aomori/koryuji.html
キーワード:正20面球
#Julia, #SymPy, #算額, #和算, #数学

直径が R の球の表面上に互いに等距離になるように 12 個の点を配置し,それらを結ぶと合同な曲面が 20 個できる。これを正 20 面球と呼ぶ。辺の長さはいかほどか。

球面上の 12 頂点は,この球に内接する一辺の長さが a の正 20 面体である。球の半径は R = (sqrt(10 + 2√5)/4)*a なので,a = R/(sqrt(10 + 2√5)/4) である。

正 20 面体の隣り合う頂点を A, B,重心を O としたとき,∠AOB = θ = 63.4349488229220° である。

using SymPy
@syms R, a, θ
eq1 = R - (sqrt(10 + 2√Sym(5))/4)*a
eq2 = 2R^2 - 2R^2*cos(θ) - a^2
res = solve([eq1, eq2], (θ, a))[2]

    (acos(sqrt(5)/5), 2*sqrt(2)*R/sqrt(sqrt(5) + 5))

θ = res[1]
θ |> println
deg = θ/PI*180
deg.evalf() |> println

    acos(sqrt(5)/5)
    63.4349488229220

A,B,O の3点を含む平面でこの外接球を切ると,切断面は半径 R の円になる。曲線ABはこの円の円周の θ/2π 倍である。

((θ/2PI) * (PI*2R)) |> println

    R*acos(sqrt(5)/5)

R = 6 のとき,正 20 面球の辺の長さは 6.64289230676454 である。

((θ/2PI) * (PI*2R))(R => 6).evalf() |> println

    6.64289230676454

 

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

算額(その1614)

2025年02月13日 | Julia

算額(その1614)

八戸市北糠塚 光龍寺 昭和54年(1979)8月18日 桑原秀夫 復元奉納
http://www.wasan.jp/aomori/koryuji.html
キーワード:正12面球
#Julia, #SymPy, #算額, #和算, #数学

直径が R の球の表面上に互いに等距離になるように 20 個の点を配置し,それらを結ぶと合同な曲面が 12 個できる。これを正 12 面球と呼ぶ。辺の長さはいかほどか。

球面上の 20 頂点は,この球に内接する一辺の長さが a の正 12 面体である。球の半径は R = (√15 + √3)/4 * a なので,a = (√15 - √3)/3 * R である。

正 12 面体の隣り合う頂点を A, B,重心を O としたとき,∠AOB = θ = acos(√5/3) = 41.8103148957786° である。

using SymPy
@syms R, a, θ
eq1 = R - (sqrt(Sym(15)) + sqrt(Sym(3)))/4 * a
eq2 = 2R^2 - 2R^2*cos(θ) - a^2
res = solve([eq1, eq2], (θ, a))[2]

    (acos(sqrt(5)/3), -sqrt(3)*R/3 + sqrt(15)*R/3)

θ = res[1]
θ |> println
deg = θ/PI*180
deg.evalf() |> println

    acos(sqrt(5)/3)
    41.8103148957786

A,B,O の3点を含む平面でこの外接球を切ると,切断面は半径 R の円になる。曲線ABはこの円の円周の θ/2π 倍である。

((θ/2PI) * (PI*2R)) |> println

    R*acos(sqrt(5)/3)

R = 6 のとき,正 12 面球の辺の長さは 9.42477796076938 である。

((θ/2PI) * (PI*2R))(R => 6).evalf() |> println

    4.37836593736180

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

算額(その1613)

2025年02月13日 | Julia

算額(その1613)

八戸市北糠塚 光龍寺 昭和54年(1979)8月18日 桑原秀夫 復元奉納
http://www.wasan.jp/aomori/koryuji.html
キーワード:正8面球
#Julia, #SymPy, #算額, #和算, #数学

直径が R の球の表面上に互いに等距離になるように 6 個の点を配置し,それらを結ぶと合同な曲面が 8 個できる。これを正 8 面球と呼ぶ。辺の長さはいかほどか。

球面上の 6 頂点は,この球に内接する一辺の長さが a の正 8 面体である。球の半径は R = a/√2 なので,a = √2R である。

正 8 面体の隣り合う頂点を A, B,重心を O としたとき,∠AOB = θ = 90° である。

using SymPy
@syms R, a, θ
eq1 = R - (√Sym(2)/2) * a
eq2 = 2R^2 - 2R^2*cos(θ) - (√Sym(2)R)^2
res = solve([eq1, eq2], (θ, a))[1]

    (pi/2, sqrt(2)*R)

θ = res[1]
θ |> println
deg = θ/PI*180
deg.evalf() |> println

    pi/2
    90.0000000000000

A,B,O の3点を含む平面でこの外接球を切ると,切断面は半径 R の円になる。曲線ABはこの円の円周の θ/2π 倍である。

((θ/2PI) * (PI*2R)) |> println

    pi*R/2

R = 6 のとき,正 8 面球の辺の長さは 9.42477796076938 である。

((θ/2PI) * (PI*2R))(R => 6).evalf() |> println

    9.42477796076938

 

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

算額(その1612)

2025年02月13日 | Julia

算額(その1612)

八戸市北糠塚 光龍寺 昭和54年(1979)8月18日 桑原秀夫 復元奉納
http://www.wasan.jp/aomori/koryuji.html
キーワード:正6面球
#Julia, #SymPy, #算額, #和算, #数学

直径が R の球の表面上に互いに等距離になるように 8 個の点を配置し,それらを結ぶと合同な曲面が 6 個できる。これを正 6 面球と呼ぶ。辺の長さはいかほどか。

球面上の 8 頂点は,この球に内接する一辺の長さが a の正 6 面体である。球の半径は R = √(3a^2/4) なので,a = 2√3R/3 である。

正6面体の隣り合う頂点を A, B,重心を O としたとき,∠AOB = θ とおく。
三角形 AOB で OA, OB, ∠AOB で第二余弦定理を適用すると,θ = acosd(1/3) = 70.5287793655093 である。

using SymPy
@syms R, a, θ
eq1 = R - √Sym(3)*a
eq2 = 2R^2 - 2R^2*cos(θ) - (2√Sym(3)R/3)^2
res = solve([eq1, eq2], (θ, a))[2]

    (acos(1/3), sqrt(3)*R/3)

θ = res[1]
θ |> println
deg = θ/PI*180
deg.evalf() |> println

    acos(1/3)
    70.5287793655093

A,B,O の3点を含む平面でこの外接球を切ると,切断面は半径 R の円になる。曲線ABはこの円の円周の θ/2π 倍である。

((θ/2PI) * (PI*2R)) |> println

    R*acos(1/3)

R = 6 のとき,正6面球の辺の長さは 7.38575650404465 である。

((θ/2PI) * (PI*2R))(R => 6).evalf() |> println

    7.38575650404465

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

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

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