以下の内容はhttps://sangaku0418.hatenablog.com/entry/2024/06/14/221923より取得しました。


算額(その1063)

九十五 大船渡市猪川町長谷堂 気仙長谷寺 文政5年(1822)

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


外円内に円弧を 2 個,甲円を 3 個,乙円を 4 個,丙円を 2 個容れる。丙円の直径が 8 寸のとき,乙円の直径はいかほどか。

外円の半径と中心座標を \(R, (0, 0)\)
甲円の半径と中心座標を \(r_1, (R - r_1)\)
乙円の半径と中心座標を \(r_2, (x_2, y_2)\)
丙円の半径と中心座標を \(r_3, (r_1 + r_3, 0)\)
弧がその一部分である円の半径と中心座標を \(r_0, (r_1 - r_0)\)
とおき,以下の連立方程式を解く。

なお,SymPy の能力上そのままでは解けないので,まず eq5 を解いて,\(r_0 = 5r_1\) を eq1, eq2 に代入し,4 元連立方程式を解く。

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

using SymPy
@syms R::positive, r0::positive, r1::positive,
     r2::positive, x2::positive, y2::positive,
     r3::positive
R = 3r1
eq1 = x2^2 + (y2 - r1 + r0)^2 - (r0 + r2)^2 |> expand
eq2 = (r1 + r3)^2 + (r1 - r0)^2 - (r0 - r3)^2 |> expand
eq3 = x2^2 + y2^2 - (R - r2)^2 |> expand
eq4 = x2^2 + (R - r1 - y2)^2 - (r1 + r2)^2 |> expand
eq5 = R^2 + (r1 - r0)^2 - r0^2 |> expand;

ans_r0 = solve(eq5, r0)[1]
ans_r0 |> println

   5*r1

eq1 = eq1(r0 => ans_r0)
eq1 |> println

   -9*r1^2 - 10*r1*r2 + 8*r1*y2 - r2^2 + x2^2 + y2^2

eq2 = eq2(r0 => ans_r0)
eq2 |> println

   -8*r1^2 + 12*r1*r3

res = solve([eq1, eq2, eq3, eq4], (r1, r2, x2, y2))[1]

   (3*r3/2, 9*r3/8, 9*sqrt(5)*r3/8, 9*r3/4)

乙円の半径 \(r_2\) は丙円の半径 \(r_3\) の 9/8 倍である。
丙円の直径が 8 寸のとき,乙円の直径は 9 寸である。

その他のパラメータは以下のとおりである。

   r3 = 4;  r1 = 6;  r2 = 4.5;  x2 = 10.0623;  y2 = 9;  r0 = 30

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

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r3 = 8/2
   (r1, r2, x2, y2) = (3*r3/2, 9*r3/8, 9*sqrt(5)*r3/8, 9*r3/4)
   r0 = 5r1
   R = 3r1
   @printf("丙円の直径が %g のとき,乙円の直径は %g である。\n", 2r3, 2r2)
   @printf("r3 = %g;  r1 = %g;  r2 = %g;  x2 = %g;  y2 = %g;  r0 = %g\n", r3, r1, r2, x2, y2, r0)
   plot()
   circle(0, 0, R, :magenta)
   circle22(0, R - r1, r1, :blue)
   circle(0, 0, r1, :blue)
   circle4(x2, y2, r2)
   circle2(r1 + r3, 0, r3, :green)
   θ = atand(r0 - r1, R)
   circle(0, r1 - r0, r0, :orange, beginangle=θ, endangle=180 - θ)
   circle(0, r0 - r1, r0, :orange, beginangle=180 + θ, endangle=360 - θ)
   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, R, " R", :green, :left, :bottom, delta=delta/2)
       point(r1, 0, "r1 ", :blue, :right, :bottom, delta=delta/2)
       point(0, R - r1, "甲円:r1,(0,R-r1)", :blue, :center, delta=-delta/2)
       point(x2, y2, "乙円:r2,(x2,y2)", :red, :center, delta=-delta/2)
       point(r1 + r3, 0, "丙円:r3\n(r1+r3,0)", :green, :center, delta=-delta/2)
       point(0, r1 - r0, "円弧の一部になる円:r0,(0,r1 - r0)", :black, :center, delta=-delta/2)
       plot!(ylims=(r1 - r0 - 5delta, R + 2delta))
   end
end;


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




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

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