裏 RjpWiki

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

算額(その332)

2023年07月16日 | Julia

算額(その332)

石川県能登町 白山神社
【算額に挑戦】石川県の算額 ―その2―
http://blog.livedoor.jp/enjoy_math/archives/51206109.html

直線上に甲円と乙円が載っており,互いに接している。
大円と小円も同じ直線上にあり,互いに接している。
また,甲円と大円,乙円と小円も互いに接している。
甲円,乙円,大円の直径がそれぞれ 64寸,54寸,11寸のとき,小円の直径を求めよ。

甲円の直径,中心座標を r1, (0, r1)
乙円の直径,中心座標を r2, (x2, r2)
大円の直径,中心座標を r3, (x3, r3)
小円の直径,中心座標を r4, (x4, r4)
とおき,以下の連立方程式を解く。
なお,同一直線に載っている2つの円 r1, r2 の中心間の水平距離は 2√(r1*r2) なので,eq1 は見かけは長ったらしいが実際には x2^2 = 3456 という式になっている。ほかも同様である。

include("julia-source.txt");

using SymPy

@syms r1::positive, r2::positive, x2::positive,
     r3::positive, x3::positive, r4::positive, x4::positive;
#@syms r1, r2, x2, r3, x3, r4, x4;
(r1, r2, r3) = (64, 54, 11) .// 2
eq1 = x2^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = x3^2 + (r1 - r3)^2 - (r1 + r3)^2
eq3 = (x2 - x4)^2 + (r2 - r4)^2 - (r2 + r4)^2
eq4 = (x4 - x3)^2 + (r3 - r4)^2 - (r3 + r4)^2
res = solve([eq1, eq2, eq3, eq4], (x2, x3, r4, x4))

   1-element Vector{NTuple{4, Sym}}:
    (24*(18 - sqrt(66))/sqrt(65 - 6*sqrt(66)), 8*(-11 + 3*sqrt(66))/sqrt(65 - 6*sqrt(66)), 211232/1849 - 24960*sqrt(66)/1849, 48*sqrt(4290/1849 - 396*sqrt(66)/1849))

それぞれの式は,必要に応じて分母の有理化や二重根号を外すなどで簡約化できる場合もある。

@syms dummy
apart(res[1][1], dummy) |> sympy.sqrtdenest |> simplify |> println
apart(res[1][2], dummy) |> sympy.sqrtdenest |> simplify |> println
apart(res[1][3], dummy) |> println
apart(res[1][4], dummy) |> sympy.sqrtdenest |> simplify |> println

   24*sqrt(6)
   8*sqrt(11)
   211232/1849 - 24960*sqrt(66)/1849
   -528*sqrt(6)/43 + 864*sqrt(11)/43

小円の直径は 2(211232 - 24960*sqrt(66))/1849 = 9.146567247470445 である

2(211232 - 24960*sqrt(66))/1849

   9.146567247470445

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2, r3) = (64, 54, 11) .// 2
   x2 = 24*sqrt(6)
   x3 = 8*sqrt(11)
   r4 = 211232/1849 - 24960*sqrt(66)/1849
   x4 = -528*sqrt(6)/43 + 864*sqrt(11)/43
   @printf("小円の直径 = %.6f\n", 2r4)
   plot()
   circle(0, r1, r1)
   circle(x2, r2, r2, :blue)
   circle(x3, r3, r3, :green)
   circle(x4, r4, r4, :orange)
   if more
       point(0, r1, " 甲円\n r1", :red, :left, :vcenter)
       point(x2, r2, " 乙円:r2\n (x2,r2)", :blue, :left, :vcenter)
       point(x3, r3, " 大円:r3   \n(x3,r3)   ", :green, :right, :bottom)
       point(x4, r4, "    小円:r4,(x4,r4)", :orange, :left, :bottom)
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;

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

算額(その331)

2023年07月16日 | Julia

算額(その331)

静岡県磐田市蒲田 医王寺 安永8年(1779)
http://www.wasan.jp/sizuoka/ioji2.html
数学者による和算額の内容解析
https://www.iouji.net/wp-content/uploads/sugaku.pdf

長方形 ABCD があり,線分 BE の二乗と 平(AB) の和が 237 寸,AF は 13寸6分,FC は 3寸4分である。長方形の二辺の長さ(平と長)はいかほどか。

AB,BC,CE の長さを a, c, e とおき,直線の交点 F の座標を (x, y) とする。
以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

@syms a::positive, c::positive, e::positive,
     x::positive, y::positive;
eq1 = (c^2 + e^2) + a - 237
eq2 = (a - y)^2 + x^2 - 13.6^2
eq3 = (c - x)^2 + y^2 - 3.4^2
eq4 = y/e - 13.6/17
eq5 = a^2 + c^2 - 17^2;
res = solve([eq1, eq2, eq3, eq4, eq5], (a, c, e, x, y))

   1-element Vector{NTuple{5, Sym}}:
    (8.00000000000000, 15.0000000000000, 2.00000000000000, 12.0000000000000, 1.60000000000000)

長方形の縦,横の長さは 8寸,15寸である。

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (a, c, e, x, y) = (8, 15, 2, 12, 1.6)
   @printf("平 = %d;  長 = %d;  e = %d;  x = %d;  y = %.1f\n", a, c, e, x, y)
   plot([0, c, c, 0, 0], [0, 0, a, a, 0], color=:black, lw=0.5)
   segment(0, a, c, 0, :blue)
   segment(0, 0, c, e, :red)
   if more
       point(x, y, "(x,y)\n", :green, :center, :bottom)
       point(0, a, " a", :black, :left, :bottom)
       point(c, 0, " c", :black, :left, :bottom)
       point(c, e, " e", :black, :left, :bottom)
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;

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

算額(その330)

2023年07月16日 | Julia

算額(その330)

静岡県磐田市蒲田 医王寺 安永8年(1779)
http://www.wasan.jp/sizuoka/ioji2.html
【算額に挑戦】静岡県の算額 ―その1―
http://blog.livedoor.jp/enjoy_math/archives/cat_50038397.html
数学者による和算額の内容解析
https://www.iouji.net/wp-content/uploads/sugaku.pdf

鈎股弦(直角三角形)内に界弦(斜線;図の青線)を引き,二分割された各領域それぞれに直径が同じ円を入れる。円は鈎,股,弦(全弦),界弦に接している。弦は界弦より 7 寸長く,鈎は 8 寸である。このとき,界弦,股,弦,円の直径を求めよ。

界弦と股の交点の x 座標を a,右側の円の中心の x 座標を x とおく。以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

@syms 鉤::positive, 股::positive, 全弦::positive,
     界弦::positive, r::positive, a::positive,
     x::positive, dummy;

鉤 = 8
eq1 = 全弦 - 界弦 - 7
eq2 = 鉤^2 + a^2 - 界弦^2 
eq3 = 鉤 + a - 界弦 - 2r
eq4 = 鉤^2 + 股^2 - 全弦^2
eq6 = numerator(apart(distance(0, 鉤, a, 0, x, r) - r^2, dummy))
eq7 = (界弦 + (股 - a) + 全弦)r - (股 - a)*鉤;

解を求める変数の指定順によっては(一定の時間内に)解が求まらないこともあるので注意。

二番目の組のものが適解である。

res = solve([eq1, eq2, eq3, eq4, eq6, eq7], (股, 全弦, 界弦, r, a, x))

   2-element Vector{NTuple{6, Sym}}:
    (15, 17, 10, 2, 6, 2)
    (15, 17, 10, 2, 6, 7)

股 = 15;  全弦 = 17;  界弦 = 10;  円の直径 = 2;  a = 6;  x = 7

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (股, 全弦, 界弦, r, a, x) = (15, 17, 10, 2, 6, 7)
   @printf("股 = %d;  全弦 = %d;  界弦 = %d;  円の直径 = %d;  a = %d;  x = %d\n",
       股, 全弦, 界弦, r, a, x)
   plot([0, 股, 0, 0], [0, 0, 鉤, 0], color=:black, lw=0.5)
   circle(r, r, r)
   circle(x, r, r)
   segment(0, 鉤, a, 0, :blue)
   if more
       point(a, 0, " a", :blue)
       point(股, 0, " 股", :black)
       point(0, 鉤, " 鉤", :black, :left, :bottom)
       point(r, r, " (r,r)", :red)
       point(x, r, " (x,r)", :red)
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
       plot!(ylims=(-0.6, 8.5))
   else
       plot!(showaxis=false)
   end
end;

 

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

算額(その329)

2023年07月16日 | Julia

算額(その329)

四二 浦和市西堀(現さいたま市桜区西堀) 氷川神社 嘉永5年(1852)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

埼玉県浦和市西堀 氷川神社 嘉永5年(文化9年の算額の修復)
http://www.wasan.jp/saitama/uhikawa.html

正三角形の中に大円,中円,小円が入っている。中円の直径が520寸であるとき,小円の直径を求めよ。

正三角形の一辺の長さを 2a とする。座標原点を正三角形の「底辺/2」に置く。
大円の半径,中心座標は a/√3,(0, a/√3)
中円の半径,中心座標を r2, (x2, r2)
小円の半径,中心座標を r3, (x3, r3)
とおき,連立方程式を a を未知数のまま r2, x2, r3, x3 について解く。

include("julia-source.txt");

using SymPy

@syms a::positive, r2::positive, x2::positive, r3::positive, x3::positive;

r1 = a/sqrt(Sym(3))
eq1 = r2/(a - x2) - 1/sqrt(Sym(3))
eq2 = x2^2 + (r1 - r2)^2 - (r1 + r2)^2
eq3 = (x2 - x3)^2 + (r2 - r3)^2 - (r2 + r3)^2
eq4 = x3^2 + (r1 - r3)^2 - (r1 + r3)^2

res = solve([eq1, eq2, eq3, eq4], (a, x2, r3, x3))

   2-element Vector{NTuple{4, Sym}}:
    (3*sqrt(3)*r2, 2*sqrt(3)*r2, 3*r2*(2 - sqrt(3))/2, 3*r2*(-1 + sqrt(3)))
    (3*sqrt(3)*r2, 2*sqrt(3)*r2, 3*r2*(sqrt(3) + 2)/2, 3*r2*(1 + sqrt(3)))

最初のものが適解である。

r2 = 520
3*r2*(2 - sqrt(3))/2

   209.0003700962758

中円の直径が 520寸のとき,小円の直径は 209寸あまりである。
算額の答えは 109寸あまりということであるが,記載誤りである。

   大円径 = 1560; 中円径 = 520; 小円径 = 209

using Plots

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r2 = 520/2
   (a, x2, r3, x3) = (3*sqrt(3)*r2, 2*sqrt(3)*r2, 3*r2*(2 - sqrt(3))/2, 3*r2*(-1 + sqrt(3)))
   r1 = a/√3
   @printf("大円径 = %g;  中円径 = %g;  小円径 = %g\n", 2r1, 2r2, 2r3)
   plot([a, 0, -a, a], [0, a*sqrt(3), 0, 0], color=:black, lw=0.5)
   circle(0, r1, r1)
   circle(x2, r2, r2, :blue)
   circle(x3, r3, r3, :green)
   if more
       point(0, r1, " 大円:r1,(0,r1)", :red, :vcenter, :left)
       point(x2, r2, "中円:r2,(x2,r2) ", :blue, :right, :vcenter)
       point(x3, r3, " 小円:r3,(x3,r3)", :green, :left, :vcenter)
       point(a, 0, "a", :black, :left, :bottom)
       point(0, √3a, " (0,√3a)", :black)
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;

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

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

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