算額(その1512)
六十六 岩手県一関市花泉町金沢大柳 金沢八幡宮 明治29年(1896)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
今有如図 03080
https://w.atwiki.jp/sangaku/pages/318.html
キーワード:円2個,四分円2個,正三角形
#Julia, #SymPy, #算額, #和算
正三角形と四分円2個を組み合わせ,斜線を 2 本引き,隙間に円を容れる。正三角形の一辺の長さが与えられたとき,円の直径を求める術を述べよ。
正三角形の一辺の長さを 2a
円の半径と中心座標を r,(x, y)
とおき,以下の連立方程式を解く。
include("julia-source.txt")
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf
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)
println("正三角形の一辺の長さが $(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)
術は以下のようである。SymPy では,無理だ。
三角面 = 1
天 = 2 - √3
地 = √天/2 + 1
人 = 1 - √天/2
A = (1 - √0.5)/人
円径 = 4(2天 - A)*地*三角面
0.7086012510637592
※コメント投稿者のブログIDはブログ作成者のみに通知されます