裏 RjpWiki

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

算額(その1537)

2025年01月13日 | Julia

算額(その1537)

(17) 京都府京都市東山区清水 清水寺 明治25年(1892)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.

キーワード:半円1個,扇,斜線2本
#Julia, #SymPy, #算額, #和算

1/3 円でできる扇に,半円 1 個と斜線 2 本を容れる。扇長(要から扇の先端までの長さ)が 20 寸,骨径(見えている骨の長さ)が 8寸のとき,斜線の長さ,半円の直径はいかほどか。

扇長を R, 骨長を r2
半円の半径と中心座標を r1, (0, R - r1)
とおき,以下の方程式を解いて r1 を求める。

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

using SymPy
@syms R, r1, r2
eq1 = r1/(√Sym(3)*R/2) - (R - r1 - r2)/(R/2 - r2);

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

    3*R*(R - r2)/(sqrt(3)*R + 3*R - 2*sqrt(3)*r2)

半円の半径は 3R*(R - r2)/(√3R + 3R - 2√3r2) である。

2*ans_r1(R => 20, r2 => 8).evalf() |> println

    21.5155932850234

扇長が 20 寸,骨長が 8 寸のとき,半円の直径は 21.5155932850234 寸である。

斜線の端点は (0, r2), (√3R/2, R/2) なので,直接計算できる。

sqrt((√Sym(3)R/2)^2 + (R/2 - r2)^2)(R => 20, r2 => 8).evalf() |> println

    17.4355957741627

斜線の長さは 17.4355957741627 寸である。

function draw(R, r2, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r1 = 3R*(R - r2)/(√3R + 3R - 2√3r2)
    plot([-√3R/2, 0, √3R/2], [R/2, r2, R/2], color=:green, lw=0.5)
    circle(0, 0, R, beginangle=30, endangle=150)
    plot!([-√3R/2, 0, √3R/2], [R/2, 0, R/2], color=:red, lw=0.5)
    circle(0, 0, r2, :magenta, beginangle=30, endangle=150)
    circle(0, R - r1, r1, :blue, beginangle=0, endangle=180)
    segment(-r1, R - r1, r1, R - r1, :blue)
    for θ = 30:15:150
        segment(0, 0, r2*cosd(θ), r2*sind(θ), :black, lw=2)
    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, R, "R", :red, :center, :bottom, delta=delta)
        point(0, R - r1, "R-r1", :blue, :center, :bottom, delta=delta)
        point(0, r2, "r2", :magenta, :center, :bottom, delta=delta/2)
        circle(0, 0, r2/3, beginangle=0, endangle=30, lw=2)
        point(√3r2/6, 0, "30°", :red, :left, :bottom, delta=delta, deltax=4delta, mark=false)
    end
end;

draw(20, 8, true)


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1536) | トップ | 算額(その1538) »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Julia」カテゴリの最新記事