以下の内容はhttps://sangaku0418.hatenablog.com/entry/2025/01/01/130022より取得しました。


算額(その1512)

61 岩手県花泉町金沢字大柳 金沢八幡宮 明治29年(1896)

安富有恒:和算—岩手の現存算額のすべて,青磁社,東京都,1987.
http://www.wasan.jp/iwatenosangaku_yasutomi.pdf
キーワード:円2個,四分円,正三角形
#Julia #SymPy #算額 #和算 #数学


正三角形と四分円2個を組み合わせ,斜線を 2 本引き,隙間に円を容れる。正三角形の一辺の長さが与えられたとき,円の直径を求める術を述べよ。

正三角形の一辺の長さを \(2a\)
円の半径と中心座標を \(r,\ (x,\ y)\)
とおき,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース

using SymPy
@syms a, r, x, y
eq1 = dist(-a, 0, 2a*cosd(Sym(30)), 2a*sind(Sym(30)), x, y) - r^2
eq2 = dist(0, √Sym(3)*a, a, 0, x, y) - r^2
eq3 = x^2 + (√Sym(3)*a - y)^2 - (2a - r)^2;
# res = solve([eq1, eq2, eq3], (r, x, y))

function H(u)
    (r, x, y) = u
    return [
        dist(-a, 0, 2a*cosd(30), √3a + 2a*sind(30), x, y) - r^2,
        dist(0, √3a, a, 0, x, y) - r^2,
        x^2 + (√3a - y)^2 - (2a - r)^2
    ]
end;
a = 1/2
iniv = BigFloat[0.3, 0.6, 0.6]
res = nls(H, ini=iniv)

    ([0.35430062553187885, 0.576740154417105, 0.5756834046326507], true)

正三角形の一辺の長さが 1 のとき,円の直径は res[1][1]*2 = 0.7086012510637577 である。

描画関数プログラムのソースを見る

function draw(more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r, x, y) = res[1]
    plot([a, 0, -a, a], [0, √3a, 0, 0], color=:magenta, lw=0.5)
    @printf("正三角形の一辺の長さが %g のとき,円の直径は %g である。\n", 2a, 2r)
    circle(0, √3a, 2a, beginangle=-60, endangle=30)
    circle(x, y, r, :blue)
    segment(-a, 0, 2a*cosd(30), √3a + 2a*sind(30), :green)
    segment(0, √3a, 2a*cosd(30), √3a + 2a*sind(30), :green)
    circle(-a, 0, 2a, beginangle=60, endangle=150)
    segment(-a, 0, -a - 2a*cosd(30), 2a*sind(30), :green)
    segment(a, 0, -a - 2a*cosd(30), 2a*sind(30), :green)
    ox = 0
    oy = √3a/3
    len = sqrt(x^2 + (y - oy)^2)
    θ = atand(y - √3a/3, x) + 120
    x2 = len*cosd(θ)
    y2 = len*sind(θ) + oy
    circle(x2, y2, r, :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(x, y, "r,(x,y)", :blue, :center, delta=-delta)
        point(0, √3a, "√3a", :magenta, :center, :bottom, delta=2delta)
        point(a, 0, "a", :magenta, :center, delta=-1.5delta)
        ylims!(-7delta, √3a + 2a*sind(30) + 5delta)
    end
end;

draw(true)


以下のアイコンをクリックして応援してください




以上の内容はhttps://sangaku0418.hatenablog.com/entry/2025/01/01/130022より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14