裏 RjpWiki

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

算額(その1570)

2025年01月29日 | Julia

算額(その1570)

東京都八王子市片倉町(片倉城城跡公園内) 住吉神社 嘉永4年(1851) (昭和62年復元)
山口正義:あきる野市有形民族文化財 二宮神社の算額

https://yamabukiwasan.sakura.ne.jp/ninomiyasasshi2.pdf
https://yamabukiwasan.sakura.ne.jp/page2.html
キーワード:円2個,面積
#Julia, #SymPy, #算額, #和算

互いに外接する 2 個の等円と共通接線によって囲まれる面積(空積)を与えたとき,等円の直径を求めよ

空積は,等円の半径を一辺とする正方形の面積から等円の面積の 1/4 を差し引いたものを 2 倍したものである。

等円の半径と中心座標を r, (r, 0), (-r, 0)
とおき,以下の方程式を解く。

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

using SymPy
@syms r::positive, S::positive, 円周率::positive, 円積率::positive

eq = 2(r^2 - 円周率*r^2/4) - S;

ans_r = solve(eq, r)[2]  # 2 of 2
ans_r |> println

    sqrt(2)*sqrt(S)*sqrt(-1/(円周率 - 4))

等円の半径は sqrt(2S/(4 - π)) である。

術では円積率 0.79 を使っているので,それに合わせるように円周率として 3.16 を使い,空積が 1 のときは以下のようになる。

2ans_r(S => 1, 円周率 => 3.16).evalf() |> println

    3.08606699924184

術は以下のようになっており,同じ答えを与える。

空積 = 1
円積率 = 0.79
天 = 1 - 円積率
sqrt(天*2*空積)/天

    3.0860669992418384

function draw(S, more=false)  # b:楕円の短半径と,r:円の半径
    pyplot(size=(500, 500), showaxis=true, grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r = sqrt(2S/(4 - π))
    plot()
    circle2(r, r, r)
    rect(-r, 0, r, r, :gray80)
    θ = 270:0.1:360
    x = r*cosd.(θ) .- r
    y = r*sind.(θ) .+ r
    θ = 180:0.1:270
    append!(x, r*cosd.(θ) .+ r)
    append!(y, r*sind.(θ) .+ r)
    append!(x, -r)
    append!(y, 0)
    plot!(x, y, color=:black, lw=0.5, seriestype=:shape, fillcolor= :gray90)
    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(r, r, " 等円:r,(r,r)", :red, :left, :vcenter)
        point(0, r/4, "空積:S", :black, :center, :vcenter, mark=false)
    end
end;

draw(1, true)

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

算額(その1569)

2025年01月29日 | Julia

算額(その1569)

百 大船渡市猪川町 雨宝堂 現雨宝山竜宝院 文政10年(1827)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html
キーワード:円14個
#Julia, #SymPy, #算額, #和算

内部にそれぞれ 3 個の中円が入った 2 個の大円が,互いに接し合う小円 6 と接している。小円の直径が 1 寸のとき,中円の直径はいかほどか。

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

まず,大円と小円について以下の連立方程式を解く。大円の中の中円については後で。

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

using SymPy
@syms r1::positive, x1::positive,
      r3::positive, y3::positive

eq1 = x1^2 + r3^2 - (r1 + r3)^2
eq2 = (x1 - r3)^2 + y3^2 - (r1 + r3)^2
eq3 = r3^2 + (y3 - r3)^2 - 4r3^2
res = solve([eq1, eq2, eq3], (r1, x1, y3))[1];

# r1
res[1] |> sympy.sqrtdenest |> simplify |> println

    r3*(-1 + sqrt(2) + sqrt(6))

大円の半径 r1 は,小円の半径 r3 の (√2 + √6 - 1) 倍である。

# x1
res[2] |> println

    r3*(sqrt(3) + 2)

# y3
res[3] |> println

    r3*(1 + sqrt(3))

大円とその中にある 3 個の中円の関係については,算額(その197) に示した。
中円の半径 r2 は,大円の半径 r1 の 3/(3 + 2√3) 倍である。
大円の半径は上述のように r3*(√2 + √6 - 1) なので,r2 = r3*(3 + 3√2 - 2√3 - √6) である。

r2 = 3res[1]/(3 + 2√Sym(3)) |> simplify |> sympy.sqrtdenest |> simplify
r2 |> println

    r3*(-2*sqrt(3) - sqrt(6) + 3 + 3*sqrt(2))

小円の半径が 1/2 のとき,中円の半径は 0.664524664599176,直径は 1.329049329198352 である。

r2(r3 => 1/2).evalf() |> println

    0.664524664599176

2*0.664524664599176

    1.329049329198352

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

小円径 = 1
天 = √12 - 3
A = sqrt((天 + 7)*2) - 1
中円径 = A*天*小円径

    1.3290493291983518

小円径に掛ける倍数を 1 つの式にまとめて簡約化すれば,上で得たものと同じであることがわかる。

倍数 = (sqrt((√Sym(12) - 3 + 7)*2) - 1)*(√Sym(12) - 3)
倍数 |> expand |> simplify |> sympy.sqrtdenest |> println

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

function draw(r3, more=false)  # b:楕円の短半径と,r:円の半径
    pyplot(size=(500, 500), showaxis=true, grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r1 = r3*(√2 + √6 - 1)
    x1 = r3*(√3 + 2)
    y3 = r3*(1 + √3)
    r2 = r3*(3 + 3√2 - 2√3 - √6)
    plot()
    circle2(x1, 0, r1)
    circle22(0, r3, r3, :blue)
    circle4(r3, y3, r3, :blue)
    circle2(x1 - r1 + r2, 0, r2, :green)
    circle4(x1 + (r1 - r2)/2, (r1 - r2)√3/2, r2, :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, 0, "大円:r1,(x1,0)", :red, :center, delta=-delta)
        point(x1 - r1 + r2, 0, "中円:r2\n(x1-r1+r2,0)", :green, :center, :bottom, delta=delta)
        point(0, r3, "小円:r3,(0,r3)", :blue, :right, delta=-3delta, deltax=5delta)
        point(r3, y3, "小円:r3,(r3,y3) ", :blue, :right, :vcenter)
    end
end;

draw(1/2, true)

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

算額(その1568)

2025年01月29日 | Julia

算額(その1568)

九十七 岩手県大船渡市猪川町 雨宝堂(現雨宝山竜宝院) 文政7年(1824)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html
キーワード:球4個,3次元
#Julia, #SymPy, #算額, #和算

直方体の中に,甲球 1 個,乙球 1 個,丙球 2 個を容れる。甲球の直径は丙球の直径の 2 倍である。乙球の直径が 4 寸のとき,甲球の直径はいかほどか。

直方体の,原点と対角の頂点座標を (a, 2r1, 2r1)
甲球の半径と中心座標を r1, (r1, r1, r1)
乙球の半径と中心座標を r2, (x2, r1, 2r1 - r2)
丙球の半径と中心座標を r3, (a - r3, r3, r3), (a - r3, 3r3, r3)
とおき,以下の連立方程式を解く。

using SymPy
@syms a::positive, r1::positive, r3::positive, r2::positive, x3::positive, z2::positive
r3 = r1/2
eq1 = (a - r3 - r1)^2 + (r3 - r1)^2 + (r3 - r1)^2 - (r1 + r3)^2
eq2 = (x3 - r1)^2 + (r1 - r2)^2 - (r1 + r2)^2
eq3 = (a - r3 - x3)^2 + (r1 - r3)^2 + (2r1 - r2 - r3)^2 - (r3 + r2)^2;

res = solve([eq1, eq2, eq3], (r1, a, x3))[1];

# r1
res[1] |> println

    7*r2/4

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

# a
res[2] |> simplify |> println

    7*r2*(sqrt(7) + 3)/8

# x3
res[3] |> println

    r2*(7/4 + sqrt(7))

 

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

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

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