以下の内容はhttps://sangaku0418.hatenablog.com/entry/2024/04/07/213811より取得しました。


算額(その0840)

九十七 岩手県大船渡市猪川町 雨宝堂(現雨宝山竜宝院)   文政7年(1824)

山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市. http://www.wasan.jp/yamamura/yamamura.html
キーワード:円9個,外円
#Julia #SymPy #算額 #和算 #数学


大円内に中円 1 個,小円 7 個を容れる。すべての小円は大円に内接し,左右の一番下の小円は中円にも外接している。大円,小円の直径がそれぞれ 5 寸,1 寸のとき,中円の直径はいかほどか。

大円の半径と中心座標を \(R,\ (0,\ 0)\)
中円の半径と中心座標を \(r_1,\ (0,\ r_1 - R)\)
小円の半径と中心座標を \(r_2,\ (x_0,\ y_0),\ (x_1,\ y_1),\ (x_2,\ y_2),\ (x_3,\ y_3)\)
とおく。
注:小円の中心は大円の直径上にはない。

まず,隣り合う 2 個の小円の中心と大円の中心のなす角 \(2\theta\) を求める。 例えば, \( (x_0,\ y_0),\ (0,\ 0),\ (x_1,\ y_1)\)

include("julia-source.txt");  # julia-source.txt ソース

using SymPy

@syms R::positive, r1::positive, r2::positive, θ::positive;
(R, r2) = (5, 1) .// 2

eq1 = (R - r2)*sind(θ) - r2
θ = solve(eq1, θ)[1]
θ |> println

   180*asin(r2/(R - r2))/pi

右下端の小円の中心座標 \( (x_3,\ y_3)\) と中円が外接するという条件の方程式を解き,中円の半径を求める。

x3 = (R - r2)*cosd(90 - 6θ)
y3 = (R - r2)*sind(90 - 6θ)
eq2 = x3^2 + (y3 + (R - r1))^2 - (r1 + r2)^2;

res = solve(eq2, r1)[1]
res |> println

   2*R*(R - r2)*cos(3*asin(r2/(R - r2)))^2/(R*cos(6*asin(r2/(R - r2))) + R - r2*cos(6*asin(r2/(R - r2))) + r2)

   \(\displaystyle \frac{2 R \left( R - r2 \right) \cos^{2}\left( 3 \arcsin\left( \frac{r2}{R - r2} \right) \right)}{R \cos\left( 6 \arcsin\left( \frac{r2}{R - r2} \right) \right) + R - r2 \cos\left( 6 \arcsin\left( \frac{r2}{R - r2} \right) \right) + r2}\)

大円と小円の直径がそれぞれ 5 寸,1 寸のときに,中円の直径は 3.39195979899498 寸である。

2res(R => 5/2, r2 => 1/2) |> println

   3.39195979899498

術では 3 + 78/197 = 3.3959390862944163 になっているが,図に描く限り差は認められない。
小数点以下第 3 位の 5 が 1 の誤記かどうかはわからないが,結構よい近似値になっている。

3 + 78/197

   3.3959390862944163

描画関数プログラムのソースを見る

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (R, r2) = (5, 1) .// 2
   plot()
   circle(0, 0, R, :green)
   θ = 180*asin(1/4)/pi
   x = Vector{Float64}(undef, 4)
   y = Vector{Float64}(undef, 4)
   circle(0, R - r2, r2)
   for i in 2:4
       θ2 = 90 - (i - 1)*2θ
       x[i] = (R - r2)*cosd(θ2)
       y[i] = (R - r2)*sind(θ2)
       circle2(x[i], y[i], r2)
   end
   r1 = 10*cos(3*asin(1/4))^2/(2*cos(6*asin(1/4)) + 3)
   println("中円の直径 = ", 2r1)
   circle(0, r1 - R, r1, :blue)
   # r10 = (3 + 78/197)/2
   # circle(0, r10 - R, r10, :magenta)
   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)
       x3 = (R - r2)*cosd(90 - 6θ)
       y3 = (R - r2)*sind(90 - 6θ)
       point(0, R - r2, "小円:r2\n(x0,y0)", :red, :center, delta=-delta)
       point(x3, y3, "小円:r2\n(x3,y3)", :red, :center, delta=-delta)
       point(0, r1 - R, " 中円:r1,(0,r1-R)", :blue, :center, delta=-delta)
       point(0, R, "R", :green, :center, :bottom, delta=delta)
       point(R, 0, " R", :green, :left, :vcenter)
   end
end;


以下のアイコンをクリックして応援してください




以上の内容はhttps://sangaku0418.hatenablog.com/entry/2024/04/07/213811より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14