番外七 埼玉県 奉納地不明 安政4年(1857)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円3個,弦,矢
#Julia #SymPy #算額 #和算 #数学
大円の中に水平な元と矢を設け,区画された領域に小円 2 個を容れる。矢と小円の直径の差が 1 寸のとき,大円の直径はいかほどか。
注:問,答,術に混乱があるが以上のように解釈し,解く。また,算額の図(下図)は矢と小円の直径の差が 0.05 寸ほどのときのものである。

大円の半径と中心座標を \(R,\ (0,\ 0)\)
小円の半径と中心座標を \(r,\ (r,\ y + r)\)
弦と \(y\) 軸の交点座標を \( (0,\ y)\)
矢は \(R - y\)
eq3 は「算法助術」の公式48
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms R, r, y, h, 矢, K
h = y + R
eq0 = 矢 - (R - y)
eq1 = (矢 - 2r) - K
eq2 = r^2 + (r + y)^2 - (R - r)^2
eq3 = r^2 + r*h - sqrt(R*2r^2);
res = solve([eq0, eq1, eq2, eq3], (R, 矢, r, y))[4] # 4 of 4
( (sqrt(K) + K)^2/(2*K), 2*sqrt(K) + K, sqrt(K), -sqrt(K) - K/2 + 1/2)
矢と小円の直径の差が 1 寸のとき,大円の直径は 4 である。
このときの図は,算額の図(上図)とはまるで様相が違う。

K = 1
2*(sqrt(K) + K)^2/(2*K)
4.0
ところで,矢と小円の直径の差が 0.05 のときに,算額の図と同じような図(最初の図)が描かれるが,大円の直径は 1.49721 である。
もし,この図を 1/0.05 = 20 倍にして描くと,矢と小円の直径は 1 になる。そのとき大円の直径は 29.9442 になる...
要するに,この問題は条件不足なのかな?
描画関数プログラムのソースを見る
function draw(K, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
(R, 矢, r, y) = ( (sqrt(K) + K)^2/(2*K), 2*sqrt(K) + K, sqrt(K), -sqrt(K) - K/2 + 1/2)
string = @sprintf("矢と小円の直径の差が %g のとき,\n大円の直径は %g である。\n(矢は %g,小円の直径は %g)\n", K, 2R, 矢, 2r)
println(string)
@printf("矢 = %g; r = %g; R = %g; y = %g\n", 矢, r, R, y)
plot()
circle(0, 0, R, :blue)
circle2(r, r + y, r, :green)
x = sqrt(R^2 - y^2)
segment(-x, y, x, y, :red)
segment(0, y, 0, R, :magenta, lw=1)
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, 0, "大円:R,(0,0)", :blue, :center, delta=-delta/2)
point(r, y + r, "小円:r,(r,y+r)", :green, :center, delta=-delta/2)
point(0, R, " R", :blue, :center, :bottom, delta=delta/2)
point(0, y, " y", :red, :center, delta=-delta/2)
point(0, (R + y)/2, "矢 ", :magenta, :right, delta=2delta, mark=false)
point(0, (y - R)/2, string, :black, :left, delta=-5delta, deltax=-20delta, mark=false)
end
end;
以下のアイコンをクリックして応援してください