裏 RjpWiki

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

算額(その781)

2024年03月15日 | Julia

算額(その781)

福島県白河市南湖 南湖神社 昭和58年(1983)
http://www.wasan.jp/fukusima/nanko.html

団扇の中に,2 個の大円が交差し,中円 3 個と小円 5 個が入っている。小円の直径が与えられたとき,団扇の直径を求めよ。

中円の中心点は団扇の直径の上にある。
中円の半径と中心座標を r2, (0, 0), (2r2, 0) とすれば,
大円の半径と中心座標は 2r2, (r2, 0), (-r2, 0)
団扇の半径と中心座標は 3r2, (0, 0) である。
小円の半径と中心座標を r3, (x3, y3)
とおき,以下の連立方程式を r2 を変数のまま解く。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive, r3::positive, x3::positive, y3::positive
R = 3r2
r1 = 2r2
eq1 = (x3 + r2)^2 + y3^2 - (r1 + r3)^2
eq2 = (2r2 - x3)^2 + y3^2 - (r2 + r3)^2
eq3 = r2^2 + (R - r3)^2 - (r1 + r3)^2
res = solve([eq1, eq2, eq3], (r3, x3, y3))[1]

   (3*r2/5, 6*r2/5, 4*sqrt(3)*r2/5)

r3 = 3r2/5 となり,小円の直径が中円の直径の 3/5 倍で,外円の直径が中円の直径の 3 倍であるから,外円の直径は小円の直径の 5 倍である。

中円の半径を 5 としたとき,その他のパラメータは以下のとおりである。

団扇の半径 = 15;  小円の半径 = 3;  大円の半径 = 10;  中円の半径 = 5;  x3 = 6;  y3 = 6.9282

x3 が小円の直径と等しくなる。

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r2 = 5  # 中円の半径を 5 として図を描く
   (r3, x3, y3) = (3*r2/5, 6*r2/5, 4*sqrt(3)*r2/5)
   R = 3r2
   r1 = 2r2
   @printf("団扇の直径は小円の直径の %g 倍である\n", R/r3)
   @printf("団扇の半径 = %g;  小円の半径 = %g;  大円の半径 = %g;  中円の半径 = %g;  x3 = %g;  y3 = %g\n", R, r3, r1, r2, x3, y3)
   plot()
   circle(0, 0, R)
   circle2(r2, 0, r1, :blue)
   circle(0, 0, r2)
   circle2(2r2, 0, r2)
   circle4(x3, y3, r3, :green)
   circle(0, R - 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(-r2, 0, " -r2", :red, :left, :bottom, delta=delta/2)
       point(r2, 0, " r2", :red, :left, :bottom, delta=delta/2)
       point(x3, y3, " 小円:r3\n(x3,y3)", :green, :center, delta=-delta/2)
       point(0, R - r3, " 小円:r3\n(0,R-r3)", :green, :center, delta=-delta/2)
   end
end;

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

算額(その780)

2024年03月15日 | Julia

算額(その780)

「祠刹匾掲算法(しさつへんけいさんぽう)第2巻」
武州阿佐个谷神明宮所掲者一事 文政11年戊子二月
關流六傅馬場小太郎正統門人
東都个谷本村住 十三歳童 宮澤新太郎種秀

https://books.google.com.mx/books/about/%E7%A5%A0%E5%88%B9%E5%8C%BE%E6%8E%B2%E7%AE%97%E6%B3%95.html?id=6jXC08Qkm7kC

難問ぞろいの算術対決 #3
https://www.saigyo.org/blog/index.php?UID=1326517227

佐藤健一:「和算で遊ぼう」,かんき出版,121ページ
小説ドラマ映画漫画アニメを解析する マスメディアの中の数学 Mathematics in Mass Media
ドラマ 水戸黄門「難問ぞろいの算術対決」

https://hb1104.blogspot.com/2011/12/blog-post.html

交差する 2 個の大円と正方形,楕円,4 個の甲円,2個の乙円がある。
10 個の円の直径,正方形の一辺,楕円の長径を加えると 149 寸のとき,楕円の短径はいかほどか。

正方形の一辺の長さを 2a
楕円の長半径,短半径を a, b
大円の半径と中心座標を r1, (a + 2r3 - r1, 0)
甲円の半径と中心座標を r2, (r2, 0), (a - r2, y2)
乙円の半径と中心座標を r3, (a + r3, 0)
とおき,以下の連立方程式を解く。
「パラメータの和が 149」という条件も方程式の一つとして組み込む。これによって,換算しなくても楕円の短半径が得られる。

include("julia-source.txt");

using SymPy
@syms a::positive, b::positive, r1::positive, r2::positive, y2::positive, r3::positive
eq1 = (r1 - r2 - 2r3)^2 + y2^2 - (r1 - r2)^2
eq2 = (a^2 - b^2)*(b^2 - r2^2)/b^2 - r2^2  # 算法助術 公式84
eq3 = (r1 - 2r3)^2 + a^2 - r1^2
eq4 = (a - 2r2)^2 + y2^2 - 4r2^2
eq5 = 2a + 2r3 - 2r1  # 乙円
eq6 = 2(2r1 + 6r2 + 2r3) + 2a + 2a - 149  # 総和条件
res = solve([eq1, eq2, eq3, eq4, eq5, eq6], (a, b, r1, r2, y2, r3))

   2-element Vector{NTuple{6, Sym{PyCall.PyObject}}}:
    (745/74, 149*sqrt(5)/74, 3725/296, 149/37, 149*sqrt(15)/74, 745/296)
    (745/74, 149*sqrt(5)/37, 3725/296, 149/37, 149*sqrt(15)/74, 745/296)

2 組の解が得られるが,最初のものが適解である。得られるのは楕円の短半径なので,短径はそれを 2 倍したものである。

149*sqrt(5)/74*2

   9.004706179661316

よって,楕円の短径は 149*sqrt(5)/74*2 = 9.004706179661316 = 9寸有奇 である。

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

a = 10.0676;  b = 4.50235;  r1 = 12.5845;  r2 = 4.02703;  y2 = 7.7983;  r3 = 2.51689

function draw(more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (a, b, r1, r2, y2, r3) = (745/74, 149*sqrt(5)/74, 3725/296, 149/37, 149*sqrt(15)/74, 745/296)
  @printf("a = %g;  b = %g;  r1 = %g;  r2 = %g;  y2 = %g;  r3 = %g\n", a, b, r1, r2, y2, r3)
   plot([a, a, -a, -a, a], [-a, a, a, -a, -a], color=:black, lw=0.5)
   ellipse(0, 0, a, b, color=:magenta)
   circle2(a + 2r3 - r1, 0, r1)
   circle2(a + r3, 0, r3, :green)
   circle2(r2, 0, r2, :blue)
   circle4(a - r2, y2, 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(a + 2r3 - r1, 0, "a+2r3-r1", :red, :center, :bottom, delta=delta/2)
       point(r2, 0, "r2", :blue, :center, delta=-delta/2)
       point(a - r2, y2, "甲円:r2\n(a-r2,y2)", :blue, :center, delta=-delta/2)
       point(a + r3, 0, "乙円:r3\n(a+r2,0)", :green, :center, :bottom, delta=delta/2)
       point(a, a, "(a,a)", :black, :left, :bottom, delta=delta/2)
       point(0, b, "b", :magenta, :center, :bottom, delta=delta/2)
   end
end;

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

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

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