goo blog サービス終了のお知らせ 

裏 RjpWiki

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

算額(その1440)

2024年12月01日 | Julia

算額(その1440)

四 岩手県花巻市南笹間 東光寺 慶応2年(1866)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html

寒河江市平塩 熊野神社 明治2年(1869)
徳竹亜紀子,谷垣美保,萬 伸介:天童市山元の若松寺観音堂算額の調査報告 ― 服部武右衛門が関わる算額 ー,仙台高等専門学校名取キャンパス 研究紀要,第 59 号,p.1-8,2023.
https://www.jstage.jst.go.jp/article/nitsendainatori/59/0/59_1/_pdf/-char/ja

キーワード:円1個,外円,正方形4個
#Julia, #SymPy, #算額, #和算

円の中に大正方形 1 個,小正方形 3 個を容れる。大正方形の一辺の長さが 1 寸のとき,小正方形の一辺の長さはいかほどか。

円の半径と中心座標を R, (0, 0)
大正方形の一辺の長さを a
小正方形の一辺の長さを b
正方形の頂点座標を (ax, ay), ..., (fx, fy)
とおき,方程式を解く。
座標点のうちいくつかは特定できる。結局,求めるべきパラメータは b, R, cx である。

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

using SymPy
@syms R::positive, a::positive, b::positive,
      ax::positive, ay::positive, bx::positive, by::positive,
      cx::positive, cy::positive, dx::positive, dy::positive,
      ex::positive, ey::positive, fx::positive, fy::positive
ax = a/2
ay = sqrt(R^2 - ax^2)
bx = ax
by = ay - a
cy = -sqrt(R^2 - cx^2)
dx = a//2 ### 数値解から得られた関係式
dy = -sqrt(R^2 - dx^2)
ex = b/2
ey = -a//2 ### 数値解から得られた関係式
fx = ex
fy = ey - b

eq1 = (cx - dx)^2 + (cy - dy)^2 - b^2 |> expand
eq2 = (ex - bx)^2 + (ey - by)^2 - b^2 |> expand
eq3 = (bx - dx)^2 + (by - dy)^2 - 2b^2 |> expand;

res = solve([eq1, eq2, eq3], (b, R, cx))[4]  # 4 of 4

    (a*sqrt(-3*sqrt(2) - sqrt(11 - 6*sqrt(2)) + 6), a*sqrt(12 - 6*sqrt(2))/2, a*(7*sqrt(34 - 24*sqrt(2)) + sqrt(22 - 12*sqrt(2)) + 14*sqrt(17 - 12*sqrt(2)) + 2*sqrt(11 - 6*sqrt(2)))/12)

# b  二重根号を外す
res[1] |> sympy.sqrtdenest |> println

    a*(-1 + sqrt(2))

# R
res[2] |> println

    a*sqrt(12 - 6*sqrt(2))/2

# cx  二重根号を外す
res[3] |> sympy.sqrtdenest |> simplify |> println

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

小正方形の一辺の長さ b は,大正方形の一辺の長さ a の (√2 - 1) 倍である。
大正方形の一辺の長さが 1 寸のとき,小正方形の一辺の長さは (√2 - 1) = 0.41421356237309515 寸である。

function draw(a, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    b = a*(√2 - 1)
    R = a*sqrt(12 - 6√2)/2
    cx = a*(3 - √2)/2
    ax = a/2
    ay = sqrt(R^2 - ax^2)
    bx = ax
    by = ay - a
    cy = -sqrt(R^2 - cx^2)
    dx = a//2 ### 数値解から得られた関係式
    dy = -sqrt(R^2 - dx^2)
    ex = b/2
    ey = -a//2 ### 数値解から得られた関係式
    fx = ex
    fy = ey - b
    @printf("a = %g;  b = %g;  R = %g;  cx = %g\n", a, b, R, cx)
    plot([bx, ax, -ax, -bx, bx], [by, ay, ay, by, by], color=:blue, lw=0.5)
    circle(0, 0, R)
    plot!([cx, bx, ex, dx, cx], [cy, by, ey, dy, cy], color=:green, lw=0.5)
    plot!(-[cx, bx, ex, dx, cx], [cy, by, ey, dy, cy], color=:green, lw=0.5)
    plot!([fx, ex, -ex, -fx, fx], [fy, ey, ey, fy, fy], color=:green, lw=0.5)
    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(ax,  ay, " (ax,ay)", :green, :left, :vcenter)
        point(bx,  by, " (bx,by)", :green, :left, :vcenter)
        point(cx,  cy, " (cx,cy)", :green, :left, :vcenter)
        point(dx,  dy, " (dx,dy)", :green, :left, :vcenter)
        point(ex,  ey, " (ex,ey)", :green, :left, :vcenter)
        point(fx,  fy, " (fx,fy)", :green, :left)
        point(0, R, "R", :red, :center, :bottom, delta=delta/2)
    end
end;

draw(1, true)


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

コメントを投稿

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

Julia」カテゴリの最新記事