裏 RjpWiki

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

算額(その521)

2023年11月29日 | Julia

算額(その521)

岩手県一関市 菅原神社 嘉永3年(1850)
一関市博物館>>和算に挑戦>>平成19年度出題問題&解答例>>平成19年度出題問題(2)[中級問題]
https://www.city.ichinoseki.iwate.jp/museum/wasan/h19/normal.html

正方形の中に四分円 3 個と等円 2 個が入っている。等円の直径が 1 のとき,正方形の一辺の長さを求めよ。また,斜線部分の面積を求めよ。

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

include("julia-source.txt");

using SymPy
@syms a::positive, r::positive;
eq = (a/2)^2 + (a - r)^2 - (a + r)^2
solve(eq, a)[1] |> println

   16*r

r = 1/2 のとき,正方形の一辺の長さは 8 である。

求めるべき面積は A, B の和の 2 倍である。
A は半径 a の面積の 15/360 である。
B は半径 a の面積の 1/6 から,一辺の長さが a の正三角形の面積を差し引いたものである。

a = 8
A = PI*a^2*(15//360)
B = PI*a^2/6 - a*(a//2)√Sym(3)/2;

求める面積は (80π - 96√3)/3 = 28.3501782535237 である。

2(A + B) |> simplify |> println

   -32*sqrt(3) + 80*pi/3

2(A + B).evalf()

   28.3501782535237

function fill(a)
   x = vcat(a.*cosd.(270:330), [0])
   y = vcat(a.*sind.(270:330) .+ a, [0])
   plot!(x, y, color=:black, lw=0.5, seriestype=:shape, fillcolor=:blue, alpha=0.5)
   x = vcat(a.*cosd.(30:45), [0, cosd(30)])
   y = vcat(a.*sind.(30:45), [0, sind(30)])
   plot!(x, y, color=:black, lw=0.5, seriestype=:shape, fillcolor=:red, alpha=0.5)
end;

function draw(r, n, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (a, r) = (8, 1//2)
   @printf("正方形の一辺の長さ = %g;  等円の半径 = %g\n", a, r)
   plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:black, lw=0.5)
   circle(0, 0, a, beginangle=0, endangle=90)
   circle(a, 0, a, beginangle=90, endangle=180)
   circle(0, a, a, beginangle=270, endangle=360)
   circle(a/2, a-r, r, :brown)
   circle(a - r, a/2, r, :brown)
   fill(a)
   if more
       delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3  # size[2] * fontsize * 2
       hline!([0], color=:black, lw=0.5)
       vline!([0], color=:black, lw=0.5)
       point(0.5a, 0.24a, "A", :black, mark=false)
       point(0.5a, 0.4a, "B", :black, mark=false)
       point(a/2, a - r, " (a/2,a-r)", :black, :center, :bottom, delta=delta/2)
       point(a - r, a/2, " (a-r,a/2)", :black, :center, :bottom, delta=delta/2)
       point(a, 0, "a ", :black, :right, :bottom, delta=delta/2)
   end
end;

 

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

算額(その520)

2023年11月29日 | Julia

算額(その520)

岩手県一関市 観福寺 明治34年(1901)
一関市博物館>>和算に挑戦>>平成21年度出題問題&解答例>>平成21年度出題問題(2)[中級問題]

https://www.city.ichinoseki.iwate.jp/museum/wasan/h21/normal.html

大きさの同じ球を下段に7個,中段に3個,上段に1個,互いに接するように積み上げる。球の直径が 1 のとき,盤上から一番上の球の天辺までの高さを求めよ。

球の半径を r とする。最上段の 4 個の球の中心を結んでできる正四面体を考える。



x^2 + y^2 + z^2 = BA^2, y = r, x = y/√3, BA = 2r である。正四面体の高さは sqrt(x^2 + y^2 + z^2) - 2r を z について解けば求まる。
z = r*2√6/3 である。
下段の3個の球の中心を通る水平面と上の球の中心を通る水平面の距離は z である。
設問ではこの3個の球のそれぞれが上段になりその下にある3個が構成する同様の構造体がある。最下段の 7 個の球の中心とその上の3個の球の中心を通る2つお水平面の距離も z である。
最下段の中心を通る水平面と原点の距離は r,最上段の球の中心と天辺との距離も r である。
したがって,原点と最上段の球の天辺との距離は r + z + z + r = 2r(1 + 2√6/3)
r = 1/2 のとき,1 + 2√6/3 = 2.6329931618554516 である。

include("julia-source.txt");

using SymPy
@syms r::positive, x, y, z
y = r
x = y/sqrt(Sym(3))
eq = sqrt(x^2 + y^2 + z^2) - 2r
z = solve(eq, z)[2] |> simplify
z |> println

   2*sqrt(6)*r/3

2r + 2z |> simplify |> println

   2*r*(3 + 2*sqrt(6))/3

(2z + 2r)(r => 1//2) |> println

   1 + 2*sqrt(6)/3

1 + 2*sqrt(6)/3

   2.6329931618554516

 

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

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

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