裏 RjpWiki

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

算額(その1565)

2025年01月28日 | Julia

算額(その1565)

八十五 岩手県室根村折壁字大洞 入沢弥栄神社 明治16年(1833)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

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

今有如図 03067
https://w.atwiki.jp/sangaku/pages/286.html

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

外円の中に,正方形および乾円,離円,兌円を容れる。離円の直径の 195/500 倍が乾円の直径である(注)。乾円と離円の直径の和の半分が正方形の一辺の長さに等しい。兌円の直径はいかほどか。

注:原文は「離円径五百分百九十五倍之為乾円径」で,これは「乾円径 = 離円径×195/500」ではないだろうか。山村は「倍」を「2倍」と解し,「乾円径 = 離円径×195/500×2」としている。本当に「195/500×2」であるなら,算額の作者は「195/250」と書くであろう。この解釈の結果,乾円は離円の 8 割ほどの大きさ(直径)になることになる。

ここで改めて図を見ると,離円は乾円より小さく描かれている。説明文字は逆ではないか。ちなみに「今有如図」では,図に説明文字はない。逆であるとしても,小さいほうが大きい方の8割とは思えない(より小さい)。

更に,山村の図では正方形の上の 2 頂点が外円の円周上にあるように描かれているが,これはありえない。「今有如図」では,左上の頂点のみが円周上にあると描かれている。

以上のように,さまざまに誤った前提であるにも関わらず,山村は解説で,「兌円は 0.241785 ≒ 1/3.85 で,答えの 1/4 は大概数」と澄まして言い切っている。

問題文では円の大きさは外円の直径を 1 としたときの割合(分数)で表している。

外円の半径と中心座標を R, (0, 0)
離円の半径と中心座標を r1, (x1, y1)
乾円の半径と中心座標を r2, (x2, y2); y2 = y1
兌円の半径と中心座標を r3, (x3, y3)
とおき,以下の連立方程式を解く。

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

using SymPy

@syms R::positive, r1::positive, x1::positive, y1::negative,
      a::positive, r2::positive, x2::negative, y2::negative,
      r3::positive, x3::negative, y3::negative
y2 = y1
r2 = r1*195//500
eq1 = x1^2 + y1^2 - (R - r1)^2
eq2 = (x1 - x3)^2 + (y1 - y3)^2 - (r1 + r3)^2
eq3 = x2^2 + y2^2 - (R - r2)^2
eq4 = (x3 - x2)^2 + (y2 - y3)^2 - (r2 + r3)^2
eq5 = x3^2 + y3^2 - (R - r3)^2
eq6 = (r1 + r2) - a
eq7 = (x1 - x2) - a
eq8 = x2^2 + (y2 + a)^2 - R^2;

function H(u)
    (r1, x1, y1, a, x2, r3, x3, y3) = u
    y2 = y1
    r2 = r1*195/500
    return [
        x1^2 + y1^2 - (R - r1)^2
        (x1 - x3)^2 + (y1 - y3)^2 - (r1 + r3)^2
        x2^2 + y2^2 - (R - r2)^2
        (x3 - x2)^2 + (y2 - y3)^2 - (r2 + r3)^2
        x3^2 + y3^2 - (R - r3)^2
        (r1 + r2) - a
        (x1 - x2) - a
        x2^2 + (y2 + a)^2 - R^2
    ]
end;
R = 1/2
iniv = BigFloat[0.34, 0.12, -0.11, 0.47, -0.35, 0.09, -0.26, -0.32]
res = nls(H, ini=iniv)

    ([0.3371631334048598, 0.11773867297320516, -0.11248755490734132, 0.46865675543275515, -0.35091808245955003, 0.09133225688728815, -0.2595055228066516, -0.31569955320475807], true)

「答」と同じ解が得られない。

外円の半径を 1/2 とすれば,兌円の半径は 0.09133225688728815 である。
基準とする離円の半径が 0.3371631334048598 なので,兌円は離円の 0.09133225688728815/0.3371631334048598 = 0.27088447056759885 倍である。
なお,乾円の半径は 0.3371631334048598*195/500=0.13149362202789533 である。

function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r1, x1, y1, a, x2, r3, x3, y3) = res[1]
    y2 = y1
    r2 = r1*195/500
    @printf("a = %g;  r1 = %g;  r2 = %g;  r1 + r2 = %g\n", a, r1, r2, r1 + r2)
    println("r2/r1 = $(r2/r1) = $(rationalize(r2/r1))")
    println("r3/r1 = $(r3/r1) = $(rationalize(r3/r1))")
    plot()
    circle(0, 0, R, :green)
    circle(x1, y1, r1)
    circle(x2, y2, r2, :blue)
    circle(x3, y3, r3, :magenta)
    rect(x2, y2, x1, y1 + a, :orange)
    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, y1, "離円:r1,(x1,y1)", :red, :center, delta=-delta/2)
        point(x2, y2, "乾円:r2,(x2,y2)", :blue, :center, delta=-delta/2)
        point(x3, y3, "兌円:r3\n(x3,y3)", :magenta, :center, delta=-delta/2)
    end  
end;

draw(1/2, true)


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« セルフうどん さぬき麺市場 ... | トップ | 算額(その1566) »
最新の画像もっと見る

コメントを投稿

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

Julia」カテゴリの最新記事