裏 RjpWiki

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

算額(その789)

2024年03月18日 | Julia

算額(その789)

藤田貞資門人 東都 八木林平質 文化三年丙寅正月
藤田貞資(1807):続神壁算法

http://www.wasan.jp/jinpeki/zokujinpekisanpo.pdf

直角三角形の中に容円と 2 つの頂点を通る弧が入っている。容円は直角三角形の 2辺と接し,弧とも接している。直角を挟む二辺の短い方(鈎)と長い方(股)の長さがそれぞれ 9 寸,12 寸のとき,容円が最小であるときの直径を求めよ。

少し考えると,容円は大きくなる一方である。最小というのは0ではないが,暗黙のうちに,「弧と容円が図のような配置のとき」という条件がある。つまり,「弧は斜辺と 2 点で交わってはいけない」ということであり,斜辺と1点で交わるときは弧が薄くなっていけば容円は大きくなり続ける。弧が一番厚いのは,斜辺が弧の接線のときである。

鈎,股を a, b
弧がその一部である円の半径と中心座標を r1, (b/2, y1)
容円の半径と中心座標を r2, (r2, y2)
とおく。
斜辺が弧の接線であるということは,(b/2)/y1 = a/b ということである。
以下の連立方程式を解く。

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms a, b, r1::positive, y1::negative, r2::positive, y2::positive, d
(a, b) = (Sym(9), Sym(12))
y1 = -b^2/2a
eq1 = (b/2 - r2)^2 + (y2 - y1)^2 - (r1 + r2)^2
eq2 = b^2/4 + y1^2 - r1^2
eq3 = (sqrt(a^2 + b^2) +a)*r2 + y2*b - a*b
res = solve([eq1, eq2, eq3], (r1, r2, y2))

   1-element Vector{Tuple{Sym{PyCall.PyObject}, Sym{PyCall.PyObject}, Sym{PyCall.PyObject}}}:
    (10, 5/2, 4)

鈎,股の長さがそれぞれ 9 寸,12 寸のとき条件を満たすときの容円の直径の最小値は 5 寸である。

function draw(more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (a, b) = (9, 12)
   y1 = -b^2/2a
   (r1, r2, y2) = (10, 5/2, 4)
   plot([0, b, 0, 0], [0, 0, a, 0], color=:black, lw=0.5)
   circle(r2, y2, r2)
   θ = atand(-y1, b/2)
   circle(b/2, y1, r1, :blue, lw=0.2)
   circle(b/2, y1, r1, :blue, beginangle=θ, endangle=180 - θ, 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(b/2, y1, "(b/2,y1)", :blue, :center, delta=-delta/2)
       point(r2, y2, " 容円:r2,(r2,y2)", :red, :left, :vcenter)
       point(b, 0, " b", :black, :left, :bottom, delta=delta/2)
       point(0, a, " a", :black, :left, :bottom, delta=delta/2)
       plot!(ylims=(1.15y1, 10))
   end
end;


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

コメントを投稿

Julia」カテゴリの最新記事