41 岩手県一関市滝沢字寺田下 熊野白山滝神社 文久元年(1861)
安富有恒:和算—岩手の現存算額のすべて,青磁社,東京都,1987.
http://www.wasan.jp/iwatenosangaku_yasutomi.pdf
キーワード:円7個,楕円,正三角形,正六角形
#Julia #SymPy #算額 #和算 #数学
大円と斜線 6 本で区分された領域に,小円 6 個,楕円 3 個を容れる。大円,小円の直径が 3 寸,1 寸のとき,楕円の長径はいかほどか。

算法助術の公式 97 を適用する。
⊿ABC に楕円が内接し,⊿ABC の底辺 BC と楕円の長軸が平行である。楕円の長軸,短軸をそれぞれ \(p, q, \text{BC} = a, \text{AC} = b, \text{AB} = c, \text{AH} = h\) とすると
\(-(b^2 - c^2)^2 h q^2 + (b^2 - c^2)^2 q^3 + a^4 h(2h - q)^2 - a^4 q (2h - q)^2 - a^2 h p^2(2h - q)^2 = 0 \)
が成り立つ。
大円の半径と中心座標を \(r_1, (0, 0)\)
小円の半径と中心座標を \(r_2, (0, r_1 + r_2), (0, r_2 - r_1)\)
\(q = 2r_2, h = r_1 + 2r_2, a = b = c = 2h/\sqrt{3}\) である。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms p, q, a, b, c, h
eq97 = -(b^2 - c^2)^2*h*q^2 + (b^2 - c^2)^2*q^3 + a^4*h*(2h - q)^2 - a^4*q*(2h - q)^2 - a^2*h*p^2*(2h - q)^2
\(q = 1, a = b = c = 5/\sqrt{3}, h = 2.5\) が既知で,\(p\) が未知なので,以下の方程式を解いて \(p = \sqrt{5} = 2.23606797749979\) を得る。
eq97_2 = eq97(q => 1, a =>5/√Sym(3), b => 5/√Sym(3), c => 5/√Sym(3), h => 25//10)
eq97_2 |> println
5000/3 - 1000*p^2/3
ans_p = solve(eq97_2, p)[2] # 2 of 2
ans_p |> println
ans_p.evalf() |> println
sqrt(5)
2.23606797749979
描画関数プログラムのソースを見る
function draw(more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
r1 = 3/2
r2 = 1/2
q = 1
a = b = c = 5/√3
h = 2.5
θ = 0:60:360
x = 5/√3 .*cosd.(θ)
y = 5/√3 .*sind.(θ)
plot()
# circle(0, 0, 5/√3)
ellipse(0, r1 + r2, √5/2, 1/2, color=:orange)
ellipse( (r1 + r2)*cosd(30), -(r1 + r2)*sind(30), √5/2, 1/2, φ=60, color=:orange)
ellipse(-(r1 + r2)*cosd(30), -(r1 + r2)*sind(30), √5/2, 1/2, φ=120, color=:orange)
circle(0, 0, r1, :blue)
rotate(0, r2 - r1, r2)
rotate(0, r1 + r2, r2)
for i = 1:3
j = i + 3
segment(x[i], y[i], x[i + 1], y[i + 1], :green)
segment(x[j], y[j], x[j + 1], y[j + 1], :green)
segment(x[i], y[i], x[i + 3], y[i + 3], :green)
end
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, r1, "r1", :blue, :center, delta=-delta)
point(0, r1 + r2, "r1+r2", :red, :center, delta=-delta)
end
end;
draw(true)
以下のアイコンをクリックして応援してください