裏 RjpWiki

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

算額(その738)

2024年02月29日 | Julia

算額(その738)

千葉県君津市鹿野山 神野寺 明治20年(1887)
山口正義:やまぶき4,第58号

https://yamabukiwasan.sakura.ne.jp/ymbk58.pdf

正三角形の中に菱形と円が入っている。正三角形の一辺の長さが 15 寸,円の直径が 4 寸 8 分のとき,菱形の一辺の長さはいかほどか。

正三角形の一辺の長さを 2c,円の半径と中心座標を r, (0, 2b + r)
菱形の対角線の長い方と短い方を 2a, 2b
円の半径と中心座標を r, (0, √3c ‐ 2b ‐ r)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms r::positive, a::positive, b::positive, c::positive
eq1 = (sqrt(Sym(3))c - 2b - r)/2 - r
eq2 = b/(c - a) - sqrt(Sym(3))
res = solve([eq1, eq2], (a, b))

   Dict{Sym{PyCall.PyObject}, Sym{PyCall.PyObject}} with 2 entries:
     b => sqrt(3)*c/2 - 3*r/2
     a => c/2 + sqrt(3)*r/2

菱形の一辺の長さ len は sqrt(a^2 + b^2) である。

len = sqrt(res[a]^2 + res[b]^2) |> simplify
len |> println

   sqrt(c^2 - sqrt(3)*c*r + 3*r^2)

@syms 正三角形の一辺の長さ, 円の直径
len2 = len(c => 正三角形の一辺の長さ/2, r => 円の直径/2) |> simplify
len2 |> println

   sqrt(3*円の直径^2 - sqrt(3)*円の直径*正三角形の一辺の長さ + 正三角形の一辺の長さ^2)/2

菱形の一辺の長さは「sqrt(3*円の直径^2 - sqrt(3)*円の直径*正三角形の一辺の長さ + 正三角形の一辺の長さ^2)/2」である。

正三角形の一辺の長さが 15 寸, 円の直径が 4.8 寸のとき,菱形の一辺の長さは 6.50792482007592 寸である。

その他のパラメータは以下のとおりである

   菱形の一辺の長さ = 6.50792;  対角線の長さ = 11.6569, 5.79038
   c = 7.5;  r = 2.4;  a = 5.82846;  b = 2.89519

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   c = 15//2
   r = 48//20
   a = (c + √3r)/2
   b = (√3c - 3r)/2
   len = sqrt(a^2 + b^2)
   @printf("菱形の一辺の長さ = %g;  対角線の長さ = %g, %g\n", len, 2a, 2b)
   @printf("c = %g;  r = %g;  a = %g;  b = %g\n", c, r, a ,b)
   plot([c, 0, -c, c], [0, √3c, 0, 0], color=:blue, lw=0.5)
   circle(0, 2b + r, r)
   plot!([0, a, 0, -a, 0], [0, b, 2b, b, 0], color=:green, lw=0.5)
   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, b, " b", :green, :left, :vcenter)
       point(0, √3c, " √3c", :blue, :left, :vcenter)
       point(0, 2b + r, " 2b+r", :red, :left, :vcenter)
       point(0, 2b, " 2b", :red, :center, :bottom, delta=delta/2)
       point(a, b, " (a,b)", :green, :left, :vcenter)
       point(c, 0, "c", :blue, :left, :bottom, delta=delta/2)
   end
end;

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

算額(その737)

2024年02月29日 | Julia

算額(その737)

千葉県君津市鹿野山 神野寺 明治20年(1887)
山口正義:やまぶき4,第58号

https://yamabukiwasan.sakura.ne.jp/ymbk58.pdf

今如圖有鉤股積八百四十零歩只言以股弦差除股弦和得商六個四分之一問鉤股弦各幾何
鈎股弦(直角三角形)において,鈎股積が 840 歩,股弦の差を股弦の和で割ると 6+1/4 になる。鈎股弦はいかほどか。

「鈎股積」は直角三角形の面積のこと,また当然であるが「股弦の差」は「弦 - 股」である。
以下の連立方程式を解く。

using SymPy
@syms 鈎::positive, 股::positive, 弦::positive
eq1 = 鈎^2 + 股^2 - 弦^2
eq2 = 鈎*股/2 - 840
eq3 = (股 + 弦)/(弦 - 股) - (6 + 1//4)
res = solve([eq1, eq2, eq3], (鈎, 股, 弦))

   1-element Vector{Tuple{Sym{PyCall.PyObject}, Sym{PyCall.PyObject}, Sym{PyCall.PyObject}}}:
    (40, 42, 58)

鈎 = 40 寸,股 = 42 寸,弦 = 58 寸である。

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

算額(その736)

2024年02月29日 | Julia

算額(その736)

千葉県君津市鹿野山 神野寺 明治20年(1887)
山口正義:やまぶき4,第58号

https://yamabukiwasan.sakura.ne.jp/ymbk58.pdf

半円 2 個と楕円が交差してできる領域に大円と小円をいれる。大円の直径が 6 寸のとき,小円の直径はいかほどか。

明示されていないが楕円の長径は半円の直径と等しいとする。
大円の半径を r1 とすると,半円の直径,楕円の長径は r4 である。
小円の半径と中心座標を r2, (0 2r1 - r2) とおいて,以下の方程式を解く。
見かけは派手な図形であるが,方程式 1 本で,答えもシンプル。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive
a = 2r1
b = 4r1
eq1 = (4r1)^2 + (b - 2r1 - r2)^2 - (r2 + 4r1)^2
res = solve(eq1, r2)

   1-element Vector{Sym{PyCall.PyObject}}:
    r1/3

小円の半径は大円の半径の 1/3 である。
大円の直径が 6 寸のとき,小円の直径は 2 寸である。

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = 6/2
   r2 = r1/3
   @printf("小円の直径 = %g\n", 2r2)
   plot()
   circle(4r1, 0, 4r1, :green, beginangle=90, endangle=270)
   segment(4r1, 4r1, 4r1, -4r1, :green)
   circle(-4r1, 0, 4r1, :green, beginangle=-90, endangle=90)
   segment(-4r1, 4r1, -4r1, -4r1, :green)
   circle42(0, 3r1, r1)
   circle4(r1, 0, r1)
   circle22(0, 2r1 - r2, r2, :magenta)
   ellipse(0, 0, 2r1, 4r1, color=:blue)
   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(4r1, 0, "4r1 ", :green, :right, :bottom, delta=delta/2)
       point(r1, 0, "r1", :green, :center, :bottom, delta=delta/2)
       point(0, 2r1 - r2, " 小円:r2,(0,2r1-r2)", :black, :left, :vcenter)
       point(0, 3r1, "大円:r1,(0,3r1)", :black, :center, :bottom, delta=delta)
   end
end;

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

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

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