算額あれこれ

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

算額(その1807)

四十三 岩手県一関市真滝 熊野白山滝神社 弘化3年(1846)

山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

今有如図 03031
https://w.atwiki.jp/sangaku/pages/326.html

キーワード:円6個,外円,弦2本,斜線2本,(弦4本)
#Julia #SymPy #算額 #和算 #数学

全円(外円)の中に水平な弦 2 本,斜線(斜めの弦) 2 本を描き,大円 2 個と小円 3 個を容れる。小円の直径が与えられたとき,全円の直径を求める術を述べよ。


注:算額の図では,下側の水平な弦は円の中心を通るように見えるが,一般的にはそうではない。
\(r_2 = 1/2\) のとき,下側の弦が円の中心を通るのは \(r_1 = 2.2446442859050393\) と \(r_1 = 1.144584273224155\)の 2 通りの場合だけである。

全円の半径と中心座標を \(R, (0, 0)\)
大円の半径と中心座標を \(x_1, y_{01} + r_1); y_{01} = R - 2r_2 - 2r_1\)
小円の半径と中心座標を \(r_2, (0, y_{02} + r_2), (0, y_{02} - r_2), (0, y_{01} + r_2); y_{01} = R - 2r_2\)
斜線と弦の交点座標を \( (a, y_{01}), (-a, y_{02})\)
とおき,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース

using SymPy
@syms R::positive, r1::positive,
      x1::positive, r2::positive, a::positive
y01 = R - 2r2 - 2r1
eq1 = x1^2 + (R - r1 - 2r2)^2 - (R - r1)^2
eq2 = r2/(r1 - r2) - r1/sqrt(a^2 + r1^2)
eq3 = r2/a - r1/(a + x1)
eq4 = dist2(-a, R - 2r2, a, y01, x1, y01 + r1, r1);
eq5 = dist2(-a, R - 2r2, a, y01, 0, R - 3r2, r2);
res = solve([eq1, eq3, eq5], (R, x1, a))[2]  # 2 of 2

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

# R 全円の半径
res[1]

 \(\displaystyle \frac{r_{1}^{3} + 2 r_{1}^{2} r_{2} - 3 r_{1} r_{2}^{2} - 8 r_{2}^{3}}{4 r_{2} \left(r_{1} - 2 r_{2}\right)}\)

たとえば,大円の半径が 5,小円の半径が 2 のとき,全円の半径は 101/8 = 12.625(直径は 25.25) である。

res[1](r1 => 5, r2 => 2).evalf() |> println

    12.6250000000000

山村の解説では,術は以下のようであるとされているが,大円の直径が 10,小円の直径が 4 のとき,全円の直径は 122/3 = 40.6666666666667 となり,一致しない。

@syms 大, 小
A = (大 - 2小)*小
全円径 = A/(大/2 - 小/2)*大 + 大 + 小

 \(\displaystyle \frac{大 小 \left(大 - 2 小\right)}{\frac{大}{2} - \frac{小}{2}} + 大 + 小\)

全円径(大 => 10, 小 => 4).evalf() |> println

    40.6666666666667

山村は,「巾乗」を見逃しているのと,「以除」を単に「除」とする 2 つのミスを犯している。正しくは以下のようである。
このように修正すれば,前述したのと同じ解を得ることができる。

@syms 大, 小
A = (大 - 2小)*小
全円径 = (大/2 - 小/2)^2/A*大 + 大 + 小

 \(\displaystyle 大 + \frac{大 \left(\frac{大}{2} - \frac{小}{2}\right)^{2}}{小 \left(大 - 2 小\right)} + 小\)

全円径(大 => 10, 小 => 4).evalf() |> println

    25.2500000000000

全円径は以下のように表され,res[1] と等しくなる(直径を対象にするか半径を対象にするかの違いだけである)。

全円径 |> expand |> simplify

 \(\displaystyle \frac{大^{3} + 2 大^{2} 小 - 3 大 小^{2} - 8 小^{3}}{4 小 \left(大 - 2 小\right)}\)

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

function draw(r1, r2, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    #(R, x1, a) = ( (r1^3 + 2*r1^2*r2 - 3*r1*r2^2 - 8*r2^3)/(4*r2*(r1 - 2*r2)), sqrt(r1)*(-r1 + r2)*sqrt(1/(r1 - 2*r2)), -sqrt(r1)*r2*sqrt(1/(r1 - 2*r2)))
    (R, x1, a) = ( (r1^3 + 2*r1^2*r2 - 3*r1*r2^2 - 8*r2^3)/(4*r2*(r1 - 2*r2)), sqrt(r1)*(r1 - r2)*sqrt(1/(r1 - 2*r2)), sqrt(r1)*r2*sqrt(1/(r1 - 2*r2)))
    y02 = R - 2r2
    y01 = y02 - 2r1
    x01 = sqrt(R^2 - y01^2)
    x02 = sqrt(R^2 - y02^2)
    @printf("r1 = %g;  r2 = %g;  R = %g;  y01 = %g\n", r1, r2, R, y01)
    p = plot()
    circle(0, 0, R, :blue)
    circle2(x1, y01 + r1, r1, :magenta)
    circle(0, y01 + r2, r2)
    circle(0, y02 + r2, r2)
    circle(0, y02 - r2, r2)
    segment(-x01, y01, x01, y01)
    segment(-x02, y02, x02, y02)
    #segment(a, y01, -a, y02)
    #segment(-a, y01, a, y02)
    (x3, y3, x4, y4) = intersection2(R, 0, 0, a, y01, -a, y02)
    segment(x3, y3, x4, y4, :green)
    segment(-x3, y3, -x4, y4, :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(x1, y01 + r1, "大円:r1,(x1,y01+r1)", :magenta, :center, delta=-delta/2)
        point(a, y01, "(a,y01)", :green, :right, delta=-delta/2)
        point(-a, y02, "(-a,y02)", :green, :left, :bottom, delta=delta/2, deltax=-delta)
        point(0, y01 + r2, "y01+r2", :red, :center, delta=-delta/2)
        point(0, y02 + r2, "y02+r2", :red, :center, delta=-delta/2)
        point(0, y02 - r2, "y02-r2", :red, :center, delta=-delta/2)
        point(0, y01, "y01", :green, :center, delta=-delta/2)
        point(0, y02, "y02", :green, :center, delta=-delta/2)
        point(0, R, "R", :blue, :center, :bottom, delta=delta/2)
    end
    return p
end;

draw(5, 2, true)

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

 

算額(その1806)

四十三 岩手県一関市真滝 熊野白山滝神社 弘化3年(1846)

山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

今有如図 03031
https://w.atwiki.jp/sangaku/pages/326.html

キーワード:球14個,3次元
#Julia #SymPy #算額 #和算 #数学

大球の中に大球と(1 点で)内接する中球を設け,中球の正腰(地球でいえば赤道)に外接し(大球に内接し)互いに外接し合う小球 12 個を容れる。
小球の直径が与えられたとき,大球の直径を求める術を述べよ。





大球の半径と中心座標を \(R, (0, 0, 0)\)
中球の半径と中心座標を \(r_1, (0, 0, R - r_1)\)
小球の半径と中心座標を \(r_2, (x_2, 0, R - r_1); x_2 = r_1 + r_2\)
とおき,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース

using SymPy
@syms R::positive, r1::positive,
      r2::positive, x2::positive
x2 = r1 + r2
eq1 = x2^2 + (R - r1)^2 - (R - r2)^2  # 小球は大球に内接する
eq2 = x2*sind(Sym(180)/12) - r2  # 小球は互いに外接する
res = solve([eq1, eq2], (R, r1))[1]

    (r2*(-2*sqrt(2) - 2 + sqrt(6) + 2*sqrt(3))/(-3*sqrt(3) - sqrt(6) + 2*sqrt(2) + 5), -r2 + sqrt(2)*r2 + sqrt(6)*r2)

ans_R = res[1]

 \(\displaystyle \frac{r_{2} \left(- 2 \sqrt{2} - 2 + \sqrt{6} + 2 \sqrt{3}\right)}{- 3 \sqrt{3} - \sqrt{6} + 2 \sqrt{2} + 5}\)

手作業で,分母の有理化を行う。

まず,分子 num,分母 den に分ける。

num = res[1] |> numerator
den = res[1] |> denominator;

分子,分母に \(3\sqrt{3} + \sqrt{6} + 2\sqrt{2} + 5\) を掛ける。

t = 3√Sym(3) + √Sym(6) + 2√Sym(2) + 5
den2 = den*t |> expand

 \(\displaystyle 2 \sqrt{2}\)

num2 = num*t |> simplify

 \(\displaystyle r_{2} \left(\sqrt{2} + \sqrt{6} + 6 + 4 \sqrt{3}\right)\)

分数に戻し,簡略化する。

ans_R = num2/den2 |> simplify
@show(ans_R)

    ans_R = r2*(1 + sqrt(3) + 3*sqrt(2) + 2*sqrt(6))/2

 \(\displaystyle \frac{r_{2} \left(1 + \sqrt{3} + 3 \sqrt{2} + 2 \sqrt{6}\right)}{2}\)

大球の半径 \(R\) は,小球の半径 \(r_2\) の \( (1 + \sqrt{3} + 3\sqrt{2} + 2\sqrt{6})/2 = 5.936835490127259\) 倍である。

(1 + sqrt(3) + 3*sqrt(2) + 2*sqrt(6))/2 |> println

    5.936835490127259

小球の直径が 1 のとき,大球の直径は 5.936835490127259 である。

「術」を関数として書くと以下のようになる。

function 術(小球径)
    位 = sqrt(3) + 1
    A = sqrt( (位 + 1)*3)
    大球径 = ( (A + 1)*位*小球径)/2
end;
術(1)

    5.936835490127259

術で得られる大球径は以下のようになる。

@syms 小球径
位 = sqrt(Sym(3)) + 1
A = sqrt( (位 + 1)*3)
大球径 = ( (A + 1)*位*小球径)/2

 \(\displaystyle \frac{小球径 \left(1 + \sqrt{3}\right) \left(1 + \sqrt{3 \sqrt{3} + 6}\right)}{2}\)

展開して二重根号を外せば上記の式と一致する。

大球径 |> sympy.sqrtdenest |> simplify

 \(\displaystyle \frac{小球径 \left(1 + \sqrt{3} + 3 \sqrt{2} + 2 \sqrt{6}\right)}{2}\)

# 中球の半径
ans_r1 = res[2] |> simplify
@show(ans_r1)

    ans_r1 = r2*(-1 + sqrt(2) + sqrt(6))

 \(\displaystyle r_{2} \left(-1 + \sqrt{2} + \sqrt{6}\right)\)

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

function draw(r2, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    R = r2*(1 + sqrt(3) + 3*sqrt(2) + 2*sqrt(6))/2
    r1 = r2*(-1 + sqrt(2) + sqrt(6))
    delta=0.05R
    p1 = plot(xlabel="x-axis", ylabel="z-axis")
    circle(0, 0, R, :blue)
    circle(0, R - r1, r1, :magenta)
    circle2(r1 + r2, R - r1, r2)
    hline!([0], color=:gray80, lw=0.5)
    vline!([0], color=:gray80, lw=0.5)
    point(0, 0, "大球:R,(0,0,0)", :blue, :center)
    point(0, R - r1, "中球:r1\n(0,0,R-r1)", :magenta, :center, delta=-delta)
    point(x2, R - r1, "小球:r2\n(x2,0,R-r1)", :red, :right, :bottom, delta=delta)
    p2 = plot(xlabel="x-axis", ylabel="y-axis")
    circle(0, 0, R, :blue)
    circle(0, 0, r1, :magenta)
    rotate(r1 + r2, 0, r2, angle=360/12)
    hline!([0], color=:gray80, lw=0.5)
    vline!([0], color=:gray80, lw=0.5)
    plot(p1, p2)
end;

draw(1/2, true)

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

 

M13 ヘルクレス座大球状星団(ヘルクレス球状星団)

ヘルクレス座大球状星団(M13)は、ヘルクレス座に位置する代表的な球状星団で、地球から約22,000光年離れています。直径は約150光年で、数十万個の恒星が密集して球状に集まっています。約120億年前に形成されたと考えられ、銀河系のハローに属する古い星の集団です。肉眼でもうっすら見え、小型望遠鏡では無数の星が輝く美しい姿を観察できます。北半球では最も有名な球状星団のひとつです。

左下にあるのはNGC 6199 かな?

 

M16 わし星雲

M16は「わし星雲」として知られる散光星雲で、へび座に位置し、地球から約7000光年の距離にあります。星団NGC 6611を含み、活発な星形成が進行中です。特にハッブル宇宙望遠鏡が撮影した「創造の柱(Pillars of Creation)」で有名になりました。これは星雲内部の巨大なガス柱で、原始星が誕生する場面をとらえたものです。Hα輝線による赤い光と暗黒星雲が織りなす美しい構造が特徴で、天体観測や写真撮影でも人気の対象です。

M17 オメガ星雲(白鳥星雲)

M17は「オメガ星雲」または「白鳥星雲」とも呼ばれる散光星雲で、いて座に位置します。地球からの距離は約5000〜6000光年で、HII領域として知られ、若い大質量星の紫外線によって周囲のガスが電離し赤く輝いています。形がギリシャ文字のΩや白鳥に似ていることからその名が付きました。活発な星形成が進んでおり、多くの新星や原始星が存在する領域です。夏の天の川付近で、天体写真の人気対象でもあります。

NGC 6888 三日月星雲(イヤー・ネビュラ)

三日月星雲(NGC 6888、別名:イヤー・ネビュラ)は、はくちょう座にある散光星雲で、地球から約5,000光年離れています。大質量星WR 136からの強烈な恒星風が、以前の段階で放出された外層と衝突してできたガスの殻が光っており、その姿が三日月形に見えることから名づけられました。電離ガスが放つ赤や青の輝きが特徴で、望遠鏡や長時間露出の天体写真で美しく観測されます。

 

IC 5070 ペリカン星雲

IC 5070は、「ペリカン星雲」の名で知られる散光星雲で、はくちょう座に位置し、北アメリカ星雲(NGC 7000)のすぐ隣にあります。形がペリカンに似ていることからこの名がつきました。地球から約1800光年の距離にあり、活発な星形成領域としても知られています。星雲内には暗黒星雲が複雑に入り組み、Hα輝線により赤く輝きます。広大なガスと塵が織りなす姿は天体写真の題材としても人気があります。

IC 1318B バタフライ星雲

IC 1318Bは、はくちょう座の散光星雲IC 1318の一部で、「はくちょう座γ星付近の散光星雲」として知られています。特にIC 1318Bは、赤いHα輝線を放つ領域で、暗黒星雲により蝶の羽のように分断された美しい構造を見せるため、「バタフライ星雲」とも呼ばれます。地球からの距離は約4000〜5000光年とされ、活発な星形成が進行中です。広がるガスと塵が星雲を複雑に彩り、天体写真家に人気の対象です。

M8 干潟星雲(ラグーン星雲,砂時計の領域)


干潟星雲(M8、ラグーン星雲)は、いて座にある大きく明るい散光星雲で、地球から約4,100光年の距離にあります。活発な星形成領域で、内部には若い星団NGC 6530や暗黒帯があり、これが星雲を干潟のように見せています。中心部にある「砂時計の領域」は、強い恒星風と紫外線によって彫刻されたガスと塵の構造が特徴で、星の誕生現場を示しています。肉眼や小型望遠鏡でも観測できる美しい星雲です。

M27 亜鈴状星雲(ディアボロ星雲,リンゴの芯星雲)


亜鈴状星雲(M27)は、こぎつね座にある惑星状星雲で、地球から約1,200光年の距離にあります。中心の老いた恒星が外層を放出し、そのガスが紫外線で輝いています。形が亜鈴(ダンベル)やリンゴの芯、あるいはディアボロに似ていることから様々な愛称があります。惑星状星雲としては明るく、大口径の双眼鏡や小型望遠鏡でも観察可能です。恒星の最期の姿を示す天体として、天文学的にも重要な対象です。

NGC 281 パックマン星雲

NGC 281はカシオペヤ座に位置する散光星雲で、「パックマン星雲」の愛称でも知られます。その形がビデオゲーム「パックマン」に似ていることから名付けられました。地球からの距離は約9500光年で、若い星々や星団(特にIC 1590)を含み、活発な星形成領域です。Hα線を多く放つため、赤く輝く姿が天体写真でもよく観察されます。暗黒星雲やボーク・グロビュールも内部に存在し、構造が複雑です。

算額(その1805)

三十三 岩手県一関市舞川相川 菅原神社 嘉永3年(1850)

山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

今有如図 03040
https://w.atwiki.jp/sangaku/pages/193.html

キーワード:円5個,外円,弦,団扇
#Julia #SymPy #算額 #和算 #数学

団扇(外円)の中に水平な弦を 1 本設け,大円 1 個,中円 2 個,小円 1 個を容れる。
小円の直径が 1 寸のとき,外円の直径はいかほどか。


注:「問」の原文は「...小円一ケ其至多小円径一寸問外円径幾何」であるが,「至多」は「最大にする」で,その対象は小円のはずなのに「小円径一寸」とするのは矛盾している。
また,小円径が一寸であっても,大円径が大きくなれば外円径も大きくなる。
結局のところ,本問は条件不足で解けない。「答」で「外円径は四寸」とあるが,外円径が四寸になるのは大円の径が2寸のときで,付け加える条件としては「大円径は外円径の半分」が妥当であろう。

図形的には「算額(その979)」と同じであり,そちらの問題文は必要な条件が与えられている。

外円の半径と中心座標を \(R, (0, 0)\)
大円の半径と中心座標を \(r_1, (0, R - r_1)\)
中円の半径と中心座標を \(r_2, (x_2, y_2); x_2=2\sqrt{r_2 r_3}, y_2 = R - 2r_1 - 2r_3 + r_2\)
小円の半径と中心座標を \(r_3, (0, R - 2r_1 - r_3)\)
とおき,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース

using SymPy
@syms R::positive, r1::positive,
      r2::positive, r3::positive,
      x3::positive, y3::positive
r1 = R/2  # 追加条件:「大円径は外円径の半分」
y2 = R - 2r1 - 2r3 + r2  # 距離の関係式
x2 = 2sqrt(r2*r3)  # 中円と小円が外接
eq1 = x2^2 + y2^2 - (R - r2)^2  # 中円は外円に内接
eq2 = x2^2 + (R - r1 - y2)^2 - (r1 + r2)^2;  # 大円と中円が概説

res = solve([eq1, eq2], (R, r2))[1]

    (4*r3, 3*r3/2)

外円の直径は,小円の直径の 4 倍である。

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

r3 = 0.5;  R = 2;  r1 = 1;  r2 = 0.75;  x2 = 1.22474;  y2 = -0.25

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

function draw(r3, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (R, r2) = (4r3, 3r3/2)
    r1 = R/2
    y2 = R - 2r1 - 2r3 + r2
    x2 = 2sqrt(r2*r3)
    y = R - 2r1 - 2r3
    x = sqrt(R^2 - y^2)
    @printf("r3 = %g;  R = %g;  r1 = %g;  r2 = %g;  x2 = %g;  y2 = %g\n", r3, R, r1, r2, x2, y2)
    p = plot()
    circle(0, 0, R, :green)
    circle(0, R - r1, r1)
    circle(0, R - 2r1 - r3, r3, :blue)
    circle2(x2, y2, r2, :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(0, R - r1, "大円:r1,(0,R-r1)", :red, :center, delta=-delta/2)
        point(x2, y2, "中円:r2,(x2,y2)", :magenta, :center, delta=-delta/2)
        point(0, R - 2r1 - r3, "小円:r3\n(0,R-2r1-r3)", :blue, :center, delta=-delta/2)
        point(0, R - 2r1 - 2r3, "(0,R-2r1-2r3)", :blue, :center, delta=-delta/2)
    end
    return p
end;

draw(1/2, true)

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