九十六 岩手県大船渡市立根町 気仙安養寺稲荷堂 文政5年(1822)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市. http://www.wasan.jp/yamamura/yamamura.html
キーワード:円4個,直角三角形,正方形
#Julia #SymPy #算額 #和算 #数学
正方形の中に直角三角形と,甲円,乙円,丙円,丁円を容れる。正方形の一辺の長さが 2 寸のとき,4 個の円の和はいかほどか。正方形の一辺の長さは弦(直角三角形の斜辺)の 4/5 である。

最後の一文は,条件なのかヒントなのか?
正方形の一辺の和を \(a\)
正方形の辺上にある正三角形の頂点座標を \( (b, a), (0, c)\)
直角三角形の 3 辺の長さを \(ab, bc, ca\)
甲円の半径と中心座標を \(r_1, (a - r_1, a - r_1)\)
乙円の半径と中心座標を \(r_2, (r_2, r_2)\)
丙円の半径と中心座標を \(r_3, (x_3, y_3)\)
丁円の半径と中心座標を \(r_4, (r_4, a - r_4)\)
とおき,以下の連立方程式を解く。
11 元連立方程式であるが,eq1〜eq9 までの条件式は簡単なものなので,SymPy でも簡単に 9 元連立方程式の解 \(b, c, ab, bc, ca, r_1, r_2, r_3, r_4\) を求めることができる。
残るパラメータ \(x_3, y_3\) は eq10, eq11 の連立方程式を解けばよい。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms a::positive, b::positive, c::positive,
ab::positive, bc::positive, ca::positive,
r1::positive, r2::positive, r3::positive, r4::positive,
x3::positive, y3::positive;
eq1 = bc^2 + ca^2 - ab^2
eq2 = (a - b) + a - ab - 2r1
eq3 = c + a - ca - 2r2
eq4 = bc + ca - ab - 2r3
eq5 = b + (a - c) - bc - 2r4
eq6 = ( (a - b) + a + ab)*r1 + (c + a + ca)*r2 + ( bc + ca + ab)*r3 + (b + (a - c) + bc)*r4 - 2a^2
eq6 = 4ab/5 - a
eq7 = (a - b)^2 + a^2 - ab^2
eq8 = c^2 + a^2 - ca^2
eq9 = b^2 + (a - c)^2 - bc^2
eq10 = dist2(a, 0, 0, c, x3, y3, r3)
eq11 = dist2(a, 0, b, a, x3, y3, r3)
res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9], (b, c, ab, bc, ca, r1, r2, r3, r4))[1]
(a/4, a/2, 5*a/4, sqrt(5)*a/4, sqrt(5)*a/2, a/4, a*(3 - sqrt(5))/4, a*(-5 + sqrt(5))/8 + sqrt(5)*a/4, a*(3/8 - sqrt(5)/8))
4 円の直径の和は \(2(r_1 + r_2 + r_3 + r_4) = 3a/2\) である。\(a = 2\) 寸のとき 4 円の和は 3 寸である。
2(res[6] + res[7] + res[8] + res[9]) |> simplify |> println
3*a/2
算額の解答はここまで。
以下は,図を描くために丙円の中心座標 \( (x_3, y_3\)) を求める。
\(b, c, r_3\) がわかると,\(x_3, y_3\) もわかる。
b = a/4
c = a/2
r3 = a*(-5 + sqrt(Sym(5)))/8 + sqrt(Sym(5))*a/4
eq10 = dist(a, 0, 0, c, x3, y3) - r3^2
eq11 = dist(a, 0, b, a, x3, y3) - r3^2
(x3, y3) = solve([eq10, eq11], (x3, y3))[2];
\(x_3, y_3\) は短く簡約化できる。
@syms d
apart(x3) |> println
a*(9/8 - 3*sqrt(5)/8)
y3 |> simplify |> sympy.sqrtdenest |> println
a*(7 - sqrt(5))/8
描画関数プログラムのソースを見る
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
a = 2
(b, c, ab, bc, ca, r1, r2, r3, r4) = a .* (1/4, 1/2, 5/4, √5/4, √5/2, 1/4, (3 - √5)/4, (√5 - 5)/8 + √5/4, (3 - √5)/8)
(x3, y3) = a .* ( (9 - 3√5)/8, (7 - √5)/8)
plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:green, lw=0.5)
plot!([0, a, b, 0], [c, 0, a, c], color=:blue, lw=0.5)
circle(a - r1, a - r1, r1)
circle(r2, r2, r2, :green)
circle(x3, y3, r3, :magenta)
circle(r4, a - r4, r4, :purple)
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(a, 0, " a", :green, :left, :bottom, delta=delta/2)
point(b, a, " (b,a)", :green, :center, :bottom, delta=delta/2)
point(0, c, "c ", :green, :right, :vcenter)
point(a - r1, a - r1, "甲円:r1,(a-r1,a-r1)", :red, :center, delta=-delta/2)
point(r2, r2, "乙円:r2,(r2,r2)", :green, :center, delta=-delta/2)
point(x3, y3, "丙円:r3,(x3,y3)", :magenta, :center, delta=-delta/2)
point(r4, a - r4, "丁円:r4\n(r4,a-r4)", :purple, :center, :bottom, delta=delta/2)
plot!(xlims=(-4delta, a + 3delta))
end
end;</p
以下のアイコンをクリックして応援してください