裏 RjpWiki

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

算額(その21)

2022年11月12日 | Julia

算額(その21)

半径が同じ 2 つの半円と,大円,中円,小円がが図のように配置されている。それぞれの円の半径を求めよ。

福島県田村郡三春町御木沢 厳島神社 明治 18 年
http://www.wasan.jp/fukusima/miharuitukusima3.html

半円の半径を 1 とする。そのほかに必要とする座標は図に示すとおりである。

using SymPy

@syms r1::positive, r2::positive, y1::positive;

以下の 3 式を立て,解く

eq1 =(1 - r1)^2 + y1^2 - (1 + r1)^2;
eq2 = r2^2 + y1^2 - (1 - r2)^2;
eq3 = y1^2 + y1^2 - 1;

res = solve([eq1, eq2, eq3], (r1, r2, y1))

   1-element Vector{Tuple{Sym, Sym, Sym}}:
    (1/8, 1/4, sqrt(2)/2)

name = ["r1", "r2", "y1"]
for i in 1:3
   println("$(name[i]) = $(simplify(res[1][i])) = $(res[1][i].evalf())")
end

   r1 = 1/8 = 0.125000000000000
   r2 = 1/4 = 0.250000000000000
   y1 = sqrt(2)/2 = 0.707106781186548

using Plots

function circle(ox, oy, r, color=:red; beginangle=0, endangle=360)
   θ = beginangle:0.1:endangle
   x = r.*cosd.(θ)
   y = r.*sind.(θ)
   plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5)
end;

function point(x, y, string="", color=:green, position=:left, vertical=:top)
   scatter!([x], [y], color=color, markerstrokewidth=0)
   annotate!(x, y, text(string, 10, position, color, vertical))
end;

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2, y1) = (1/8, 1/4, sqrt(2)/2)
   println("r1 = $r1,  r2 = $r2,  y1 = $y1")
   plot()
   circle(0, 0, 1, beginangle=0, endangle=180)
   circle(0, 2y1, 1, beginangle=180, endangle=360)
   circle(0, y1, y1, :blue)
   circle( r2, y1, r2, :green)
   circle(-r2, y1, r2, :green)
   circle(1 - r1, y1, r1, :brown)
   circle(r1 - 1, y1, r1, :brown)
   plot!([-1, 1, 1, -1, -1], [0, 0, 2y1, 2y1, 0], color=:black, linewidth=0.25)
   if more
       point(0, y1, "y1", :blue, :right)
       point(r2, y1, "(r2,y1)", :green, :center)
       point(y1, y1, "(y1,y1)", :red, :center)
       point(1 - r1, y1, "(1-r1,y1)", :brown, :left)
       hline!([y1], color=:black, linewidth=0.25)
       vline!([0], color=:black, linewidth=0.25)
   end
end;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村