裏 RjpWiki

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

算額(その1090)

2024年06月24日 | Julia

算額(その1090)

四十三 岩手県一関市真滝 熊野白山滝神社 弘化3年(1846)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

キーワード:円3個,二等辺三角形,正方形

正方形の中に二等辺三角形と等円 3 個を容れる。等円の直径が与えられたとき,正方形の一辺の長さを求めよ。

正方形の一辺の長さを a,
正方形の辺の上にある二等辺三角形の頂点座標を (b, 0), (a - b, 0)
等円の半径と中心座標を r, (r, r), (a - r, r), (a - r, a - r)
とおき,以下の連立方程式を解く。

include("julia-source.txt")

using SymPy
@syms a::positive, b::positive, r::positive
eq1 = a + b - sqrt(a^2 + b^2) - 2r
eq2 = 2(a - b) - sqrt(2(a - b)^2) - 2r
res = solve([eq1, eq2], (a, b))[1]

   (2*r*(-sqrt(2) + sqrt(26 - 16*sqrt(2)) + 2*sqrt(13 - 8*sqrt(2)))/(-2 - sqrt(2) + sqrt(2)*sqrt(13 - 8*sqrt(2)) + 2*sqrt(13 - 8*sqrt(2))), r*(-sqrt(2) + sqrt(26 - 16*sqrt(2)) + 2 + 2*sqrt(13 - 8*sqrt(2)))/2)

t = sqrt(13 - 8√2) とおいて,
正方形の一辺の長さ a は r*(6 + √2 + (2 + √2)t)/2
斜線と正方形の一辺の交点座標 b は r*(2 - √2 + (2 + √2)t)/2
である。

等円の半径が 1/2 寸のとき,正方形の一辺の長さは 2.9619546674751045 寸である。

r = 1/2
t = sqrt(13 - 8√2)
r*(6 + √2 + (2 + √2)t)/2

   2.9619546674751045

「術」も正しい。

等円径 = 1
位 = (√2 + 6)
(sqrt(4位 -10) + 位)*等円径/4

   2.961954667475105

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


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

コメントを投稿

Julia」カテゴリの最新記事