裏 RjpWiki

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

算額(その1590)

2025年02月04日 | Julia

算額(その1590)

秋田県角館町熊野神社 嘉永2年(1849)

秋田県仙北市角館町西長野 熊野神社 嘉永2年(1849)
http://www.wasan.jp/akita/kakunodatekumano1.html

深川英俊,トニー・ロスマン:聖なる数学:算額,p. 109,森北出版株式会社,2010年4月22日.

キーワード:円,内接三角形
#Julia, #SymPy, #算額, #和算, #数学

外円の中に三角形 ABC が内接している。頂点 C から対辺 BC に垂線 CH を下ろす。BC, AC, CH が与えられたとき,外円の直径を求める術を述べよ。

「算法叙述の公式25」h = a*b/2r の式変形である。

外円の半径を r
BC, AC, CH を a, b, h
とおく。

C から外接円の中心 O を通る補助線を引き,円周上の交点を D とする。
∠HBC = ∠ADC なので,△HBC ∽ △ADC である。
h/a = b/DC = b/2r = sin(α)
よって,r = a*b/2h である。

a = 5, b = 8, h = 4 のとき,r = 5*8/(2*4) = 5 である。

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

琴平町 うどん吉田屋

2025年02月04日 | さぬきうどん

琴平町 うどん 吉田屋
かやくうどん
やや平べったい,乾麺かな?こしはある

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

算額(その1589)

2025年02月04日 | Julia

算額(その1589)

江戸 愛宕神社 文政13年(1830)
深川英俊,トニー・ロスマン:聖なる数学:算額,p. 108,森北出版株式会社,2010年4月22日.

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

辺の長さが a, b, c, d の 4 個の正方形が頂点を共有して図のように並んでいる。
a, b, c が与えられたとき,d を求める術を述べよ。

この特殊な場合が左右対称な「算額(その657)」である。

思いつくのは,第二余弦定理の適用であるが,β = π - α ではあるが,変数の個数が多くて,以下の連立方程式は解けなかった。

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

using SymPy
@syms a::positive, b::positive, c::positive, d::positive,
      α::positive, β::positive
eq1 = b^2 + d^2 - 2b*d*cos(α) - a^2
eq2 = b^2 + d^2 - 2b*d*cos(β) - c^2
res = solve([eq1, eq2], (c, d))

    2-element Vector{Tuple{Sym{PyCall.PyObject}, Sym{PyCall.PyObject}}}:
     (sqrt(a^2 + (b*cos(α) - sqrt(a^2 + b^2*cos(α)^2 - b^2))*(2*b*cos(α) - 2*b*cos(β))), b*cos(α) - sqrt(a^2 + b^2*cos(α)^2 - b^2))
     (sqrt(a^2 + (b*cos(α) + sqrt(a^2 + b^2*cos(α)^2 - b^2))*(2*b*cos(α) - 2*b*cos(β))), b*cos(α) + sqrt(a^2 + b^2*cos(α)^2 - b^2))

補助線を引くと,cos(α) は CX/BC で,CX = x とおくと,x/d である。cos(β) は -x/d。
これらを代入して,以下の連立方程式を解いて d, x を求めると a, b, c を含む式として解が得られる。

@syms x
eq11 = eq1(d*cos(α) => x)
eq11 |> println

    -a^2 + b^2 - 2*b*x + d^2

eq12 = eq2(d*cos(β) => -x)
eq12 |> println

    b^2 + 2*b*x - c^2 + d^2

res = solve([eq11, eq12], (d, x))[1]

    (sqrt(2)*sqrt(a^2 - 2*b^2 + c^2)/2, -(a - c)*(a + c)/(4*b))

# d
res[1] |> println

    sqrt(2)*sqrt(a^2 - 2*b^2 + c^2)/2

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

算額(その1588)

2025年02月04日 | Julia

算額(その1588)

岡山県瀬戸内市長船町土師宮森 片山日子神社 明治6年(1873)
深川英俊,トニー・ロスマン:聖なる数学:算額,p. 107,森北出版株式会社,2010年4月22日.

キーワード:
#Julia, #SymPy, #算額, #和算, #数学

扇面に大円 2 個を容れ,大円の共通接線と扇端に接するように小円 1 個を容れる。弦の長さと小円の直径が与えられたとき,大円の直径はいかほどか。

注1:深川は「弦の長さが与えられたとき大円と小円の直径を求めよ」と書きながら,弦の長さの他に小円の直径も与えられたとして大円の直径を求めている。
注2:問題では扇の開いた角度に関しては条件がない。図はそのようにはなっていないが,「大円が扇骨に接する」ようにしてもよいだろう。ここでは,開いた角度を 120° で描いた。また,要から地紙までの長さ(骨の見える部分の長さ)にも指定はないが,算額の図では大円と接するように描いている。

扇長(要から扇端まで)を R
弦の長さを d
小円の半径と中心座標を r2, (0, R - r2)
大円の半径と中心座標を r1, (r1, R - 2r2 - r1)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms d::positive, t::positive, R::positive, r1::positive, r2::positive
eq1 = (d/2)^2 + (R - 2r2)^2 - R^2
eq2 = r1^2 + (R - 2r2 - r1)^2 - (R - r1)^2
res = solve([eq1, eq2], (r1, R))[1];

# r1
res[1] |> println
res[1](d => 3.62438, r2 => 0.34/2) |> println

    -2*r2 + sqrt(d^2 + 16*r2^2)/2
    1.50380926239674

弦の長さが 3.62438,小円の半径が 0.34/2 のとき,大円の半径は 1.50380926239674 である。

# R
res[2] |> println
res[2](d => 3.62438, r2 => 0.34/2) |> println

    (d^2 + 16*r2^2)/(16*r2)
    4.99945970014706

同じく,扇長は 4.99945970014706 である。

弦の長さと小円の直径がずいぶんと半端な数なのは,扇長がきれいな数(ほとんど 5)になるための条件なのであろう。
大円の半径もある程度きれいな数であるが,扇長ほどの綺麗さではない。もとの算額は扇長の方を求めていたのかな?

算額・和算では,注目するパラメータだけを求めさせる問題が多いが,連立方程式を解くという方法では,このような発見もあるんだなあ。深川は,気づいていただろうか。

function draw(d, r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r1 = -2*r2 + sqrt(d^2 + 16*r2^2)/2
    R = (d^2 + 16*r2^2)/(16*r2)
    R2 = 0.3R
    y = R - 2r2
    x = sqrt(R^2 - y^2)
    (x0, y0) = R.*(cosd(30), sind(30))
    plot([-x0, 0, x0], [y0, 0, y0], color=:black, lw=0.5)
    circle(0, 0, R, beginangle=30, endangle=150)
    circle(0, 0, R - 2r1, beginangle=30, endangle=150)
    circle(0, R - r2, r2, :green)
    circle2(r1, R - 2r2 - r1, r1, :blue)
    segment(-x, y, x, y, :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)
        dimension_line(2delta, -2delta, x0 + 2delta, y0 - 2delta, " R", :black, :center, delta=-2delta)
        dimension_line(-x, R - 2r2 - 2delta, x, R - 2r2 - 2delta, "d", :black, :center, delta=-3delta)
        point(r1, R - 2r2 - r1, "大円:r1,(r1,R-2r2-r1)", :blue, :center, delta=-delta)
        point(0, R - r2, "小円:r2,(0,R-r2)", :blue, :left, :bottom, delta=3delta)
    end
end;

draw(3.62438, 0.34/2, true)

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

算額(その1587)

2025年02月04日 | Julia

算額(その1587)

岡山県瀬戸内市長船町土師宮森 片山日子神社 明治6年(1873)
深川英俊,トニー・ロスマン:聖なる数学:算額,p. 105,森北出版株式会社,2010年4月22日.

キーワード:円の区分法
#Julia, #SymPy, #算額, #和算, #数学

直径が 2r = 100m の円形の畑がある。この畑を図のように長さが t の線分で分割し,面積を 5 等分したい。その 1 つは辺の長さが d の正方形である。円周率を 3.16(円積率が 0.79)として,t, d を求める術を述べよ。

以下の連立方程式を解く。

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

using SymPy
@syms d, t, r, 円周率, S
#円周率 = 3.16
eq1 = (t - d/2)^2 + (d/2)^2 - r^2
eq2 = d^2 - 円周率*r^2/5
eq3 = S - d^2;
res = solve([eq1, eq2, eq3], (d, t, S))[4]  # 3 of 4

    (sqrt(10)*sqrt(r^2*(sqrt(円周率*(20 - 円周率)) + 10))*(円周率 - sqrt(円周率*(20 - 円周率)))/(10*(円周率 - 10)), sqrt(r^2*sqrt(-円周率^2 + 20*円周率)/10 + r^2), r^2*円周率/5)

# d
res[1] |> println
res[1](円周率 => 3.16, r => 50).evalf() |> println
res[1](円周率 => π, r => 50).evalf() |> println

    sqrt(10)*sqrt(r^2*(sqrt(円周率*(20 - 円周率)) + 10))*(円周率 - sqrt(円周率*(20 - 円周率)))/(10*(円周率 - 10))
    39.7492138287036
    39.6332729760601

# t
res[2] |> println
res[2](円周率 => 3.16, r => 50) |> println
res[2](円周率 => π, r => 50).evalf() |> println

    sqrt(r^2*sqrt(-円周率^2 + 20*円周率)/10 + r^2)
    65.7548859021696
    65.7219838704568

# S
res[3] |> println
res[3](円周率 => 3.16, r => 50) |> println
res[3](円周率 => π, r => 50).evalf() |> println

    r^2*円周率/5
    1580.00000000000
    1570.79632679490

function draw(r, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    円周率 = 3.16
    d = sqrt(10)*sqrt(r^2*(sqrt(円周率*(20 - 円周率)) + 10))*(円周率 - sqrt(円周率*(20 - 円周率)))/(10*(円周率 - 10))
    t = sqrt(r^2*sqrt(-円周率^2 + 20*円周率)/10 + r^2)
    plot()
    circle(0, 0, r)
    segment(-d/2, d/2, t - d/2, d/2, :blue)
    segment(-d/2, -d/2, -d/2, t - d/2, :blue)
    segment(d/2, -d/2, - t + d/2, -d/2, :blue)
    segment(d/2, d/2, d/2, - t + d/2, :blue)
    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(-d/2, d/2, "(-d/2,d/2) ", :blue, :right, :vcenter)
        point(d/2, d/2, "(d/2,d/2) ", :blue, :center, :bottom, delta=delta/2)
        point(t - d/2, d/2, "(t-d/2,d/2)", :blue, :right, delta=-delta/2)
        point(0, r, "r", :red, :center, :bottom, delta=delta/2)
    end
end;

draw(100/2, true)

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

今年は来ました

2025年02月04日 | 写真

ミカン・レストラン:メジロ様ご来店

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

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

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