裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

算額(その1146)

2024年07月15日 | Julia

算額(その1146)

一〇四 北足立郡桶川町加納 氷川天満神社 明治43年(1910)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円2個,直角三角形,正方形

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

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

include("julia-source.txt")

using SymPy

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

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

a = 股*鈎/(股 + 鈎) で,鈎,股が 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 = -鈎*(sqrt(2)*股*sqrt(股^2/(股 + 鈎)^2) - 2*股 + sqrt(2)*鈎*sqrt(股^2/(股 + 鈎)^2))/(2*股 + 2*鈎) で,鈎,股が 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;


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1145) | トップ |   
最新の画像もっと見る

コメントを投稿

Julia」カテゴリの最新記事