五十六 花泉町金沢沼倉 沼倉熊野神社 天保14年(1843)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
キーワード:円2個,円弧,正三角形
#Julia #SymPy #算額 #和算 #数学
円弧の弦の上に大小の正三角形と等円を容れる。等円の直径が与えられたときに弦の長さを求めよ。

円弧がその一部である外円の半径と中心座標を \(R,\ (0,\ 0)\)
大きな正三角形,小さな正三角形の一辺の長さをそれぞれ \(2a,\ 2b\)
等円の半径と中心座標を \(r,\ (a,\ y_0 + 2r)\)
とおき,以下の連立方程式を解く。
求める弦の長さは \(2a + 4b\) である。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms a::positive, b::positive, R::positive,
r::positive, y0::positive, x::positive,
y::positive
y = y0 + 2r
eq1 = y0 + √Sym(3)a - R
eq2 = (a + 2b)^2 + y0^2 - R^2
eq3 = (a + b)^2 + (y0 + √Sym(3)b)^2 - R^2
eq4 = a^2 + y^2 - (R - r)^2
res = solve([eq1, eq2, eq3, eq4], (a, b, R, y0))[1]
(r*(sqrt(3) + sqrt(6))/2, r*(-sqrt(6) - sqrt(3))/4 + sqrt(15)*r*sqrt(2*sqrt(2) + 3)/4, 2*r*(1 + sqrt(2)), r*(1/2 + sqrt(2)/2))
弦の長さは \(2a + 4b\) なので,以下のように簡約化すると,等円の半径の \(\sqrt{15} + \sqrt{30}\) 倍である。
等円の直径が 1 寸のとき,弦の長さは \( (\sqrt{15} + \sqrt{30})/2 = 4.675104460629539\) である。
2res[1] + 4res[2] |> simplify |> sympy.sqrtdenest |> factor |> println
r*(sqrt(15) + sqrt(30))
術は \( \sqrt{(\sqrt{0.5} + 0.75)\cdot 15}\) で,0.5, 0.75 を分数として取り扱って簡約化すると以下のようにきれいな形になる。
つまり,\( (\sqrt{15} + \sqrt{30})/2\) で,前述した解析解と一致する。
sqrt( (sqrt(Sym(5)//10)+ 3//4)*15) |> simplify |> sympy.sqrtdenest |> factor |> println
(sqrt(15) + sqrt(30))/2
描画関数プログラムのソースを見る
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r = 1/2
(a, b, R, y0) = (r*(sqrt(3) + sqrt(6))/2, r*(-sqrt(6) - sqrt(3))/4 + sqrt(15)*r*sqrt(2*sqrt(2) + 3)/4, 2*r*(1 + sqrt(2)), r*(1/2 + sqrt(2)/2))
y = y0 + 2r
@printf("等円の直径が %g のとき,弦の長さは %.15g である。\n", 2r, 2a + 4b)
plot([a + 2b, -a - 2b, -a - b, -a, 0, a, a + b, a + 2b],
y0 .+ [0, 0, √3b, 0, √3a, 0, √3b, 0], color=:green, lw=0.5)
circle(0, 0, R, beginangle=-10, endangle=190)
circle2(a, y, 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(R, 0, " R", :red, :left, :bottom, delta=delta/2)
point(0, y0, " y0", :green, :left, delta=-delta/2)
point(a, y0, " (a,y0)", :green, :center, delta=-delta/2)
point(a+2b, y0, "(a+2b,y0)", :green, :right, delta=-delta/2)
point(0, y0 + √3a, " (0,y0+√3a)", :red, :center, :bottom, delta=delta/2)
point(a + b, y0 + √3b, "(a+b,y0+√3b)", :red, :left, :bottom, delta=delta/2)
point(a, y0+2r, "等円:r\n(a,y0+2r)", :blue, :center, delta=-delta/2)
plot!(xlims=(-R - 2delta, R+6delta))
end
end;
以下のアイコンをクリックして応援してください