裏 RjpWiki

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

算額(その949)

2024年05月12日 | Julia

算額(その949)

一〇八 加須市騎西町 玉敷神社 大正4年(1915)

埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

外円の中に中円 1 個,小円 5 個が入っている。小円の直径が 1 寸のとき,外円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
中円の半径と中心座標を r1, (0, R - r1); r1 = 2r2
小円の半径と中心座標を r2, (x2, y2), (0, R - 2r1 - r2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

@syms R::positive, r1::positive, r2::positive,
     x2::positive, y2::negative
r1 = 2r2
eq1 = x2^2 + y2^2 - (R - r2)^2
eq2 = x2^2 + (R - r1 - y2)^2 - (r1 + r2)^2
eq3 = x2^2 + (y2 - (R - 2r1 - r2))^2 - 4r2^2;
res = solve([eq1, eq2, eq3], (R, x2, y2))[1]

   (16*r2/5, 4*sqrt(2)*r2/3, -17*r2/15)

外円の半径は小円の半径の 16/5 倍である。
小円の直径が 1 寸のとき,外円の直径は 16/5 = 3.2 寸である。
その他のパラメータは以下のとおりである。
r1 = 1;  r2 = 0.5;  x2 = 0.942809;  y2 = -0.566667

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r2 = 1/2
   (R, x2, y2) = (16*r2/5, 4*sqrt(2)*r2/3, -17*r2/15)
   r1 = 2r2
   @printf("小円の直径が %g 寸のとき,外円の直径は %g 寸である。\n", 2r1, 2R)
   @printf("r1 = %g;  r2 = %g;  x2 = %g;  y2 = %g\n", r1, r2, x2, y2)
   plot()
   circle(0, 0, R)
   circle(0, R - r1, r1, :green)
   circle2(r2, R - r1, r2, :blue)
   circle2(x2, y2, r2, :blue)
   circle(0, R - 2r1 - r2, r2, :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(0, R - r1, "中円:r1,(0,R-r1) ", :green, :right, :vcenter)
       point(x2, y2, "小円:r2,(x2,y2)", :blue, :center, delta=-delta/2)
       point(0, R - 2r1 - r2, "小円:r2\n(0,R-2r1-r2)", :blue, :center, delta=-delta/2)
       point(r2, R - r1, "小円:r2,(r2,R-r1)", :blue, :center, :bottom, delta=delta)
       point(0, R, " R", :red, :left, :bottom, delta=delta/2)
   end
end;

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

算額(その948)

2024年05月12日 | Julia

算額(その948)

一〇六 神川村新里 光明寺 大正3年(1914)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円5個

大円 2 個と中円 2 個に囲まれた小円がある。大円と中円の直径がそれぞれ 14 寸,7 寸のとき,小円の直径はいかほどか。

大円の半径と中心座標を r1, (r1,0)
中円の半径と中心座標を r2, (r2, y2)
小円の半径と中心座標を r3, (0, r3)
とおき,以下の連立方程式を解く。
SymPy で連立方程式を解くと,長い式になるし,y2 は有限な解ではないというとんでもないものになってしまうので,手動で解く。

include("julia-source.txt");

@syms r1::positive, r2::positive, y2::positive,
     r3::positive, y3::positive
eq1 = (r1 - r2)^2 + y2^2 - (r1 + r2)^2
eq2 = r1^2 + y3^2 - (r1 + r3)^2
eq3 = r2^2 + (y2 - y3)^2 - (r2 + r3)^2;
res = solve([eq1, eq2, eq3], (y2, r3, y3))

ans_y2 = solve(eq1, y2)[1]
ans_y2 |> println

   -2*sqrt(r1*r2)

eq3 = eq3(y2 => ans_y2)
ans_y3 = solve(eq3, y3)[1]
ans_y3 |> println

   -2*sqrt(r1*r2) - sqrt(r3*(2*r2 + r3))

eq2 = eq2(y3 => ans_y3)
ans_r3 = solve(eq2, r3)[1]
ans_r3 |> println

   2*(r1*r2*(r1 + r2) - 2*sqrt(2)*sqrt(r1^3*r2^3))/(r1^2 - 6*r1*r2 + r2^2)

r1, r2 が与えられたとき,r3, y3, y2 を求める式は以下のとおり。

(r1, r2) = (14, 7) ./ 2
r3 = 2(r1*r2*(r1 + r2) - 2sqrt(2*r1^3*r2^3))/(r1^2 - 6r1*r2 + r2^2)
y2 = 2sqrt(r1*r2)
y3 = y2 - sqrt(2r2*r3 + r3^2)
(r3, y2, y3)

   (2.0, 9.899494936611665, 5.656854249492381)

大円と中円の直径がそれぞれ 14 寸,7 寸のとき,小円の直径は 2 寸である。

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2) = (14, 7) ./ 2
   r3 = 2(r1*r2*(r1 + r2) - 2sqrt(2r1^3*r2^3))/(r1^2 - 6r1*r2 + r2^2)
   y2 = 2sqrt(r1*r2)
   y3 = y2 - sqrt(2r2*r3 + r3^2)
   @printf("大円と中円の直径がそれぞれ %g 寸,%g 寸のとき,小円の直径は %g 寸である。\n", 2r1, 2r2, 2r3)
   @printf("r1 = %g;  r2 = %g;  y2 = %g;  r3 = %g;  y3 = %g\n", r1, r2, y2, r3, y3)
   plot()
   circle2(r1, 0, r1)
   circle2(r2, y2, r2, :blue)
   circle(0, y3, r3, :green)
   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(r1, 0, "大円:r1,(r1,0)", :red, :center, delta=-delta/2)
       point(r2, y2, "中円:r2,(r2,y2)", :red, :center, delta=-delta/2)
       point(0, y3, "小円:r3,(0,y3)", :black, :left, delta=-delta/2)
   end
end;

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

算額(その947)

2024年05月12日 | Julia

算額(その947)

一〇六 神川村新里 光明寺 大正3年(1914)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円2個,直角三角形,斜線

直角三角形の中に斜線を引き,2 個の等円を入れる。鈎(高さ),股(底辺)がそれぞれ 8 寸,15 寸のとき,等円の直径はいかほどか。

鈎,股の長さを b, a
斜線と股の交点座標を (c, 0)
等円の半径と中心座標を r, (r, r), (x, r)
とおき,以下の連立方程式を解く。
SymPy では一括して解けないので,逐次解いていく。

include("julia-source.txt");

@syms a::positive, b::positive, c::positive,
     r::positive, x::positive
@syms a, b, c, r, x
eq2 = dist2(0, b, c, 0, x, r, r)
eq3 = dist2(0, b, a, 0, x, r, r)
eq4 = (b + c - 2r)^2 - (b^2 + c^2);
# res = solve([eq2, eq3, eq4], (c, r, x))

ans_c = solve(eq4, c)[1]
ans_c |> println

   2*r*(-b + r)/(-b + 2*r)

eq2 = eq2(c => ans_c) |> simplify |> numerator
eq2 = eq2/b |> simplify |> numerator;
ans_x = solve(eq2, x)[2] |> simplify
ans_x |> println

   r*(3*b^2 - 6*b*r + 4*r^2)/(b*(b - 2*r))

eq3 = eq3(x => ans_x) |> simplify |> numerator;
ans_r = solve(eq3, r)[3]
ans_r |> println

   b/2 - sqrt(-a*b/4 + b*sqrt(a^2 + b^2)/4)

与えられた a, b から,r, x, c を求める関係式

(a, b) = (15, 8)
r = (b - sqrt(b*(sqrt(a^2 + b^2) - a)))/2
x = r*(3b^2 - 6b*r + 4r^2)/(b*(b - 2r))
c = 2r*(r - b)/(2r - b)
(r, x, c)

   (2.0, 7.0, 6.0)

鈎,股がそれぞれ 8 寸,15 寸のとき,等円の半径は 2 寸(直径は 4 寸)である。

鈎 = 8;  股 = 15;  等円の直径 = 4;  r = 2;  x = 7;  c = 6

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (a, b) = (15, 8)
   r = (b - sqrt(b*(sqrt(a^2 + b^2) - a)))/2
   x = r*(3b^2 - 6b*r + 4r^2)/(b*(b - 2r))
   c = 2r*(r - b)/(2r - b)
   @printf("鈎 = %g;  股 = %g;  等円の直径 = %g;  r = %g;  x = %g;  c = %g\n", b, a, 2r, r, x, c)
   plot([0, a, 0, 0], [0, 0, b, 0], color=:black, lw=0.5)
   circle(r, r, r)
   circle(x, r, r)
   segment(0, b, c, 0, :green)
   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(x, r, "等円:r,(x,r)", :red, :center, delta=-delta/2)
       point(0, b, " b", :black, :left, :bottom, delta=delta/2)
       point(a, 0, " a", :black, :left, :bottom, delta=delta/2)
       point(c, 0, "c  ", :black, :right, :bottom, delta=delta/2)
   end
end;

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

算額(その946)

2024年05月12日 | ブログラミング

算額(その946)

一〇六 神川村新里 光明寺 大正3年(1914)

埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

日円,月円,地円,星円が互いに外接しあっている。日円,月円,地円の直径がそれぞれ 3 寸,2 寸,1 寸のとき,星円の直径はいかほどか。

日円の半径と中心座標を r1, (0, r1)
月円の半径と中心座標を 2r, (0, r1 + 2r4 + r2)
星円の半径と中心座標を r3, (x3, y3)
地円の半径と中心座標を r4, (0, r1 + r4)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

@syms r1::positive, r2::positive,
     r3::positive,  x3::positive, y3::positive,
     r4::positive
eq1 = x3^2 + y3^2 - (r1 + r3)^2
eq2 = x3^2 + (r1 + 2r4 + r2 - y3)^2 - (r2 + r3)^2
eq3 = x3^2 + (r1 + r4 - y3)^2 - (r4 + r3)^2
res = solve([eq1, eq2, eq3], (r3, x3, y3))[2]  # 2 of 2

   (r4*(r1 + r4)*(r2 + r4)/(r1*r2 - r4^2), 2*sqrt(r1)*sqrt(r2)*r4*sqrt(r1 + r4)*sqrt(r2 + r4)/(r1*r2 - r4^2), (r1^2*r2 + r1*r2*r4 - r2*r4^2 - r4^3)/(r1*r2 - r4^2))

星円の半径は r4*(r1 + r4)*(r2 + r4)/(r1*r2 - r4^2) である。
日円,月円,地円の直径がそれぞれ 3 寸,2 寸,1 寸のとき,星円の直径は 2.4 寸である。

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2, r4) = (3, 2, 1) ./ 2
   (r3, x3, y3) = (r4*(r1 + r4)*(r2 + r4)/(r1*r2 - r4^2), 2*sqrt(r1)*sqrt(r2)*r4*sqrt(r1 + r4)*sqrt(r2 + r4)/(r1*r2 - r4^2), (r1^2*r2 + r1*r2*r4 - r2*r4^2 - r4^3)/(r1*r2 - r4^2))
   @printf("日円,月円,地円の直径がそれぞれ %g 寸,%g 寸,%g 寸のとき,星円の直径は %g 寸である。\n", 2r1, 2r2, 2r4, 2r3)
   @printf("r1 = %g;  r2 = %g;  r4 = %g;  r3 = %g;  x3 = %g;  y3 = %g\n", r1, r2, r4, r3, x3, y3)
   plot()
   circle(0, 0, r1)
   circle(0, r1 + 2r4 + r2, r2, :blue)
   circle(0, r1 + r4, r4, :magenta)
   circle2(x3, y3, r3, :green)
   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, 0, "日円:r1,(0,0)", :red, :center, delta=-delta/2)
       point(0, r1 + 2r4 + r2, "月円:r2,(0,r1+2r4+r2)", :blue, :center, delta=-delta/2)
       point(0, r1 + r4, "地円:r4\n(0,r1+r4)", :magenta, :center, :bottom, delta=delta/2)
       point(x3, y3, "星円:r3,(x3,y3)", :green, :center, delta=-delta/2)
   end
end;

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

算額(その945)

2024年05月12日 | Julia

算額(その945)

一〇六 神川村新里 光明寺 大正3年(1914)

埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

半円(外円)内に小円 5 個を入れる。外円の直径が与えられたとき,小円の直径を求めよ。

外円の半径と中心座標を R, (0, 0)
小円の半径と中心座標を r, (0, r), (x1, y1),(x2,r)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

@syms R::positive, r::positive,
     x1::positive, x2::positive, y1::positive
eq1 = x1^2 + y1^2 - (R - r)^2
eq2 = x2^2 + r^2 - (R - r)^2
eq3 = x1^2 + (y1 - r)^2 - 4r^2
eq4 = (x2 - x1)^2 + (y1 - r)^2 - 4r^2
res = solve([eq1, eq2, eq3, eq4], (r, x1, x2, y1))

   1-element Vector{NTuple{4, Sym{PyCall.PyObject}}}:
    (R*(-1 + 2*sqrt(2))/7, R*sqrt(63 - 28*sqrt(2))/14, R*sqrt(9/7 - 4*sqrt(2)/7), R*(-5/14 + 5*sqrt(2)/7))

小円の半径は外円の半径の (2√2 - 1)/7 倍である。
外円の直径が 1 寸のとき,小円の直径は 0.2612038749637415 寸である。

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

R = 0.5;  r = 0.130602;  x1 = 0.17277;  x2 = 0.34554;  y1 = 0.326505

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   R = 1/2
   (r, x1, x2, y1) = (R*(-1 + 2*sqrt(2))/7, R*sqrt(63 - 28*sqrt(2))/14, R*sqrt(9/7 - 4*sqrt(2)/7), R*(-5/14 + 5*sqrt(2)/7))
   @printf("外円の直径が %g 寸のとき,小円の直径は %g 寸である。\n", 2R, 2r)
   @printf("R = %g;  r = %g;  x1 = %g;  x2 = %g;  y1 = %g\n", R, r, x1, x2, y1)
   plot()
   circle(0, 0, R, beginangle=0, endangle=180)
   circle2(x1, y1, r, :blue)
   circle2(x2, r, r, :blue)
   circle(0, r, r, :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(R, 0, " R", :red, :left, :bottom, delta=delta/2)
       point(0, r, "小円:r,(0,r)", :blue, :center, delta=-delta/2)
       point(x1, y1, "小円:r,(x1,y1)", :blue, :center, delta=-delta/2)
       point(x2, r, "小円:r,(x2,r)", :blue, :center, delta=-delta/2)
   end
end;

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

算額(その944)

2024年05月12日 | Julia

算額(その944)

一〇六 神川村新里 光明寺 大正3年(1914)

埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

正方形内に甲円 1 個,乙円 2 個,丙円 2 個を入れる。甲円の直径が与えられたとき,正方形の一辺の長さ,乙円,丙円の直径を求めよ。

算額(その293)の類題である。

正方形の一辺の長さを a
甲円の半径と中心座標を r1, (0, r1)
乙円の半径と中心座標を r2, (a - r2, 2a - r2); r2 = a/2
丙円の半径と中心座標を r3, (a - r3, r3)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

@syms a::positive, r1::positive, r2::positive, r3::positive
r2 = a/2
eq1 = (a - r2)^2 + (2a - r2 - r1)^2 - (r1 + r2)^2
eq2 = (a - r3)^2 + (r1 - r3)^2 - (r1 + r3)^2
res = solve([eq1, eq2], (a, r3))[1]  # 1 of 2

   (16*r1/9, 4*r1/9)

正方形の一辺の長さは甲円の直径の 16/9 倍,丙円の直径は甲円の直径の 4/9 倍である。
乙円の直径は甲円の直径の 8/9 倍である。

甲円の直径が 9 寸のとき,正方形の一辺の長さは 16 寸,丙円の直径は 4 寸,乙円の直径は 8 寸である。

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = 9/2
   (a, r3) = (16*r1/9, 4*r1/9)
   r2 = a/2
   @printf("甲円の直径が %g 寸のとき,正方形の一辺の長さは %g 寸,丙円の直径は %g 寸,乙円の直径は %g 寸である。\n", 2r1, 2a, 2r3, 2r2)
   @printf("r1 = %g;  a = %g;  r2 = %g;  r3 = %g\n", 2r1, 2a, 2r3, 2r2)
   plot([a, a, -a, -a, a], [0, 2a, 2a, 0, 0], color=:black, lw=0.5)
   circle(0, r1, r1)
   circle2(a - r2, 2a - r2, r2, :blue)
   circle2(a - r3, r3, r3, :green)
   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(a, 0, " a", :black, :left, :bottom, delta=delta/2)
       point(0, 2a, " 2a", :black, :left, :bottom, delta=delta/2)
       point(0, r1, "甲円:r1,(0,r1)", :red, :center, delta=-delta/2)
       point(a - r2, 2a - r2, "乙円:r2,(a-r2,2a-r2)", :blue, :center, delta=-delta/2)
       point(a - r3, r3, "丙円:r3,(a-r3,r3)", :green, :center, delta=-delta/2)
   end
end;

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

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

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