算額あれこれ

算額問題をコンピュータで解きます

算額(その2433)

東都本所亀戸村 天満宮 寛政9年(1797)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円5個,外円,弦
#Julia #SymPy #算額 #和算 #数学


外円の中に甲円,乙円,丙円,丁円を容れる。甲円の直径が 135 寸,丙円の直径が 60 寸,丁円の直径が 54 寸のとき,外円の直径はいかほどか。

外円の半径と中心座標を \(R,\ (0,\ 0)\)
甲円の半径と中心座標を \(r_1,\ (r_1,\ y + r_1)\)
乙円の半径と中心座標を \(r_2,\ (x_2,\ y_2)\)
丙円の半径と中心座標を \(r_3,\ (x_3,\ y + r_3)\)
丁円の半径と中心座標を \(r_4,\ (x_4,\ y + r_4)\)
とおき,以下の連立方程式の解を求める。

include("julia-source.txt");  # julia-source.txt ソース
function driver(r1, r3, r4)
    function H(u)
        function parameters()
            eq1 = x1^2 + (y + r1)^2 - (R - r1)^2
            eq2 = x2^2 + y2^2 - (R - r2)^2
            eq3 = x3^2 + (y + r3)^2 - (R - r3)^2
            eq4 = (x1 - x2)^2 + ( (y + r1) - y2)^2 - (r1 + r2)^2
            eq5 = (x1 - x4)^2 + (r1 - r4)^2 - (r1 + r4)^2
            eq6 = (x2 - x3)^2 + (y2 - (y + r3))^2 - (r2 + r3)^2
            eq7 = (x2 - x4)^2 + (y2 - (y + r4))^2 - (r2 + r4)^2
            eq8 = (x3 - x4)^2 + (r3 - r4)^2 - (r3 + r4)^2
            return [eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8]
        end;
        (R, y, x1, r2, x2, y2, x3, x4) = u
        return parameters()
    end;
    iniv = BigFloat[65, -36, 35, 30, -24, 26, -44, -10]
    iniv = BigFloat[2.8, -2.3, 1.2, 1.8, -0.84, 0.56, -1.4, -0.27].*r1
    res = nls(H, ini=iniv)
    res[2] || println("収束していない")
    return res[1]
end;
(r1, r3, r4) = (135/2, 60/2, 54/2)
(R, y, x1, r2, x2, y2, x3, x4) = driver(r1, r3, r4)
(R, y, x1, r2, x2, y2, x3, x4) |> println

    (125.0, -35.0, 47.43416490252569, 42.1875, -59.292706128157114, 57.8125, -94.86832980505137, -37.94733192202055)

# 2R: 外円の直径
2R

    250.0

甲円の直径が 135 寸,丙円の直径が 60 寸,丁円の直径が 54 寸のとき,外円の直径は 250 寸である。

 

描画関数プログラムのソースを見る

function draw(r1, r3, r4, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (R, y, x1, r2, x2, y2, x3, x4) = [65, -36, 35, 30, -24, 26, -44, -10]
    (R, y, x1, r2, x2, y2, x3, x4) = driver(r1, r3, r4)
    @printf("甲円の直径が %.15g,丙円の直径が %.15g,丁円の直径が %.15g のとき,外円の直径は %.15g である。\n", 2r1, 2r3, 2r4, 2R)
    x = sqrt(R^2 - y^2)
    plot()
    circle(0, 0, R, :green)
    circle(x1, y + r1, r1)
    circle(x2, y2, r2, :blue)
    circle(x3, y + r3, r3, :magenta)
    circle(x4, y + r4, r4, :orange)
    segment(-x, y, x, y)
    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, 0, " 外円:R,(0,0)", :green, :left, :vcenter)
        point(x1, y + r1, "甲円:r1,(x1,y_r1)", :red, :center, delta=-delta)
        point(x2, y2, "乙円:r2,(x2,y2)", :blue, :center, delta=-delta)
        point(x3, y + r3, "丙円:r3\n(x3,y+r3", :magenta, :center, delta=-delta)
        point(x4, y + r4, "丁円:r4\n(x4,y+r4)", :orange, :center, delta=-delta)
    end
end;
(r1, r3, r4) = (135/2, 60/2, 54/2)
draw(r1, r3, r4, true)

    甲円の直径が 135,丙円の直径が 60,丁円の直径が 54 のとき,外円の直径は 250 である。

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2432)

東都本庄牛島 牛御前社 寛政2年(1790)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円6個,直線上
#Julia #SymPy #算額 #和算 #数学


直線上に甲円 2 個,乙円 1 個,丙円 2 個,丁円 1 個が載っている。甲円の直径が 553 寸のとき,乙円の直径はいかほどか。

甲円の半径と中心座標を \(r_1,\ (r_1,\ r_1)\)
乙円の半径と中心座標を \(r_2,\ (0,\ 2r_4 + r_2)\)
丙円の半径と中心座標を \(r_3,\ (2\sqrt{r_3 r_4},\ r_3)\)
丁円の半径と中心座標を \(r_4,\ (0,\ r_4)\)
とおき,以下の連立方程式の解を求める。

include("julia-source.txt");  # julia-source.txt ソース
@syms r1, r2, r3, r4
eq1 = r1 - 2sqrt(r1*r3) + 2sqrt(r3*r4)
eq2 = r1^2 + (r1 - (2r4 + r2))^2 - (r1 + r2)^2
eq3 = (2sqrt(r3*r4))^2 + ( (2r4 + r2) - r3)^2 - (r2 + r3)^2
res = solve([eq1, eq2, eq3], (r2, r3, r4))[3]  # 3 of 3

    (sqrt(5)*r1/40 + r1/8, -3*sqrt(5)*r1/2 + 7*r1/2, r1*(3 - sqrt(5))/8)

# r2: 乙円の半径
ans_r2 = res[1] |> simplify
@show(ans_r2)

    ans_r2 = r1*(sqrt(5) + 5)/40

    \(\displaystyle \frac{r_{1} \left(\sqrt{5} + 5\right)}{40}\)

ans_r2(r1 => 553/2).evalf()*2 |> println

    100.038639788935

甲円の直径が 553 寸のとき,乙円の直径は 100.038639788935 寸である。

術は以下のようになっているが,分母を有理化すれば同じ式になる。

@syms 甲  # = 553
乙 = 甲/2(5 - √Sym(5))

    \(\displaystyle \frac{甲}{10 - 2 \sqrt{5}}\)

apart(乙) |> simplify

    \(\displaystyle \frac{甲 \left(\sqrt{5} + 5\right)}{40}\)

# r3: 丙円の半径
ans_r3 = res[2] |> simplify
@show(ans_r3)

    ans_r3 = r1*(7 - 3*sqrt(5))/2

    \(\displaystyle \frac{r_{1} \left(7 - 3 \sqrt{5}\right)}{2}\)

# r4: 丁円の半径
ans_r4 = res[3]
@show(ans_r4)

    ans_r4 = r1*(3 - sqrt(5))/8

    \(\displaystyle \frac{r_{1} \left(3 - \sqrt{5}\right)}{8}\)

甲円の直径が 553,乙円の直径は 100.038639788935,丙円の直径は 80.6816126639244,丁円の直径は 52.806801055327 である。

 

描画関数プログラムのソースを見る

function draw(r1, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    r2 = r1*(√5 + 5)/40
    r3 = r1*(7 - 3√5)/2
    r4 = r1*(3 - √5)/8
    plot()
    @printf("甲円の直径が %.15g,乙円の直径は %.15g,丙円の直径は %.15g,丁円の直径は %.15g である。\n", 2r1, 2r2, 2r3, 2r4)
    circle2(r1, r1, r1)
    circle(0, 2r4 + r2, r2, :blue)
    circle2(2sqrt(r3*r4), r3, r3, :magenta)
    circle(0, r4, r4, :black)
    segment(-2r1, 0, 2r1, 0)
    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", :red, :center, delta=-3delta)
        point(0, 2r4 + r2, "乙円:r2,(0,2r4+r2)", :blue, :left, :bottom, delta=delta/2, deltax=r2 + delta)
        point(2sqrt(r3*r4), r3, "丙円:r3,(2√(r3*r4),r3)", :magenta, :left, delta=-r3 - delta)
        point(0, r4, "丁円:r4,(0,r4)", :black, :right, delta=-r4 - delta)
    end
end;
r1 = 553/2
draw(r1, true)

    甲円の直径が 553,乙円の直径は 100.038639788935,丙円の直径は 80.6816126639244,丁円の直径は 52.806801055327 である。

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2431)

東都不忍岡 辨財天社 寛政2年(1790)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円6個,円弧
#Julia #SymPy #算額 #和算 #数学


弓形の中に甲円,乙円,丙円を容れる。甲円,乙円の直径がそれぞれ 1089 寸,144 寸のとき,乙円の直径はいかほどか。

弓形を構成する外円の半径と中心座標を \(R,\ (0,\ 0)\)
弦と \(y\) 軸の交点座標を \( (0,\ y)\)
甲円の半径と中心座標を \(r_1,\ (r_1,\ y + r_1)\)
乙円の半径と中心座標を \(r_2,\ (x_2,\ y_2)\)
丙円の半径と中心座標を \(x_3,\ (x_3,\ y_3\)
とおき,以下の連立方程式の数値解を求める。

include("julia-source.txt");  # julia-source.txt ソース
function driver(r1, r3)
    function H(u)
        function parameters()
            eq1 = r1^2 + (y + r1)^2 - (R - r1)^2
            eq2 = (r1 + 2sqrt(r1*r2))^2 + (y + r2)^2 - (R - r2)^2
            eq3 = (r1 + 2sqrt(r1*r2) + 2sqrt(r2*r3))^2 + (y + r3)^2 - (R - r3)^2
            return [eq1, eq2, eq3]
        end;
        (R, y, r2) = u
        return parameters()
    end;
    iniv = BigFloat[3.8, 1.6, 0.54].*r1
    res = nls(H, ini=iniv)
    res[2] || println("収束していない")
    return res[1]
end;
(r1, r3) = (1089/2, 144/2)
(R, y, r2) = driver(r1, r3)
(R, y, r2) |> println

    (1701.5625, 476.4375, 242.0)

# 乙円の直径
2r2

    484.0

 

描画関数プログラムのソースを見る

function draw(r1, r3, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (R, y, r2) = driver(r1, r3)
    x = sqrt(R^2 - y^2)
    θ = atand(y, x)
    y1 = y + r1
    x2 = r1 + 2sqrt(r1*r2)
    y2 = y + r2
    x3 = x2 + 2sqrt(r2*r3)
    y3 = y + r3
    plot()
    circle(0, 0, R, :green, beginangle=θ, endangle=180-θ)
    circle2(r1, y1, r1)
    circle2(x2, y2, r2, :blue)
    circle2(x3, y3, r3, :magenta)
    segment(-x, y, x, y)
    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, y1, "甲円:r1,(r1,y1)", :red, :center, delta=-3delta)
        point(x2, y2, "乙円:r2\n(x2,y2)", :blue, :right, deltax=5delta, delta=-r2 - 3delta)
        point(x3, y3, "丙円:r3\n(x3,y3)", :magenta, :left, deltax=-6delta, delta=-r3 - 3delta)
        point(0, 0, "(0,0)", :green, :center, delta=-3delta)
        point(0, y, "(0,y)", :green, :center, delta=-3delta)
        point(0, R, "(0,R)", :green, :center, :bottom, delta=3delta)
    end
end;
(r1, r3) = (1089/2, 144/2)
draw(r1, r3,  true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2430)

京都 北野天満宮 天明6年(1786)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円3個,円弧,長方形,対角線
#Julia #SymPy #算額 #和算 #数学


長方形の中に円弧,大円,小円,容円,対角線を容れる。大円と小円の直径が 24 寸, 16 寸のとき,容円の直径はいかほどか。

長方形の長辺と短辺を \(a,\ b\)
円弧の半径と中心座標を \(r_0,\ (0,\ y_0)\) 注
大円の半径と中心座標を \(r_1,\ (r_1,\ r_1)\)
小円の半径と中心座標を \(r_2,\ (a - r_2,\ b - r_2)\)
容円の半径と中心座標を \(r,\ (r,\ r)\)
とおき,以下の連立方程式の解を求める。

注:円弧が長方形の左上の頂点 1 点だけを通る(接する)ためには 円弧の中心は \(y\) 軸上になければならない。

include("julia-source.txt");  # julia-source.txt ソース
function driver(r1, r2)
    function H(u)
        function parameters()
            eq1 = r1^2 + (r1 - y0)^2 - (r0 - r1)^2
            eq2 = (a - r2)^2 + (b - r2 - y0)^2 - (r0 + r2)^2
            eq3 = a + b - sqrt(a^2 + b^2) - 2r
            eq4 = a^2 + y0^2 - r0^2
            eq5 = b - (r0 + y0)
            return [eq1, eq2, eq3, eq4, eq5]
        end;
        (a, b, r0, y0, r) = u
        return parameters()
    end;
    iniv = BigFloat[3.4, 2.2, 3.7, -1.5, 0.77].*r1
    res = nls(H, ini=iniv)
    res[2] || println("収束していない")
    return res[1]
end;
(r1, r2) = (40, 20)
(a, b, r0, y0, r) = driver(r1, r2)
(a, b, r0, y0, r) |> println

    (120.0, 90.0, 125.0, -35.0, 30.0)

等円と丙円の直径が 40,20 のとき,与えられたとき乙円の直径は 30
である。

術によれば,「乙円の直径は,等円と丙円の直径の平均値(足して二で割る)」

 

描画関数プログラムのソースを見る

function draw(r1, r2, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (a, b, r0, y0, r) = driver(r1, r2)
    println(r)
    θ1 = atand(-y0, a)
    θ2 = atand(b - y0)
    plot([0, a, a, 0, 0], [0, 0, b, b, 0], color=:green, lw=0.5)
    circle(r1, r1, r1)
    circle(a - r2, b - r2, r2, :blue)
    circle(r, r, r, :magenta)
    circle(0, y0, r0, :black, beginangle=θ1, endangle=θ2)
    segment(a, 0, 0, b)
    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, :bottom, delta=delta)
        point(a - r2, b - r2, "小円:r2,(a-r2,b-r2)", :blue, :center, delta=-delta)
        point(r, r, "容円:r,(r,r)", :magenta, :center, delta=-delta)
        point(0, 0, "(0,0)", :green, :left, delta=-delta)
        point(a, b, "(a,b)", :green, :right, :bottom, delta=delta/2)
        # point(0, y0, "円弧:r0,(0,y0)", :black, :center, delta=-delta)
    end
end;
(r1, r2) = (24, 16)
draw(r1, r2,  true)

    20.0

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2429)

武州足立郡梅田村 明王院不動堂 文政8年(1825)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円5個,長方形
#Julia #SymPy #算額 #和算 #数学


長方形の中に等円 2 個,甲円,乙円,丙円を 1 個ずつ容れる。等円と丙円の直径が与えられたとき乙円の直径を得るすべはいかに。

長方形の長辺と短辺を \(2a,\ b;\ b = 2r_0\)
等円の半径と中心座標を \(r_0,\ (a - r_0,\ r_0)\)
甲円の半径と中心座標を \(r_1,\ (0,\ r_1)\)
乙円の半径と中心座標を \(r_2,\ (0,\ r_2)\)
丙円の半径と中心座標を \(r_3,\ (0,\ 2r_1 - r_3)\)
とおき,以下の連立方程式の解を求める。

include("julia-source.txt");  # julia-source.txt ソース
@syms a, r0, r1, r2, r3
b = 2r0
eq1 = (a - r0)^2 + (r0 - r2)^2 - (r0 + r2)^2
eq2 = (a - r0)^2 + (r0 - (2r1 - r3))^2 - (r0 + r3)^2;

res = solve([eq1, eq2], (a, r2))[2]  # 2 of 2

    (r0 + 2*sqrt(r1*(r0 - r1 + r3)), r1*(r0 - r1 + r3)/r0)

# r2: 乙円の半径
ans_r2 = res[2]
@show(ans_r2)

    ans_r2 = r1*(r0 - r1 + r3)/r0

    \(\displaystyle \frac{r_{1} \left(r_{0} - r_{1} + r_{3}\right)}{r_{0}}\)

乙円の半径は \(\displaystyle \frac{r_1(r_0 - r_1 + r_3)}{r_0}\) である。

 

描画関数プログラムのソースを見る

function draw(r0, r1, r3, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (a, r2) = (r0 + 2*sqrt(r1*(r0 - r1 + r3)), r1*(r0 - r1 + r3)/r0)
    b = 2r0
    @printf("等円の直径が %.15g, 甲円の直径が %.15g, 丙円の直径が %.15g のとき,乙円の直径は %.15g である。\n", 2r0, 2r1, 2r3, 2r2)
    plot([a, a, -a, -a, a], [0, b, b, 0, 0], color=:green, lw=0.5)
    circle2(a - r0, r0, r0)
    circle(0, r1, r1, :blue)
    circle(0, r2, r2, :magenta)
    circle(0, 2r1 - r3, r3, :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(a - r0, r0, "等円:r0,(a-r0,r0)", :red, :center, delta=-delta)
        point(0, r1, "甲円:r1,(0,r1)", :blue, :center, delta=-delta)
        point(0, r2, "乙円:r2\n(0,r2)", :magenta, :center, delta=-delta)
        point(0, 2r1 - r3, " 丙円:r3,(0,2r1-r3)", :black, :center, :bottom, delta=r3 + delta/2)
        point(a, 0, "(a,0)", :green, :right, delta=-delta)
    end
end;
draw(5, 3, 1,  true)

    等円の直径が 10, 甲円の直径が 6, 丙円の直径が 2 のとき,乙円の直径は 3.6 である。

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2428)

房州(千葉県館山市那古) 那古寺 文政8年(1825)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円5個,半円
#Julia #SymPy #算額 #和算 #数学


半円の中に,甲円 1 個,乙円1個,丙円 2 個,丁円 1 個を容れる。丁円の直径が 3 寸のとき,甲円の直径はいかほどか。

半円の半径と中心座標を \(R,\ (0,\ 0)\)
甲円の半径と中心座標を \(r_1,\ (x_1,\ r_1)\)
乙円の半径と中心座標を \(r_2,\ (x_2,\ r_2)\)
丙円の半径と中心座標を \(r_3,\ (x_{31}, r_3),\ (x_{32}, y_3)\)
丁円の半径と中心座標を \(r_4,\ (x_4,\ y_4)\)
とおき,以下の連立方程式の数値解を求める。

include("julia-source.txt");  # julia-source.txt ソース
function driver(r4)
    function H(u)
        function parameters()
            eq1 = x1^2 + r1^2 - (R - r1)^2
            eq2 = x2^2 + r2^2 - (R - r2)^2
            eq3 = x32^2 + y3^2 - (R - r3)^2
            eq4 = x31^2 + r3^2 - (R - r3)^2
            eq5 = x4^2 + y4^2 - (R - r4)^2
            eq6 = (x1 - x2)^2 + (r1 - r2)^2 - (r1 + r2)^2
            eq7 = (x1 - x32)^2 + (r1 - y3)^2 - (r1 + r3)^2
            eq8 = (x1 - x31)^2 + (r1 - r3)^2 - (r1 + r3)^2
            eq9 = (x2 - x32)^2 + (r2 - y3)^2 - (r2 + r3)^2
            eq10 = (x2 - x4)^2 + (r2 - y4)^2 - (r2 + r4)^2
            eq11 = (x32 - x4)^2 + (y3 - y4)^2 - (r3 + r4)^2
            return [eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9, eq10, eq11]
        end;
        (R, r1, x1, r2, x2, r3, x31, x32, y3, x4, y4) = u
        return parameters()
    end;
    iniv = BigFloat[105, 49, -40, 38, 55, 18, -95, 18, 87, 45, 85]
    iniv = BigFloat[14, 6.4, -3.7, 4.8, 7.4, 2.2, -11, 3.7, 11, 6.9, 11].*r4
    res = nls(H, ini=iniv)
    res[2] || println("収束していない")
    return res[1]
end;

\(r_4\) に任意の値を与えてパラメータを求める。

r4 = pi
(R, r1, x1, r2, x2, r3, x31, x32, y3, x4, y4) = driver(r4)
(R, r1, x1, r2, x2, r3, x31, x32, y3, x4, y4) |> println

    (43.045178666742586, 19.977336943128453, -11.533920861807067, 15.204355247089632, 23.322500513551166, 7.059949080858867, -35.28588765107718, 11.528848572090213, 34.08844964134588, 21.712199102713647, 33.47949502058243)

\(p=r_1/r_4\) を求める。

p = r1/r4

    6.358983848622454

6.358983848622454 がどういう数値なのかを nsimplify で探る。

sympy.nsimplify(p)

    \(41 - 20 \sqrt{3}\)

3*(41 - 20√3)

    19.076951545867374

甲円の半径は丁円の半径の \(6.358983848622454 = 41 - 20\sqrt{3}\) 倍である。
丁円の直径が 3 のとき 甲円の直径は 19.076951545867374 である。

術は,\(甲円径 = (41 - \sqrt{1200})\cdot 丁円径\) で,同じである。

(41 - sqrt(1200))*3

    19.076951545867352

 

描画関数プログラムのソースを見る

function draw(r4, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (R, r1, x1, r2, x2, r3, x31, x32, y3, x4, y4) = driver(r4)
    (R, r1, x1, r2, x2, r3, x31, x32, y3, x4, y4) |> println
    plot()
    circle(0, 0, R, :green, beginangle=0, endangle=180)
    circle(x1, r1, r1)
    circle(x2, r2, r2, :blue)
    circle(x31, r3, r3, :magenta)
    circle(x32, y3, r3, :magenta)
    circle(x4, y4, r4, :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, 0, "半円:R,(0,0)", :green, :center, delta=-delta)
        point(x1, r1, "甲円:r1,(x1,r1)", :red, :center, delta=-delta)
        point(x2, r2, "乙円:r2,(x2,r2)", :blue, :center, delta=-delta)
        point(x31, r3, "丙円:r3\n(x31,r3)", :magenta, :center, :bottom, delta=delta/2)
        point(x32, y3, "丙円:r3\n(x32,y3)", :magenta, :center, :bottom, delta=delta/2)
        point(x4, y4, "丁円:r4\n(x4,y4)", :black, :left, :bottom, delta=3delta, deltax=5delta)
    end
end;
draw(3, true)

    (41.1051177665153, 19.076951545867363, -11.01408311032397, 14.519089764597062, 22.271347451969614, 6.741754765174631, -33.695540646325206, 11.00923943043658, 32.55207157655607, 20.73362287555375, 31.97056274847714)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2427)

四十二 群馬県高崎市石原町 八幡宮 文政7年(1824)

群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円4個,楕円
#Julia #SymPy #算額 #和算 #数学


互いに接する 3 個の等円と,その 3 個の中心座標を通る大円がある。等円と大円の交点 で等円と接する楕円を描く。楕円の短半径が 1 寸のとき,長半径はいかほどか。

等円の半径と中心座標を \(r,\ (r,\ -r/\sqrt{3})\)
大円の半径と中心座標を \(R,\ (0,\ 0);\ R = 2r/\sqrt{3}\)
楕円の長半径,短半径と中心座標を \(a,\ b\, (0,\ -R)\)
大円と等円の交点(楕円と等円の接点)を \( (x,\ y)\)
とおき,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース
@syms x::positive, y::negative, a::positive, b::positive, r::positive
R = 2r/√Sym(3)
eq1 = (x - r)^2 + (y + R/2)^2 - r^2
eq2 = x^2 + y^2 - R^2
eq3 = x^2/a^2 + (y + R)^2/b^2 - 1
eq4 = x/a^2*(y + R/2) - (y + R)/b^2*(x - r);

eq1, eq2 を解いて,交点座標 \( (x,\ y)\) を求める。

res = solve([eq1, eq2], (x, y))[2]  # 2 of 2

    (5*r/6 + sqrt(3)*(-sqrt(39)*r/8 - 5*sqrt(3)*r/24)/3, -sqrt(39)*r/8 - 5*sqrt(3)*r/24)

# x: 等円と大円の交点座標
ans_x = res[1] |> simplify
@show(ans_x)

    ans_x = r*(5 - sqrt(13))/8

    \(\displaystyle \frac{r \left(5 - \sqrt{13}\right)}{8}\)

# y: 等円と大円の交点座標
ans_y = res[2] |> simplify
@show(ans_y)

    ans_y = r*(-3*sqrt(39) - 5*sqrt(3))/24

    \(\displaystyle \frac{r \left(- 3 \sqrt{39} - 5 \sqrt{3}\right)}{24}\)

得られた解を eq3, eq4 に代入し,新たな方程式 eq3_2, eq4_2 にする。

eq3_2 = eq3(x => res[1], y => res[2]) |> factor |> numerator

    \(- 96 a^{2} b^{2} - 33 \sqrt{13} a^{2} r^{2} + 119 a^{2} r^{2} - 15 \sqrt{13} b^{2} r^{2} + 57 b^{2} r^{2}\)

eq4_2 = eq4(x => res[1], y => res[2]) |> factor |> numerator

    \(- r^{2} \left(- \sqrt{39} + 3 \sqrt{3}\right) \left(a - 3 b\right) \left(a + 3 b\right)\)

eq3_2, eq4_2 を解いて,\(a,\ r\) を求める。

res2 = solve([eq3_2, eq4_2], (a, r))[1];

# a: 楕円の長半径
ans_a = res2[1] |> simplify
@show(ans_a)

    ans_a = 3*b

    \(3 b\)

楕円の長径は短径の 3 倍である。
楕円の短径が 1 寸のとき,長径は 3 寸である。

# r: 等円の半径
ans_r = res2[2] |> simplify
@show(ans_r)

    ans_r = b*sqrt(39*sqrt(13) + 141)

    \(b \sqrt{39 \sqrt{13} + 141}\)

ans_r.evalf()

    \(16.7814331850142 b\)

 

描画関数プログラムのソースを見る

function draw(b, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    a = 3b
    r = b*sqrt(39√13 + 141)
    x = r*(5 - √13)/8
    y = r*(-3√39 - 5√3)/24
    R = 2r/√3
    plot()
    circle(0, 0, R, :green)
    rotate(0, R, r)
    ellipse(0, -R, a, b, color=:blue)
    ellipse(r, R/2, a, b, color=:blue, φ = 120)
    ellipse(-r, R/2, a, b, color=:blue, φ = 240)
    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, :bottom, delta=delta, deltax=-delta)
        point(r, -R/2, "等円:r,(r, -R/2)", :red, :left, delta=-delta)
        point(0, 0, "大円:R,(0,0)", :green, :center, :bottom, delta=delta/2)
        point(0, -R, "楕円:a,b\n(0, -R)", :blue, :center, delta=-1.5delta)
    end
end;
draw(1/2, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2426)

武州荏原郡目黒村 不動堂 文政7年(1824)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円7個,外円
#Julia #SymPy #算額 #和算 #数学


外円の中に,等円を3個容れる。等円3個は外円に内接する。等円3個は一点で交わる。2個の等円と外接し,外円に内接する3個の円,大円,中円,小円を容れる。大円,中円,小円の直径がそれぞれ 3, 2, 1 のとき,外円の直径はいかほどか。

外円の半径と中心座標を \(R,\ (0,\ 0)\)
等円の半径と中心座標を \(r,\ (0,\ R-r),\ (x_{02}, y_{02}),\ (x_{03},\ y_{03})\)
大円の半径と中心座標を \(r_1,\ (x_1,\ y_1)\)
中円の半径と中心座標を \(r_2,\ (x_2,\ y_2)\)
小円の半径と中心座標を \(r_3,\ (x_3,\ y_3)\)
とおき,以下の連立方程式の数値解を求める。
実際には \(R = 2r\) つまり,3 個の等円は外円の中心(原点)で交わるので,必要な条件式は 11 個である。

後半に,スマートな解法を掲示しておく。

include("julia-source.txt");  # julia-source.txt ソース
function driver(r1, r2, r3)
    function H(u)
        function parameters()
            eq1 = x02^2 + (R - 2r - y02)^2 - r^2
            eq2 = x03^2 + (R - 2r - y03)^2 - r^2
            eq3 = x02^2 + y02^2 - (R - r)^2
            eq4 = x03^2 + y03^2 - (R - r)^2
            eq5 = x1^2 + (R - r - y1)^2 - (r + r1)^2
            eq6 = (x1 - x02)^2 + (y1 - y02)^2 - (r + r1)^2
            eq7 = (x02 - x2)^2 + (y02 - y2)^2 - (r + r2)^2
            eq8 = (x2 - x03)^2 + (y2 - y03)^2 - (r + r2)^2
            eq9 = (x03 - x3)^2 + (y03 - y3)^2 - (r + r3)^2
            eq10 = x3^2 + (y3 - (R - r))^2 - (r + r3)^2
            eq11 = x1^2 + y1^2 - (R - r1)^2
            eq12 = x2^2 + y2^2 - (R - r2)^2
            eq13 = x3^2 + y3^2 - (R - r3)^2
            return [eq1, eq2, eq3, eq5, eq6, eq7, eq8, eq9, eq10, eq11, eq12, eq13]
        end;
        (R, r, x1, y1, x2, y2, x3, y3, x02, y02, x03, y03) = u
        return parameters()
    end;
    iniv = BigFloat[4.2, 2.1, 3.0, 1.2, -0.77, -3.3, -2.8, 2.0, 1.5, -1.5, -2.0, -0.71].*r1
    res = nls(H, ini=iniv)
    res[2] || println("収束していない")
    return res[1]
end;
(r1, r2, r3) = (3/2, 2/2, 1/2)
(R, r, x1, y1, x2, y2, x3, y3, x02, y02, x03, y03) = driver(r1, r2, r3)
(R, r, x1, y1, x2, y2, x3, y3, x02, y02, x03, y03) |> println

    (5.027232252529662, 2.513616126264831, 3.487605699499009, 0.5272322525296618, -2.7250611947673473, -2.9652387931814683, -2.8380388484055894, 3.5272322525296618, 0.7430023442776912, -2.401294139962131, -2.4553634840290193, 0.5380113302854218)

# 2R: 外円の直径
2R

    10.054464505059324

スマートな解

3個の等円の中心は、外円の中心から距離 \(R-r\)、共有点から距離 \(r\) の位置にあります。3つの異なる中心があるので、中心の軌跡である2つの円は一致します。よって共有点は外円の中心で、

\(
R=2r.
\)

半径 \(s\) の大・中・小円について考えます。その中心は外円の中心から距離 \(2r-s\)、等円の中心から距離 \(r+s\) にあります。等円2個の中心と外円の中心を結ぶ二等辺三角形で、等円の中心方向の間隔を \(2\theta_s\) とすると、余弦定理から

\(
\cos\theta_s
=\frac{r^2+(2r-s)^2-(r+s)^2}{2r(2r-s)}
=\frac{2r-3s}{2r-s}.
\)

3つの間隔 \(2\theta_s\) が一周するので、求める \(r\) は

\(
\arccos\!\frac{2r-4.5}{2r-1.5}
+\arccos\!\frac{2r-3}{2r-1}
+\arccos\!\frac{2r-1.5}{2r-0.5}
=\pi
\)

の解です。これを数値的に解くと、

\(
r=2.5136161262648308768\ldots,\qquad
\boxed{2R=4r=10.0544645050593235074\ldots}
\)

@syms r
eq = acos( (2r - 4.5)/(2r - 1.5)) + acos( (2r - 3)/(2r - 1)) + acos( (2r - 1.5)/(2r - 0.5)) - PI

    \(\displaystyle \operatorname{acos}{\left(\frac{2 r - 4.5}{2 r - 1.5} \right)} + \operatorname{acos}{\left(\frac{2 r - 3}{2 r - 1} \right)} + \operatorname{acos}{\left(\frac{2 r - 1.5}{2 r - 0.5} \right)} - \pi\)

using Roots
find_zero(eq, (2, 3))*4

    10.054464505059324

 

描画関数プログラムのソースを見る

function draw(r1, r2, r3, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (R, r, x1, y1, x2, y2, x3, y3, x02, y02, x03, y03) =
        [80, 40, 57, 23, -14, -64, -53, 38, 28, -28, -40, -15, 14]
    (R, r, x1, y1, x2, y2, x3, y3, x02, y02, x03, y03) =driver(r1, r2, r3)
    println(R)
    plot()
    circle(0, 0, R, :green)
    circle(0, R - r, r)
    circle(x02, y02, r)
    circle(x03, y03, r)
    circle(x1, y1, r1, :blue)
    circle(x2, y2, r2, :magenta)
    circle(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, 0, "外円:R,(0,0)", :green, :left, delta=-delta)
        point(0, R - r, "等円:r,(0,R-r)", :red, :left, :vcenter, deltax=delta)
        point(x02, y02, "等円:r,(x02,y02)", :red, :center, delta=-delta)
        point(x03, y03, "等円:r,(x03,y03)", :red, :center, delta=-delta)
        point(x1, y1, "大円:r1,(x1,y1)", :blue, :center, delta=-delta)
        point(x2, y2, "中円:r2\n(x2,y2)", :magenta, :center, delta=-delta)
        point(x3, y3, "小円:r3,(x3,y3)", :orange, :left, :vcenter, deltax=r3 + delta)
    end
end;
(r1, r2, r3) = (3, 2, 1)
draw(r1, r2, r3, true)

    10.054464505059324

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2425)

武州荏原郡目黒村 不動堂 文政7年(1824)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円3個,円弧
#Julia #SymPy #算額 #和算 #数学


交差する円弧の中に円を容れる。「交矢」,「接弦」がそれぞれ 1 寸,4 寸のとき,円の直径はいかほどか。

円弧の半径と中心座標を \(r_0,\ (x_0,\ 0),\ (-x_0,\ 0)\)
円弧の端点を結ぶ弦と \(y\) 軸の交点座標を \( (0,\ y_0)\)
円の半径と中心座標を \(r_1,\ (0,\ y_0 + r_1),\ (x_1,\ y_0 + r_1)\)
とおく。
円弧の交点座標は \(\left(0,\ \sqrt{r_0^2 - x_0^2}\right)\)
円弧の端は \(\left(\sqrt{r_0^2 - y_0^2} + x_0,\ y_0\right),\ \left(-\sqrt{r_0^2 - y_0^2} - x_0,\ y_0\right)\)
となり,「交矢」は \(\sqrt{r_0^2 - x_0^2} - y_0\),「接弦」は \(2\left(\sqrt{r_0^2 - y_0^2} + x_0\right)\)
である。

これらの条件を表す以下の連立方程式の数値解を求める。

include("julia-source.txt");  # julia-source.txt ソース
function driver(矢, 接弦)
    function H(u)
        function parameters()
            eq1 = x0^2 + (y0 + r1)^2 - (r0 - r1)^2
            eq2 = (x1 - x0)^2 + (y0 + r1)^2 - (r0 - r1)^2
            eq3 = (x1 + x0)^2 + (y0 + r1)^2 - (r0 + r1)^2
            eq4 = sqrt(r0^2 - x0^2) - y0 - 矢
            eq5 = 2(sqrt(r0^2 - y0^2) + x0) - 接弦
            return [eq1, eq2, eq3, eq4, eq5]
        end;
        (r0, x0, y0, r1, x1) = u
        return parameters()
    end;
    iniv = BigFloat[45, 20, 13, 14, 34]
    iniv = BigFloat[1.3, 0.55, 0.20, 0.46, 1.1].*矢
    res = nls(H, ini=iniv)
    res[2] || println("収束していない")
    return res[1]
end;
(矢, 接弦) =(1, 4)
(r0, x0, y0, r1, x1) = driver(矢, 接弦)
(r0, x0, y0, r1, x1) |> println

    (1.4564392373896, 0.58257569495584, 0.33484861008832, 0.466060555964672, 1.16515138991168)

# 2r1: 円の直径
2r1

    0.932121111929344

「交矢」,「接弦」がそれぞれ 1 寸,4 寸のとき,円の直径は 0.932121111929344 である。

術は以下のようになっており,これにより計算される円の直径は完全に一致する。

@syms 矢, 弦
位 = (矢/弦)^2
A = (4*位 + 1)*位 + 1//4
円径 = 矢/(sqrt(A) + 1//2)

    \(\displaystyle \frac{矢}{\sqrt{\frac{1}{4} + \frac{矢^{2} \left(1 + \frac{4 矢^{2}}{弦^{2}}\right)}{弦^{2}}} + \frac{1}{2}}\)

円径 |> factor

    \(\displaystyle \frac{2 矢}{\sqrt{1 + \frac{4 矢^{2}}{弦^{2}} + \frac{16 矢^{4}}{弦^{4}}} + 1}\)

円径(矢 => 1, 弦 => 4).evalf()

    \(0.932121111929344\)

 

描画関数プログラムのソースを見る

function draw(交矢, 接弦, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (r0, x0, y0, r1, x1) = [45, 20, 13, 14, 34]
    (r0, x0, y0, r1, x1) = driver(交矢, 接弦)
    θ = atand(y0/r0)
    plot()
    circle(x0, 0, r0, :green, beginangle=θ, endangle=180 - θ)
    circle(-x0, 0, r0, :green, beginangle=θ, endangle=180 - θ)
    circle(0, y0 + r1, r1)
    circle2(x1, y0 + r1, r1)
    segment(-sqrt(r0^2 - y0^2)-x0, y0, sqrt(r0^2 - y0^2) + x0, y0)
    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(x0, y0, "円弧:r0\n(x0,y0)", :green, :center, delta=-3delta)
        point(-x0, y0, "円弧:r0\n(-x0,y0)", :green, :center, delta=-3delta)
        point(x1, y0+r1, "円:r1\n(x1,y0+r1)", :red, :center, delta=-3delta)
        dimension_line(-(sqrt(r0^2 - y0^2) + x0), y0, (sqrt(r0^2 - y0^2) + x0), y0, "接弦", :magenta, delta=-8delta, length=r1/4)
        dimension_line(0, y0, 0, sqrt(r0^2 - x0^2), "交矢", :blue, deltax=9delta, length=r1/4)
    end
end;
(交矢, 接弦) = (1, 4)
draw(交矢, 接弦, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2424)

武州荏原郡目黒村 不動堂 文政7年(1824)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円5個,半円,楕円
#Julia #SymPy #算額 #和算 #数学


外円の中に上円,中円,下円,大円,小円を容れる。大円の直径が 3 寸,中円の直径が 2 寸のとき,小円の直径はいかほどか。

外円の半径と中心座標を \(R,\ (0,\ 0)\)
上円の半径と中心座標を \(r_1,\ (r_1,\ y_1)\)
中円の半径と中心座標を \(r_2,\ (x_2,\ y_2)\)
下円の半径と中心座標を \(r_3,\ (r_3,\ y_3)\)
大円の半径と中心座標を \(r_4,\ (0,\ r_4 - R)\)
小円の半径と中心座標を \(r_5,\ (0,\ R - r_5)\)
とおき,以下の連立方程式の数値解を求める。

include("julia-source.txt");  # julia-source.txt ソース
function driver(r2, r4)
    function H(u)
        function parameters()
            eq1 = r1^2 + y1^2 - (R - r1)^2
            eq2 = x2^2 + y2^2 - (R - r2)^2
            eq3 = r3^2 + y3^2 - (R - r3)^2
            eq4 = (r1 - x2)^2 + (y1 - y2)^2 - (r1 + r2)^2
            eq5 = (r1 - r3)^2 + (y1 - y3)^2 - (r1 + r3)^2
            eq6 = r1^2 +(y1 - (R - r5))^2 - (r1 + r5)^2
            eq7 = (x2 - r3)^2 + (y2 - y3)^2 - (r2 + r3)^2
            eq8 = r3^2 + (y3 - (r4 - R))^2 - (r3 + r4)^2
            return [eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8]
        end;
        (R, r1, y1, x2, y2, r3, y3, r5) = u
        return parameters()
    end;
    iniv = BigFloat[5.9, 2.3, 2.8, 4.8, 0.79, 2.6, -2.0, 0.88].*r2
    res = nls(H, ini=iniv)
    res[2] || println("収束していない")
    return res[1]
end;
(r2, r4) = (2/2, 3/2)
(R, r1, y1, x2, y2, r3, y3, r5) = driver(r2, r4)
(R, r1, y1, x2, y2, r3, y3, r5) |> println

    (6.26003135933539, 2.1057747436115903, 3.580999966273735, 4.82842712474619, 2.086677119778463, 2.969002890812278, -1.4198204868848439, 0.75)

# 2r5: 小円の直径
2r5

    1.5

大円の直径が 3 寸,中円の直径が 2 寸のとき,小円の直径は 1.5 寸である。

術は,\(\displaystyle \frac{中円径\cdot 大円径}{2大円径 - 中円径}\) である。

 

描画関数プログラムのソースを見る

function draw(r2, r4, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (R, r1, y1, x2, y2, r3, y3, r5) = driver(r2, r4)
    plot()
    circle(0, 0, R, :green)
    circle2(r1, y1, r1)
    circle2(x2, y2, r2, :magenta)
    circle2(r3, y3, r3, :blue)
    circle(0, r4 - R, r4, :orange)
    circle(0, R - r5, r5, :purple)
    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, 0, "外円:R\n(0,0)", :green, :center, :bottom, delta=delta)
        point(r1, y1, "上円:r1,(r1,y1)", :red, :center, delta=-delta)
        point(x2, y2, "中円:r2\n(x2,y2)", :magenta, :center, delta=-delta)
        point(r3, y3, "下円:r3,(r3,y3)", :blue, :center, delta=-delta)
        point(0, r4 - R, "大円:r4,(0,r4-R)", :orange, :center, delta=-delta)
        point(0, R - r5, "小円:r5,(0,R-r5)", :purple, :center, :bottom, delta=r5 + delta/2)
    end
end;
(r2, r4) = (2/2, 3/2)
draw(r2, r4, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

星空散歩

C56 どくろ星雲 (NGC246)

 


ドクロ星雲(英名:Skull Nebula、カタログ番号:NGC 246 / Caldwell 56)は、くじら座の方向にある大きな惑星状星雲です。

主な特徴 • 場所・距離: くじら座にあり、地球からの距離は約1,600光年です。

名前の由来: 全体の姿が人間の頭蓋骨(ドクロ)のように見えることから「どくろ星雲(Skull Nebula)」という愛称が付けられています。

正体: 太陽に似た星がその一生の終わりに外層のガスを宇宙空間へ放出し、中心に残った白い高温の星(白色矮星)がそのガスを照らしている姿です。

発見: 1785年にイギリスの天文学者ウィリアム・ハーシェルによって発見されました。

 中心星: 中心にある星は単独ではなく、三重星(複数の星の集まり)であることでも知られています。

観測の時期: 北半球では秋頃がベストシーズンとされています。

 

C65シルバーダラー銀河 (NGC253)

 

シルバーダラー銀河(Silver Dollar Galaxy)は、ちょうこくしつ座の方向に位置する美しい渦巻銀河です。天文学的な正式名称はNGC 253(Caldwell 65)で、日本では一般的に「ちょうこくしつ座銀河」や「シルバードル銀河」「シルバーコイン銀河」とも呼ばれています。

小型の望遠鏡で見ると、アメリカの1ドル銀貨(シルバー・ダラー)のように銀色に輝く円盤状に見えることからこの名が付けられました。

分類: 中間渦巻銀河(あるいは棒渦巻銀河)

地球からの距離: 約1,100万光年(天文学的には非常に近い部類)

直径: 約7万〜9万光年(天の川銀河よりやや小ぶり)

視等級: 8.0等(全天で最も明るい銀河の一つで、双眼鏡でも確認可能)

発見: 1783年にイギリスの女性天文学者キャロライン・ハーシェルによって彗星の捜索中に発見されました。

日本(北半球)から観測する場合、秋の夜空で見やすくなりますが、高度が低いため地平線付近が開けた暗い場所を選ぶ必要があります。

算額(その2423)

東都千駄ヶ谷 八幡宮 文化12年(1815)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円5個,半円,楕円
#Julia #SymPy #算額 #和算 #数学


半円の中に短径が最大の楕円を描き,大円 1 個,小円 4 個を容れる。小円の直径が 1 寸のとき,大円の直径はいかほどか。

半円の半径と中心座標を \(R,\ (0,\ 0)\)
楕円の長半径,短半径と中心座標を \(a,\ b,\ (0,\ b)\)
大円の半径と中心座標を \(r_1,\ (0,\ b)\)
小円の半径と中心座標を \(r_2,\ (x_2,\ b + r_2)\)
とおき,以下の連立方程式の解を求める。

大円の直径は,楕円の短径であり,半円の半径でもある。
また,「半円の中に短径が最大の楕円」というのは,半円が曲率円である \(R = a^2/b\) ことを意味している。

楕円と小円の接点座標を \( (x,\ y)\) とすると,eq1, eq2 が成り立つ。

include("julia-source.txt");  # julia-source.txt ソース
@syms R::positive, a, b, r1, r2, x2::positive, x, y
r1 = b = R/2
a = sqrt(b*R)
eq1 = x^2/a^2 + (y - b)^2/b^2 - 1
eq2 = (x - x2)^2 + (y - (b + r2))^2 - r2^2

    \(\displaystyle - r_{2}^{2} + \left(x - x_{2}\right)^{2} + \left(- \frac{R}{2} - r_{2} + y\right)^{2}\)

eq1, eq2 から y を消去する。

f = sympy.resultant(eq1, eq2, y)

    \(\displaystyle \frac{R^{4} - 16 R^{2} r_{2}^{2} + 4 R^{2} x^{2} - 16 R^{2} x x_{2} + 8 R^{2} x_{2}^{2} + 32 r_{2}^{2} x^{2} + 4 x^{4} - 32 x^{3} x_{2} + 80 x^{2} x_{2}^{2} - 64 x x_{2}^{3} + 16 x_{2}^{4}}{R^{4}}\)

接点ということは, x が重根を持つということであるので,以下の判別式 = 0 である。

g = sympy.discriminant(f, x) |> numerator |> factor

    \(16777216 r_{2}^{4} \left(R^{8} - 12 R^{6} r_{2}^{2} - 12 R^{6} x_{2}^{2} - 60 R^{4} r_{2}^{4} + 168 R^{4} r_{2}^{2} x_{2}^{2} + 52 R^{4} x_{2}^{4} - 64 R^{2} r_{2}^{6} - 480 R^{2} r_{2}^{4} x_{2}^{2} - 512 R^{2} r_{2}^{2} x_{2}^{4} - 96 R^{2} x_{2}^{6} + 64 r_{2}^{4} x_{2}^{4} + 384 r_{2}^{2} x_{2}^{6} + 64 x_{2}^{8}\right)\)

もう一つの条件は大円と小円が外接することである。
連立方程式を解いて \(R,\ x_2\) を求める。

eq3 = x2^2 + r2^2 - (r1 + r2)^2
res = solve([g.args[3], eq3], (R, x2))[2]  # 2 of 4

    (5*r2 + 3*sqrt(3)*r2, r2*sqrt(18 + 21*sqrt(3)/2))

# R: 半円の半径,大円の直径
ans_R = res[1] |> factor
@show(ans_R)

    ans_R = r2*(5 + 3*sqrt(3))

    \(r_{2} \left(5 + 3 \sqrt{3}\right)\)

ans_R(r2 => 1/2).evalf()

    \(5.09807621135332\)

大円の直径 \(2r_1\) は小円の半径 \(r2\) の \(5 + 3\sqrt{3}\) 倍である。
小円の直径が 1 寸のとき,大円の直径は 5.09807621135332 である。

答え曰く,「大円径五寸有奇」というのはずいぶん荒っぽい切り捨てであるが,術は \(\displaystyle \frac{1}{\sqrt{27} - 5} = \frac{5 + 3\sqrt{3}}{2}\) なので,大円径は 5.09807621135332 である。

@syms d
apart(1/(sqrt(Sym(27)) - 5), d) |> factor

    \(\displaystyle \frac{5 + 3 \sqrt{3}}{2}\)

1/(√27 - 5)

    5.0980762113533125

 

描画関数プログラムのソースを見る

function draw(r2, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (R, x2) = (5*r2 + 3*sqrt(3)*r2, r2*sqrt(18 + 21*sqrt(3)/2))
    r1 = b = R/2
    a = sqrt(b*R)
    plot()
    circle(0, 0, R, :green, beginangle=0, endangle=180)
    circle(0, b, r1)
    circle2(x2, b + r2, r2, :blue)
    circle2(x2, b - r2, r2, :blue)
    ellipse(0, b, a, b, color=: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(0, b, "大円:r1,(0,b)", :red, :center, delta=-delta)
        point(x2, b + r2, "小円:r2\n(x2,b+r2)", :blue, :right, :vcenter, deltax=-9delta)
        point(0, 0, "(0,0)", :green, :center, delta=-delta)
        point(0, R, "(0,R)", :green, :center, :bottom, delta=delta/2)
    end
end;
draw(1/2, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2422)

東都芝 愛宕山 文化12年(1815)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円12個,外円
#Julia #SymPy #算額 #和算 #数学


大円の中に甲円 2 個,乙円 2 個,丙円 5 個,丁円 2 個を容れる。黒積(黒く塗った部分の面積)が 124609 平方寸のとき,丁円の直径はいかほどか。

大円の半径と中心座標を \(R,\ (0,\ 0)\)
甲円の半径と中心座標を \(r_1,\ (R - r_1,\ 0)\)
乙円の半径と中心座標を \(r_2,\ (0,\ R - r_2)\)
丙円の半径と中心座標を \(r_3,\ (x_3,\ y_3)\)
丁円の半径と中心座標を \(r_4,\ (0,\ r_3 + r_4)\)
とおく。

\(x_3 = R - r_1,\ y_3 = R - r_2\) である。

大円の面積 \(s_1 = \pi R^2\)
4 つの丙円の中心が作る長方形の面積 \(s_2 = 4x_3 y_3\)
甲円の面積の 2*(1/2) = 1 個分 \(s_3 = \pi r_1^2\)
乙円の面積の 2*(1/2) = 1 個分 \(s_4 = \pi r_2^2\)
丙円の面積の 4*(3/4) = 3 個分 \(s_5 = 3\pi r_3^2\)
黒積は \(s_1 - s_2 - s_3 - s_4 - s_5\)

以下の連立方程式の解を求める。

include("julia-source.txt");  # julia-source.txt ソース
@syms R::positive, r1::positive, r2::positive, r3::positive, x3::positive, y3::positive, r4::positive, S::positive
R = 2r1 - r3
x3 = R - r1
y3 = R - r2
eq1 = x3^2 + y3^2 - (R - r3)^2
eq2 = (R - r1)^2 + (R - r2)^2 - (r1 + r2)^2
eq3 = (R - r1)^2 + (r3 + r4)^2 - (r1 - r4)^2
eq4 = (PI*R^2 - 4x3*y3 - PI*r1^2 - PI*r2^2 - 3PI*r3^2) - S;

まず,eq1, eq2, eq3 を解いて,\(r_1,\ r_2,\ r_3\) を求める。

res = solve([eq1, eq2, eq3], (r1, r2, r3))[1]

    (r4*(3 + 2*sqrt(3)), 3*r4, sqrt(3)*r4)

得られた解を eq4 に代入し,eq4_2 とする。

eq4_2 = eq4(r1 => res[1], r2 => res[2], r3 => res[3]) |> factor |> x -> collect(x, r4)

    \(- S + r_{4}^{2} \left(- 48 \sqrt{3} - 72 + 24 \pi + 24 \sqrt{3} \pi\right)\)

eq4_2 を解いて \(r_4\) を求める。

ans_r4 = solve(eq4_2, r4)[1]
@show(ans_r4)

    ans_r4 = sqrt(6)*sqrt(S)/(12*sqrt(-2*sqrt(3) - 3 + pi + sqrt(3)*pi))

    \(\displaystyle \frac{\sqrt{6} \sqrt{S}}{12 \sqrt{- 2 \sqrt{3} - 3 + \pi + \sqrt{3} \pi}}\)

黒積が 124609 のとき,丁円の直径は 99.0022269190179 である。

ans_r4(S => 124609).evalf()*2

    \(99.0022269190179\)

術は以下のようになっている。黒積を与えると丁円の「直径」を返す。上の式より複雑である。

@syms 黒積
天 = sqrt(Sym(5292))  # 置五千二百九十二個開平方名天
地 = 天/(28//10)  # 以二個八分除之名地
A = 地*(44//10) - 114  # 乗四個四分内減一百一十四個
人 = A*PI + 72 - 天  # 乗円周率加七十二個内減天餘名人
B = (26 - 地)*黒積  # 置二十六個内減地餘乗黒積
丁 = sqrt(B/人)  # 以人除之開平方得丁円径

    \(\displaystyle \frac{\sqrt{黒積} \sqrt{26 - 15 \sqrt{3}}}{\sqrt{- 42 \sqrt{3} + \pi \left(-114 + 66 \sqrt{3}\right) + 72}}\)

丁2 = 丁 |> factor |> sympy.sqrtdenest |> factor

    \(\displaystyle - \frac{\sqrt{6} \sqrt{黒積} \left(- 3 \sqrt{6} + 5 \sqrt{2}\right)}{12 \sqrt{- 19 \pi - 7 \sqrt{3} + 12 + 11 \sqrt{3} \pi}}\)

丁(黒積 => 124609).evalf()

    \(99.0022269190179\)

丁2(黒積 => 124609).evalf()

    \(99.0022269190179\)

 

描画関数プログラムのソースを見る

function draw(S, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    r4 = √(6S)/(12sqrt(-2√3 - 3 + pi + √3pi))
    (r1, r2, r3) = r4.*(3 + 2√3, 3, √3)
    R = 2r1 - r3
    x3 = R - r1
    y3 = R - r2
    @printf("黒積が %.15g のとき,甲円の直径は %.15g,乙円の直径は %.15g,丙円の直径は %.15g,丁円の直径は %.15g である。\n", S, 2r1, 2r2, 2r3, 2r4)
    plot()
    circlef(0, 0, R, :black)
    plot!([x3, x3, -x3, -x3, x3], [-y3, y3, y3, -y3, -y3], color=:gray80, seriestype=:shape, fillcolor=:white)
    circle2f(R - r1, 0, r1, :palegreen)
    circle22f(0, R - r2, r2, :mistyrose)
    circle4f(x3, y3, r3, :deeppink)
    circlef(0, 0, r3, :deeppink)
    circle22f(0, r3 + r4, r4, :khaki)
    plot!([x3, x3, -x3, -x3, x3], [-y3, y3, y3, -y3, -y3], color=:gray80)
    circle2(R - r1, 0, r1, :gray70)
    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, 0, "大円:R,(0,0)", :black, :center, :bottom, delta=delta/2)
        point(R - r1, 0, "甲円:r1,(R-r1,0)", :black, :center, delta=-delta)
        point(0, R - r2, "乙円:r2,(0,R-r2)", :black, :center, :bottom, delta=delta/2)
        point(x3, y3, "丙円:r3,(x3,y3)", :black, :right, delta=-delta, deltax=4delta)
        point(0, r3 + r4, "丁円:r4,(0,r3+r4)", :black, :left, :vcenter, deltax=3delta)
    end
end;
S = 124609
draw(S, true)

    黒積が 124609 のとき,甲円の直径は 639.960454929458,乙円の直径は 297.006680757054,丙円の直径は 171.476887086202,丁円の直径は 99.0022269190179 である。

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2421)

東都芝 愛宕山 文化12年(1815)

内藤忠辰校:賽祠神算
Kano Knowledge Portal
https://kanokp.lib.u-tokyo.ac.jp/item/tohoku-10010000022299
キーワード:円11個,外円
#Julia #SymPy #算額 #和算 #数学


大円の中に甲円 2 個,乙円 2 個,丙円 4 個,丁円 2 個を容れる。黒積(黒く塗った部分の面積)が 950625 平方寸のとき,丁円の直径はいかほどか。

大円の半径と中心座標を \(R,\ (0,\ 0)\)
甲円の半径と中心座標を \(r_1,\ (0,\ R - r_1)\)
乙円の半径と中心座標を \(r_2,\ (R - r_2,\ 0)\)
丙円の半径と中心座標を \(r_3,\ (x_3,\ y_3)\)
丁円の半径と中心座標を \(r_4,\ (r_4,\ 0)\)
とおく。

\(x_3 = R - r_2,\ y_3 = R - r_1\) である。

大円の面積 \(s_1 = \pi R^2\)
4 つの丙円の中心が作る長方形の面積 \(s_2 = 4x_3 y_3\)
甲円の面積の 2*(1/2) = 1 個分 \(s_3 = \pi r_1^2\)
乙円の面積の 2*(1/2) = 1 個分 \(s_4 = \pi r_2^2\)
丙円の面積の 4*(3/4) = 3 個分 \(s_5 = 3\pi r_3^2\)
黒積は \(s_1 - s_2 - s_3 - s_4 - s_5\)

以下の連立方程式の解を求める。

include("julia-source.txt");  # julia-source.txt ソース
@syms R::positive, r1::positive, r2::positive, r3::positive, x3::positive, y3::positive, r4::positive, S::positive
R = 2r2 + 2r4
x3 = R - r2
y3 = R - r1
eq1 = x3^2 + y3^2 - (R - r3)^2
eq2 = (R - r2)^2 + (R - r1)^2 - (r1 + r2)^2
eq3 = r4^2 + (R - r1)^2 - (r1 + r4)^2
eq4 = (PI*R^2 - 4x3*y3 - PI*r1^2 - PI*r2^2 - 3PI*r3^2) - S;

まず,eq1, eq2, eq3 を解いて,\(r_1,\ r_2,\ r_3\) を求める。

res = solve([eq1, eq2, eq3], (r1, r2, r3))[2]  # 2 of 2

    (2*r4*(2*sqrt(5) + 5)/5, r4*(1 + sqrt(5)), r4*(sqrt(5)/5 + 1))

得られた解を eq4 に代入し,eq4_2 とする。

eq4_2 = eq4(r1 => res[1], r2 => res[2], r3 => res[3]) |> factor |> x -> collect(x, r4)

    \(\displaystyle - S + \frac{r_{4}^{2} \left(- 112 \sqrt{5} - 240 + 96 \pi + 48 \sqrt{5} \pi\right)}{5}\)

eq4_2 を解いて \(r_4\) を求める。

ans_r4 = solve(eq4_2, r4)[1]
@show(ans_r4)

    ans_r4 = sqrt(5)*sqrt(S)/(4*sqrt(-7*sqrt(5) - 15 + 6*pi + 3*sqrt(5)*pi))

    \(\displaystyle \frac{\sqrt{5} \sqrt{S}}{4 \sqrt{- 7 \sqrt{5} - 15 + 6 \pi + 3 \sqrt{5} \pi}}\)

黒積が 950625 のとき,丁円の直径は 358.000845560124 である。

ans_r4(S => 950625).evalf()*2

    \(358.000845560124\)

術は以下のようになっている。黒積を与えると丁円の「直径」を返すが,上の式と全く同じである。

@syms 黒積  # = 950625
乾 = sqrt(Sym(1)/5)
坤 = (乾*PI - 1)*3
A = (坤*2 - 1)*乾 + 坤
丁 = sqrt(黒積/A)/2

    \(\displaystyle \frac{\sqrt{黒積}}{2 \sqrt{-3 + \frac{\sqrt{5} \left(-7 + \frac{6 \sqrt{5} \pi}{5}\right)}{5} + \frac{3 \sqrt{5} \pi}{5}}}\)

丁 |> factor

    \(\displaystyle \frac{\sqrt{5} \sqrt{黒積}}{2 \sqrt{- 7 \sqrt{5} - 15 + 6 \pi + 3 \sqrt{5} \pi}}\)

丁(黒積 => 950625).evalf()

    \(358.000845560124\)

 

描画関数プログラムのソースを見る

function draw(S, more=true)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    r4 = √(5S)/(4sqrt(6pi + 3√5pi - 7√5 - 15))
    (r1, r2, r3) = r4.*(2(2√5 + 5)/5, 1 + √5, √5/5 + 1)
    R = 2r2 + 2r4
    x3 = R - r2
    y3 = R - r1
    @printf("黒積が %.15g のとき,甲円の直径は %.15g,乙円の直径は %.15g,丙円の直径は %.15g,丁円の直径は %.15g である。\n", S, 2r1, 2r2, 2r3, 2r4)
    plot()
    circlef(0, 0, R, :black)
    plot!([x3, x3, -x3, -x3, x3], [-y3, y3, y3, -y3, -y3], color=:gray80, seriestype=:shape, fillcolor=:white)
    circle22f(0, R - r1, r1, :palegreen)
    circle2f(R - r2, 0, r2, :mistyrose)
    circle4f(x3, y3, r3, :deeppink)
    circle2f(r4, 0, r4, :khaki)
    plot!([x3, x3, -x3, -x3, x3], [-y3, y3, y3, -y3, -y3], color=:gray80)
    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, 0, "大円:R\n(0,0)", :black, :right, :bottom, delta=delta/2)
        point(0, R - r1, "甲円:r1,(0,R-r1)", :black, :center, delta=-delta)
        point(R - r2, 0, "乙円:r2,(R-r2,0)", :black, :center, delta=-delta)
        point(x3, y3, "丙円:r3\n(x3,y3)", :black, :right, delta=-delta)
        point(r4, 0, "丁円:r4\n(r4,0)", :black, :right, delta=-delta, deltax=3delta)
    end
end;
S = 950625
draw(S, true)

    黒積が 950625 のとき,甲円の直径は 1356.41307246012,乙円の直径は 1158.51507223496,丙円の直径は 518.103690895092,丁円の直径は 358.000845560124 である。

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額研究の第三の戦略――コンピュータで解を探る

算額研究の第三の戦略――コンピュータで解を探る

算額を研究する方法として、まず思い浮かぶのは、算額の画像を集めてデータベースを作ることです。問題文や図を記録し、いつ、どこに奉納されたのかを整理する。これは算額研究の大切な基盤になります。

ただし、データベースが直接与えてくれるのは、研究の手がかりです。その手がかりをどう読み解き、問題の数学的な意味を明らかにするかは、その後の研究者に委ねられます。

もう一つの方法は、和算家がどのように解いたかを追試することです。実際に、和算家の解法を再現し、成果を挙げている研究もあります。しかし、解法の検討が進んでいるのは、まだ算額全体の一部にとどまります。

そこで、第三の戦略として考えられるのが、問題の条件から連立方程式を立て、コンピュータで解を求める方法です。

まずは数値解を求める

理想は、問題の答えを解析的に導くことです。答えがどのような数や式になるのかを、数学的に説明できれば、問題の構造まで明らかになります。

しかし、いきなり解析解を求めるのが難しい問題もあります。そこで、まず数値解を求めます。図形の条件を方程式に表し、コンピュータを使って、その条件を満たす値を探します。

数値解が得られれば、図や問題文から想像していた関係が正しいかを確かめる手がかりになります。また、どのような解がありそうかを知ることで、解析解を探す方針も立てやすくなります。

数値解から解析解へ

未知数が一つの問題では、数値解が解析解への足がかりになることがあります。たとえば、計算で得た値が \(1.618\ldots\) なら、黄金比 \(\frac{1+\sqrt{5}}{2}\) のような形を疑うことができます。

もちろん、数値が近いだけで答えを決めることはできません。候補となる式を見つけたら、元の方程式に代入して確かめたり、式変形によって厳密に示したりする必要があります。それでも、数値計算は「答えの見当をつける」うえで強力な手段です。

たとえば、こちらの算額問題も、方程式を立ててコンピュータで解くという視点から検討できます。

算額(その2420)

画像を集め、和算家の解法を追試し、さらに方程式を立てて計算する。これらは互いに競合する方法ではありません。データベースが問題を見つける助けとなり、数値計算が解の見当をつけ、解法の追試や解析がその意味を明らかにする。三つの方法を組み合わせることで、これまで手がつけられていなかった算額にも、新たな道筋が開けるのではないでしょうか。