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


算額(その1688)

山形県新庄市 戸沢神社 文政元年(1818)

http://www.wasan.jp/yamagata/tozawa.html
キーワード:正方形,長方形
#Julia #SymPy #算額 #和算 #数学


長方形の中に大中小 3 個の正方形を容れる。長方形の長辺,短辺の長さが与えられたとき,小正方形の一辺の長さはいかほどか。

長方形の長辺,短辺を \(a,\ b\)
点 \(A\) の座標を \( (0,\ y_2)\)
点 \(B\) の座標を \( (x_2,\ y_1)\)
点 \(C\) の座標を \( (x_3,\ y_6)\)
点 \(D\) の座標を \( (x_1,\ b)\)
点 \(E\) の座標を \( (x_5,\ 0)\)
点 \(F\) の座標を \( (a,\ y_3)\)
点 \(G\) の座標を \( (x_4,\ y_4)\)
点 \(H\) の座標を \( (a,\ y_5)\)
点 \(I\) の座標を \( (x_6,\ b)\)
とおき,以下の連立方程式を解く。

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

using SymPy

@syms x1::positive, x2::positive, x3::positive, x4::positive, x5::positive, x6::positive, a::positive,
      y1::positive, y2::positive, y3::positive, y4::positive, y5::positive, y6::positive, b::positive

    # 大正方形について
    eq1 = x1 - (y2 - y1)
    eq2 = x1 - (x3 - x2)
    eq3 = x1 - (b - y6)

    # 中正方形について
    eq4 = (x5 - x2) - y3
    eq5 = (x5 - x2) - (a - x4)
    eq6 = (x5 - x2) - (y4 - y1)

    # 小正方形について
    eq7 = (b - y5) - (x6 - x3)
    eq8 = (b - y5) - (y6 - y4)
    eq9 = (b - y5) - (a - x4)

    # 内包する長方形について
    eq10 = x2 - (b - y2)
    eq11 = (a - x2) - y4
    eq12 = (a - x3) - (b - y4);

res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9, eq10, eq11, eq12],
     (x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6))

小正方形の一辺の長さは,二点 \(H: (a,\ y_5)\)  と \( I:(x_6,\ b) \)を結ぶ線分の長さ \(\sqrt{ (a - x_6)^2 + (y_5 - b)^2} = \sqrt{13a^2 - 24a b + 13b^2}/5\) である。
たとえば,\(a = 11,\ b = 10\) のとき,\(3.0528675044947495\) である。

a = 11
b = 10
x6 = 7*a/5 - 3*b/5
y5 = -3*a/5 + 7*b/5
sqrt(13a^2 - 24a*b + 13b^2)/5

    3.0528675044947495

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

function draw(a, b, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    x1 = -2*a/5 + 3*b/5
    x2 = 6*a/5 - 4*b/5
    x3 = 4*a/5 - b/5
    x4 = 2*a/5 + 2*b/5
    x5 = 9*a/5 - 6*b/5
    x6 = 7*a/5 - 3*b/5
    y1 = -4*a/5 + 6*b/5
    y2 = -6*a/5 + 9*b/5
    y3 = 3*a/5 - 2*b/5
    y4 = -a/5 + 4*b/5
    y5 = -3*a/5 + 7*b/5
    y6 = 2*a/5 + 2*b/5
    len = sqrt(13a^2 - 24a*b + 13b^2)/5
    @printf("長方形の長辺,短辺が %g, %g のとき,小正方形の一辺の長さ(IH)は %g である。\n", a, b, len)
    @printf("A = (%g, %g)\n", 0, y2)
    @printf("B = (%g, %g)\n", x2, y1)
    @printf("C = (%g, %g)\n", x3, y6)
    @printf("D = (%g, %g)\n", x1, b)
    @printf("E = (%g, %g)\n", x5, 0)
    @printf("F = (%g, %g)\n", a, y3)
    @printf("G = (%g, %g)\n", x4, y4)
    @printf("H = (%g, %g)\n", a, y5)
    @printf("I = (%g, %g)\n", x6, b)
    plot([0, a, a, 0, 0], [0, 0, b, b, 0], color=:brown, lw=0.5)
    plot!([0, x2, x3, x1, 0], [y2, y1, y6, b, y2], color=:green, lw=0.5)
    plot!([x2, x5, a, x4, x2], [y1, 0, y3, y4, y1], color=:red, lw=0.5)
    plot!([x4, a, x6, x3, x4], [y4, y5, b, y6, y4], color=:blue, 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(0, y2, " A", :green, :left, delta=-delta)
        point(x2, y1, "B ", :green, :right, delta=-delta)
        point(x3, y6, " C", :green, :left, :vcenter)
        point(x1, b, " D", :green, :left, delta=-delta)
        point(x5, 0, "E", :green, :left, :bottom, delta=delta)
        point(a, y3, " F", :green, :left, :vcenter)
        point(x4, y4, "G", :green, :right, delta=-delta)
        point(a, y5, " H", :green, :left, :vcenter)
        point(x6, b, "I", :green, :right, delta=-delta)
        point(a, b, "(a,b)", :brown, :right, :bottom, delta=delta)
    end
end;

draw(11, 10, true)


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




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

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