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


算額(その1146)

一〇四 北足立郡桶川町加納 氷川天満神社 明治43年(1910)

埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円2個,直角三角形,正方形
#Julia #SymPy #算額 #和算 #数学


直角三角形の中に正方形と 2 個の円を容れる。鈎,股が 3 寸,4 寸のとき,正方形の一辺の長さと円の直径を求めよ。

正方形の一辺の長さを \(a\),円の直径を \(r\) とおき,以下の方程式を解く。

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

using SymPy

@syms 鈎::positive, 股::positive, a::positive, r::positive
eq1 = (鈎 - a)/a - 鈎/股
eq2 = 2a - sqrt(2a^2) - 2r;

まず,正方形の一辺の長さを求める。

\(a = \displaystyle \frac{股\cdot 鈎}{股 + 鈎}\) で,鈎,股が 3 寸, 4 寸のとき,正方形の一辺の長さは 1.71428571428571 寸である。

ans_a = solve(eq1, a)[1]
ans_a |> println
ans_a(鈎 => 3, 股 => 4).evalf() |>println

   股*鈎/(股 + 鈎)
   1.71428571428571

eq2 の \(a\) に代入し,方程式を解き \(r\) を求める。

\(r = \displaystyle \frac{ - 鈎 \cdot \left( \sqrt{2} \cdot 股 \cdot \sqrt{\frac{股^{2}}{\left( 股 + 鈎 \right)^{2}}} - 2 \cdot 股 + \sqrt{2} \cdot 鈎 \cdot \sqrt{\frac{股^{2}}{\left( 股 + 鈎 \right)^{2}}} \right)}{2 \cdot 股 + 2 \cdot 鈎}\)で,鈎,股が 3 寸, 4 寸のとき,円の直径は 1.00420532164612 寸である。

eq2 = eq2(a => ans_a);
ans_r = solve(eq2, r)[1] |> simplify
ans_r |> println
2ans_r(鈎 => 3, 股 => 4).evalf() |>println

   -鈎*(sqrt(2)*股*sqrt(股^2/(股 + 鈎)^2) - 2*股 + sqrt(2)*鈎*sqrt(股^2/(股 + 鈎)^2))/(2*股 + 2*鈎)
   1.00420532164612

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

function draw(鈎, 股, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   a = 股*鈎/(股 + 鈎)
   r = -鈎*(sqrt(2)*股*sqrt(股^2/(股 + 鈎)^2) - 2*股 + sqrt(2)*鈎*sqrt(股^2/(股 + 鈎)^2))/(2*股 + 2*鈎)
   @printf("鈎,股が %g,%g のとき,正方形の一辺の長さは %g,円の直径は %g である。\n", 鈎, 股, a, 2r)
   plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:blue, lw=0.5)
   plot!([0, a, a, 0, 0], [0, 0, a, a, 0], color=:green, lw=0.5)
   segment(0, a, a, 0, :magenta)
   circle(r, r, r)
   circle(a - r, a - r, r)
   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, " 股", :blue, :left, :bottom, delta=delta/2)
       point(a, 0, " a", :blue, :left, :bottom, delta=delta/2)
       point(0, 鈎, " 鈎", :blue, :left, :bottom, delta=delta/2)
       point(0, a, " a", :blue, :left, :bottom, delta=delta/2)
       point(r, r, "(r, r)", :red, :center, delta=-delta/2)
   end
end;


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




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

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