裏 RjpWiki

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

算額(その1488)

2024年12月20日 | Julia

算額(その1488)

四十八 岩手県一関市弥栄 弥栄熊野神社 明治16年(1883)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html
キーワード:円4個,円弧,弓形,弦,矢
#Julia, #SymPy, #算額, #和算

円弧(弓形)内に,甲円 2 個,乙円 2 個を容れる。甲円の直径が 147 寸,弦の長さが 294 寸のとき,乙円の直径と矢の長さはいかほどか。

注:実際の図(答)は算額の図とは似ても似つかないものになる。

円弧の半径と中心座標を R, (0, 0)
弦と y 軸の交点座標を (0, y)
甲円の半径と中心座標を r1, (r1, y + r1)
乙円の半径と中心座標を r2, (x2, y + r2)
とおき,以下の連立方程式を解く。
矢の長さは R - y である。

include("julia-source.txt");

using SymPy
@syms R, r1, r2, x2, 矢, 弦

y = R- 矢
x = 弦/2
eq1 = r1^2 + (y + r1)^2 - (R - r1)^2
eq2 = x2^2 + (y + r2)^2 - (R - r2)^2
eq3 = (x2 - r1)^2 + (r1 - r2)^2 - (r1 + r2)^2
eq4 = x^2 + y^2 - R^2;

res = solve([eq1, eq2, eq3, eq4], (R, r2, x2, 矢))[2]

    (-(4*r1^2 + 弦^2)^2/(16*r1*(2*r1 - 弦)*(2*r1 + 弦)), r1*(2*r1 - 弦)^2*(2*r1 + 弦)^2/(12*r1^2 + 弦^2)^2, (4*r1^3 + 3*r1*弦^2)/(12*r1^2 + 弦^2), -2*r1*弦^2/((2*r1 - 弦)*(2*r1 + 弦)))

# r2
res[2] |> println
res[2](r1 => 147//2, 弦 => 294) |> println

    r1*(2*r1 - 弦)^2*(2*r1 + 弦)^2/(12*r1^2 + 弦^2)^2
    27/2

乙円の直径は 27 寸である。

# 矢
res[4] |> simplify |> println
res[4](r1 => 147//2, 弦 => 294) |> println

    -2*r1*弦^2/(4*r1^2 - 弦^2)
    196

矢の長さは 196 寸である。

function draw(弦, d1, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    x = 弦/2
    r1 = d1/2
    (R, r2, x2, 矢) = (-(4*r1^2 + 弦^2)^2/(16*r1*(2*r1 - 弦)*(2*r1 + 弦)), r1*(2*r1 - 弦)^2*(2*r1 + 弦)^2/(12*r1^2 + 弦^2)^2, (4*r1^3 + 3*r1*弦^2)/(12*r1^2 + 弦^2), -2*r1*弦^2/((2*r1 - 弦)*(2*r1 + 弦)))
    y = R- 矢
    @printf("矢 = %g, 乙円の直径 = %g\n", 矢, 2r2)
    θ = atand(y, x)
    plot()
    circle(0, 0, R, :magenta, beginangle=θ, endangle=180-θ)
    circle2(r1, y + r1, r1)
    circle2(x2, y + r2, r2, :blue)
    segment(-x, y, x, y, :green)
    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(r1, y + r1, "甲円:r1,(r1,y+r1)", :red, :center, delta=-delta)
        point(x2, y + r2, "乙円:r2,(x2,y+r2)", :blue, :right, :vcenter)
        point(0, R, "R", :magenta, :center, :bottom, delta=delta)
        point(0, y, "y", :green, :center, delta=-delta)
        point(弦/2, y, "(弦/2,y)", :green, :right, delta=-delta)
        dimension_line(0, y, 0, R, " 矢", :black, :left, delta=20delta)
        ylims!(y - 7delta, R + 2delta)
    end
end;

draw(294, 147, true)


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

コメントを投稿

Julia」カテゴリの最新記事