裏 RjpWiki

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

算額(その1466)

2024年12月12日 | Julia

算額(その1466)

百二十六 群馬県倉渕村水沼 蓮華院 明治11年(1878)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円,三分割
#Julia, #SymPy, #算額, #和算

円を面積が等しくなるように 2 本の平行な弦(等線)を引き,3 等分する。円の直径が与えられたとき,等線の長さはいかほどか。」

本問の胆は「円を平行な直線 2 本で三分割する方法」である。
このブログでも算額とは無関係にすでに 2 回取り上げている。
ホールケーキを三等分する」,「1/3 ずつに分割せよ...変わったケーキカット

それぞれ,アプローチの仕方は異なるが,今回は簡明直截に SymPy の integrate を使い,等線の長さを求める。
円の半径を 1/2 とする。sqrt(r^2 - x^2) を x0 < x < r まで積分する。

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

using SymPy
using Roots
@syms r::positive, x::positive, x0::positive
r = 1/2
eq = 2integrate(sqrt(r^2 - x^2), (x, x0, r)) - PI*r^2/3
ans_x0 = find_zero(eq, (0, r))

    0.13246604230138845

直径 1 の円を 3 分割する等線の長さは 2y0 = 2sqrt(r^2 - ans_x0^2) = 0.9642670742838972

2sqrt(r^2 - ans_x0^2)

    0.9642670742838972

「術」によれば,円の直径*(1/1.036933) = 0.9643824625120426

function draw(more)
    pyplot(size=(200, 200), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r = 1/2
    x0 = 0.13246604230138845
    y0 = sqrt(r^2 - x0^2)
    println("x0 = $x0, y0 = $y0, 2y0 = $(2y0)")
    plot()
    circle(0, 0, r, :blue)
    segment(x0, y0, x0, -y0, :red)
    segment(-x0, y0, -x0, -y0, :red)
    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, "(x0,y0)", :blue, :left, :bottom, delta=delta/2)
        point(r, 0, " r", :blue, :left, :bottom, delta=delta/2)
        xlims!(-r - 5delta, r + 10delta)
    end
end;

draw(true)


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1465) | トップ | 本場 讃岐うどん たも屋 三条店 »
最新の画像もっと見る

コメントを投稿

Julia」カテゴリの最新記事