裏 RjpWiki

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

算額(その1592)

2025年02月05日 | Julia

算額(その1592)

岡山県瀬戸内市長船町土師宮森 片山日子神社 明治6年(1873)
深川英俊,トニー・ロスマン:聖なる数学:算額,p.113,森北出版株式会社,2010年4月22日.

キーワード:円7個,正三角形2個,正六角形
#Julia, #SymPy, #算額, #和算, #数学

正方形の中に正三角形 1 個,大円 1 個,中円 2 個,小円 1 個を容れる。中円の半径を大円の半径で表わせ。

正方形の一辺の長さを a
大円の半径と中心座標を r1, (0, r1)
中円の半径と中心座標を r2, (a/2 - r2, a - r2);
小円の半径と中心座標を r3, (0, a - r3)
とおく。

r1, r3 は簡単に計算できる。

r1 = √3a/6
r3 = (a - √3a/2)/2

求めるのが面倒なのは r2 だけなので,以下の方程式を解く。
ちなみに tan(15°) = 2 - √3 である。

include("julia-source.txt");

using SymPy
@syms r1, r2, r3, a
eq = (a - r2)*tand(Sym(15)) - r2
res = solve(eq, r2)[1] |> simplify;

# r2
res |> println

    a*(3 - sqrt(3))/6

問題文が「中円の半径を大円の半径で表せ」なので,「r2/r1」を求めると,中円の半径は大円の半径の √3 - 1 倍である。
r2 = (√3 - 1)*r1

res / (√Sym(3)*a/6) |> simplify |> println

    -1 + sqrt(3)

function draw(a, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r1 = √3a/6
    r2 = a*(3 - √3)/6
    r3 = (1 - √3/2)*a/2
    @printf("中円の半径は大円の半径の %g 倍である。\n", √3 - 1 )
    plot([a, a, -a, -a, a]./2, [0, a, a, 0, 0], color=:green, lw=0.5)
    plot!([a, 0, -a, a]./2, [0, √3a/2, 0, 0], color=:magenta, lw=0.5)
    circle2(a/2-r2, a - r2, r2, :blue)
    circle(0, r1, r1)
    circle(0, a - r3, r3, :brown)
    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, r1, "大円:r1,(0,r1)", :red, :center, delta=-delta/2)
        point(a/2 - r2, a - r2, "中円:r2,(a/2-r2,a-r2)", :blue, :center, delta=-delta/2)
        point(0, a - r3, " 小円:r3,(0,R-r3)", :brown, :left, :vcenter)
        point(0, √3a/2, "  √3a/2", :magenta, :left, delta=-delta/2)
        point(a/2, a, "(a/2,a)", :green, :right, :bottom, delta=delta/2)
    end
end;

draw(10, true)

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

琴平町 虎屋

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

琴平町 本家 虎屋
かけうどんを注文した
手打ち麺,コシあり,ちょっとしょっぱ目(甘くない)

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

算額(その1591)

2025年02月05日 | Julia

算額(その1591)

岡山県瀬戸内市長船町土師宮森 片山日子神社 明治6年(1873)
深川英俊,トニー・ロスマン:聖なる数学:算額,p. 110,森北出版株式会社,2010年4月22日.

キーワード:円7個,正三角形2個,正六角形
#Julia, #SymPy, #算額, #和算, #数学

正六角形の中に対角線を 6 本引いて正三角形を 2 個作り,内部にできる小さな正六角形に内接する大円と,正三角形の一辺と正六角形の二辺に接する小円を 6 個容れる。大円の半径が 10 寸のとき,小円の半径はいかほどか。

正六角形の一辺の長さを R
大円の半径と中心座標を r1, (0, 0)
小円の半径と中心座標を r2, (0, r1 + r2)
とする。

大円の直径は正六角形の一辺の長さと等しい。
小円が内接している二等辺三角形の高さは大円の半径に等しい。

小円と大円の間には (r1 - r2)*cos(30°) = r2 の関係がある。
これを解いて,r2 = r1*(2√3 - 3) である。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive
eq = (r1 - r2)*cosd(Sym(30)) - r2
solve(eq, r2)[1] |> factor |> println

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

小円の半径 r2 は大円の半径 r1 の (2√3 - 3) 倍である。
大円の半径が 10 寸のとき,小円の半径は 4.641016151377544 寸である。

function draw(r1, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r2 = r1*(-3 + 2*sqrt(3))
    R = 2r1
    x = [R*cosd(z) for z in 90:60:510]
    y = [R*sind(z) for z in 90:60:510]
    @printf("大円の半径が %g のとき,小円の半径は %g である。\n", r1, r2)
    plot()
    circle(0, 0, r1, :green)
    rotate(0, r1 + r2, r2, angle=60)
    for i = 1:6
        segment(x[i], y[i], x[i + 1], y[i + 1], :blue)
        segment(x[i], y[i], x[i + 2], y[i + 2], :blue)
    end
    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, r1, "r1", :green, :center, :bottom, delta=delta/2)
        point(0, R, "R", :blue, :center, :bottom, delta=delta/2)
        point(0, r1 + r2, "r1+r2", :red, :center, delta=-delta/2)
    end
end;

draw(10, true)

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

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

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