裏 RjpWiki

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

算額(その2087)

2024年09月12日 | Julia

算額(その2087)

九十三 群馬県安中市板鼻 鷹巣神社 安政5年(1858)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円3個,面積

大中小の 3 円が互いに接している。3 円の直径が与えられたとき,黒積(中央部分の面積)はいかほどか。

大円の半径と中心座標を r1, (0, 0)
中円の半径と中心座標を r2, (x2, y2)
小円の半径と中心座標を r3, (0, r1 + r3)
とおき,以下の連立方程式を解き,中円の中心座標を求める。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive, x2::positive,
     y2::positive, r3::positive;
eq1 = x2^2 + y2^2 - (r1 + r2)^2
eq2 = x2^2 + (r1 + r3 - y2)^2 - (r2 + r3)^2

res = solve([eq1, eq2], (x2, y2))[1]

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

求める面積は 3 円の中心座標が構成する三角形の面積から,中心角が θ1,θ2,θ3 の 3 円の扇形の面積を差し引いたものである。

(x2, y2) = (res[1], res[2])

θ1 = atand(x2, y2)
θ2 = acosd(((r1 + r2)^2 + (r2 + r3)^2 - (r1 + r3)^2)/(2(r1 + r2)*(r2 + r3)))
θ3 = 180 - θ1 - θ2

S = (r1 + r3)*x2/2 - (r1^2*θ1 + r2^2*θ2 + r3^2*θ3)*pi/360;

大円,中円,小円の直径がそれぞれ 10 寸,6 寸,4 寸のとき,黒積は 1.41639227322922 である。

S(r1 => 10/2, r2 => 6/2, r3 => 4/2).evalf() |> println

   1.41639227322922

function draw(r1, r2, r3, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (x2, y2) = (2*sqrt(r1)*sqrt(r2)*sqrt(r3)*sqrt(r1 + r2 + r3)/(r1 + r3), (r1^2 + r1*r2 + r1*r3 - r2*r3)/(r1 + r3))
   θ1 = atand(x2, y2)
   θ2 = acosd(((r1 + r2)^2 + (r2 + r3)^2 - (r1 + r3)^2)/(2(r1 + r2)*(r2 + r3)))
   θ3 = 180 - θ1 - θ2
   S = (r1 + r3)*x2/2 - (r1^2*θ1 + r2^2*θ2 + r3^2*θ3)*pi/360
   @printf("大円,中円,小円の直径がそれぞれ %g, %g, %g のとき,黒積は %g である。\n", 2r1, 2r2, 2r3, S)
   @printf("r1 = %g;  r2 = %g;  r3 = %g;  x2 = %g;  y2 = %g\n", r1, r2, r3, x2, y2)
   plot([0, x2, 0, 0], [0, y2, r1 + r3, 0], color=:black, lw=0.5, seriestype=:shape, fillcolor=:gray70)
   circlef(0, 0, r1, :white)
   circle(0, 0, r1)
   circle(0, 0, 0.15r1, beginangle=90 - θ1, endangle=90, lw=2)
   circlef(x2, y2, r2, :white)
   circle(x2, y2, r2, :blue)
   circle(x2, y2, 0.15r1, :blue, beginangle=90 + θ3, endangle=90 + θ3 + θ2, lw=2)
   circlef(0, r1 + r3, r3, :white)
   circle(0, r1 + r3, r3, :green)
   circle(0, r1 + r3, 0.15r1, :green, beginangle=270, endangle=270 + θ3, lw=2)
   plot!([0, x2, 0, 0], [0, y2, r1 + r3, 0], color=:black, 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(delta/2, 4delta, "θ1", :red, :left, :bottom, delta=delta, mark=false)
       point(0, 0, "大円:r1,(0, 0)", :red, :center, delta=-delta/2)
       point(x2 - 5delta, y2 - 2delta, "θ2", :blue, :right, :vcenter, mark=false)
       point(x2, y2, "中円:r2,(x2,y2)", :blue, :center, delta=4delta, deltax=delta)
       point(3.5delta, r1 + r3 - 5delta, "θ3", :green, :right, :vcenter, mark=false)
       point(0, r1 + r3, "小円:r3,(0,r1+r3)", :green, :center, :bottom, delta=delta)
   end

end;

draw(10/2, 6/2, 4/2, true)

 

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

算額(その2086)

2024年09月12日 | Julia

算額(その2086)

九十一 群馬県富岡市一ノ宮 貫前神社 安政5年(1858)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円6個,外円,半円

巽円(外円)の中に乾円と半乾円を 1 個ずつ,坤円 2 個,艮円 2 個を容れる。巽円の直径が与えられたとき,乾円,坤円,艮円の直径を求める術を述べよ。

巽円の半径と中心座標を R, (0, 0)
乾円の半径と中心座標を r1, (0, R - r1)
坤円の半径と中心座標を r2, (x2, y2); y2 = R - 2r1
艮円の半径と中心座標を r3, (x3, y3); x3 = x2, y3 = -br1
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms R::positive, r1::positive, r2::positive,
     x2::positive, y2::negative, r3::positive,
     x3::positive, y3::negative;
y2 = R - 2r1
x3 = x2
y3 = -r1
eq1 = x2^2 + r1^2 - (r1 + r2)^2 |> expand
eq2 = x3^2 + (y3 - (R - 3r1))^2 - (r1 + r3)^2 |> expand
eq3 = x2^2 + y2^2 - (R - r2)^2 |> expand
eq4 = r1^2 + (R - 3r1)^2 - R^2
res = solve([eq1, eq2, eq3, eq4], (r1, r2, r3, x2))[1]

   (3*R/5, 3*R/10, R/10, 3*sqrt(5)*R/10)

乾円,坤円,艮円の直径はそれぞれ,巽円の直径の 3/5, 3/10, 1/10 倍である。

巽円の直径が 20 寸のとき,すべてのパラメータは以下のとおりである。

   R = 10;  r1 = 6;  r2 = 3;  r3 = 1;  x2 = 6.7082;  y2 = -2;  x3 = 6.7082;  y3 = -6

function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2, r3, x2) = R.*(3/5, 3/10, 1/10, 3√5/10)
   y2 = R - 2r1
   x3 = x2
   y3 = -r1
   @printf("R = %g;  r1 = %g;  r2 = %g;  r3 = %g;  x2 = %g;  y2 = %g;  x3 = %g;  y3 = %g\n", R, r1, r2, r3, x2, y2, x3, y3)
   plot()
   circle(0, 0, R, :magenta)
   circle(0, R - r1, r1)
   circle(0, R - 3r1, r1, beginangle=0, endangle=180)
   circle2(x2, y2, r2, :blue)
   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, R - r1, "乾円:r1,(0,R-r1)", :red, :center, delta=-delta/2)
       point(x2, y2, "坤円:r2,(x2,y2)", :blue, :center, delta=-delta/2)
       point(x3, y3, "艮円:r3,(x3,y3)", :green, :center, delta=-delta/2)
       point(x3, y3, "艮円:r3,(x3,y3)", :green, :center, delta=-delta/2)
       point(0, R, "R", :magenta, :center, :bottom, delta=delta/2)
       point(r1, R - 3r1, "(r1,R-3r1) ", :magenta, :right, :vcenter)
   end

end;

draw(20/2, true)

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

算額(その2085)

2024年09月11日 | Julia

算額(その2085)

八十四 群馬県渋川市川島 甲波宿袮神社 安政3年(1856)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円4個,直角三角形

直角三角形の中に,全円 1 個,等円 3 個を容れる。等円の直径が 4 寸,全円の直径と股の差が 8 寸のとき,股はいかほどか。

鈎,股をそのまま「鈎」,「股」
全円の半径と中心座標を r1, (股 - r1, r1)
等円の半径と中心座標を r2, (股 - r2, r2), (股 - 3r2, r2), (股 - 5r2, r2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms 鈎::positive, 股::positive, r1::positive,
     r2::positive, 差::positive;
eq1 = 股 - 2r1 - 差
eq2 = dist2(0, 0, 股, 鈎, 股 - 5r2, r2, r2)/鈎
eq3 = dist2(0, 0, 股, 鈎, 股 - r1, r1, r1)/(鈎*股);
res = solve([eq1, eq2, eq3], (股, 鈎, r1))[4]  # 4 of 4

   (3*r2 + 差/2 + sqrt(36*r2^2 - 4*r2*差 + 差^2)/2, 9*r2^2/差 + r2 + 3*r2*sqrt(36*r2^2 - 4*r2*差 + 差^2)/(2*差) - 差/4 + sqrt(36*r2^2 - 4*r2*差 + 差^2)/4, 3*r2/2 - 差/4 + sqrt(36*r2^2 - 4*r2*差 + 差^2)/4)

股は以下の式で計算できる。

res[1]

等円の直径が 4 寸,全円の直径と股の差が 8 寸のとき,股は 16 寸である。

res[2](差 => 8, r2 => 4//2)

   16

すべてのパラメータは以下のとおりである。

   r2 = 2;  鈎 = 12;  股 = 16;  r1 = 4

function draw(r2, 差, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (股, 鈎, r1) = (3*r2 + 差/2 + sqrt(36*r2^2 - 4*r2*差 + 差^2)/2, 9*r2^2/差 + r2 + 3*r2*sqrt(36*r2^2 - 4*r2*差 + 差^2)/(2*差) - 差/4 + sqrt(36*r2^2 - 4*r2*差 + 差^2)/4, 3*r2/2 - 差/4 + sqrt(36*r2^2 - 4*r2*差 + 差^2)/4)
   @printf("等円の直径が %g のとき,股は %g である。\n", 2r2, 股)
   @printf("r2 = %g;  鈎 = %g;  股 = %g;  r1 = %g\n", r2, 鈎, 股, r1)
   plot([0, 股, 股, 0], [0, 0, 鈎, 0], color=:green, lw=0.5)
   circle(股 - r1, r1, r1)
   circle(股 - 5r2, r2, r2, :blue)
   circle(股 - 3r2, r2, r2, :blue)
   circle(股 - r2, 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(股 - r1, r1, "全円:r1,(股-r1,r1)", :red, :center, :bottom, delta=delta)
       point(股 - r2, r2, "等円:r2\n(股-r2,r2)", :blue, :center, :bottom, delta=delta)
       point(股 - 3r2, r2, "等円:r2\n(股-3r2,r2)", :blue, :center, :bottom, delta=delta)
       point(股 - 5r2, r2, "等円:r2\n(股-5r2,r2)", :blue, :center, :bottom, delta=delta)
       point(股, 鈎, "(股,鈎)", :green, :right, :bottom, delta=delta)
   end

end;

draw(4/2, 8, true)

 

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

今どきの若い人たち

2024年09月10日 | 雑感

「今どきの若い人たち」と思わされる瞬間 – 5つのエピソード

最近ふと、「今どきの若い人は…」と感じた瞬間がいくつかありました。こういうことを言うと年寄りの愚痴だと言われそうですが、あえて共有したいと思います。

エピソード1:読めない言葉は調べるべき?
ある地域の農産物を紹介しているラジオ番組で、24、5歳の女性パーソナリティが「たんきょうき」という言葉を口にしました。なんのことかと思い、前後の文脈から推測すると、どうやら「はざかいき(端境期)」をそう読んでいたようです。確かに「端境期」という言葉は普段あまり使わないかもしれませんが、これは小学校の社会科で学ぶような言葉です。もちろん、読み間違えることは誰にでもありますが、一応プロフェッショナルである以上、事前に確認する姿勢は求められるのではないでしょうか。

エピソード2:すだれも知らない?
下町を歩くテレビ番組で、24、5歳の女性タレントが町家の軒先にぶら下がっている「すだれ」を見て、「これ、なんでしたっけ?」と発言。確かに、現代の都市生活者には馴染みのないものかもしれません。でも、日本の風土や文化を代表するアイテムのひとつであり、ちょっとした調べ物で分かるようなものです。教養の一環として、知っておくべきでは?

エピソード3:「心頭滅却」を知らないアナウンサー
国営放送の34、5歳の女性アナウンサーが、「心頭滅却すれば火もまた涼し」という言葉をタレントが口にした際、初めて聞いたと驚いていました。もちろん、全員が古典的な表現を知っているわけではありませんし、帰国子女であるならなおさらですが、国営放送のアナウンサーとして、こういった慣用句を知らないのは少々驚きです。

エピソード4:日本の古典音楽が「新鮮」
別のテレビ番組で、若いタレントが「和楽器って斬新ですね!」とコメント。おそらく、彼女にとっては本当に新鮮に感じたのでしょう。しかし、和楽器は日本の音楽文化の重要な一部であり、歴史も深いもの。伝統が新しいと感じること自体が、逆に現代の若者の文化的ギャップを象徴しているのかもしれません。

エピソード5:お箸の使い方がぎこちない?
食事の席で若い人がぎこちなくお箸を使っているのを目にすることが増えてきました。もちろん、現代のグローバル社会では様々な食事文化に触れる機会が増え、箸以外の食器も頻繁に使われるため、箸の扱いに不慣れな若者がいても不思議ではありません。それでも、日本の文化として伝統的な箸使いをもう少し大切にしてほしいと感じます。

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

算額(その2084)

2024年09月10日 | Julia

算額(その2084)

三十六 岩手県一関市 一関八幡神社前額 天保9年(1838)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html
キーワード:円2個,半円1個,正方形,斜線2本

正方形の中に半円と2 本の斜線を描き,区分された領域に大円 1 個,小円 1 個を容れる。小円の直径が与えられたとき大円の直径はいかほどか。

上の図は不適切極まりない。半円が半円らしくない。大円が斜線の片方としか接していない。斜線の始点と終点がおかしい。
正しい位置関係が示されていないと,算額問題を解こうという気力がわかない。

半円の半径と中心座標を r1, (2r1, r1)
大円の半径と中心座標を r2, (r2, 2r1 - r2)
小円の半径と中心座標を r3, (x3, r3)
とおき,以下の連立方程式を解く。
SymPy では一度に解けないので,逐次解いていく。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive, r3::positive,
     x3::positive, a::positive, b::positive, c::positive;
eq1 = dist2(0, 0, c, 2r1, 2r1, r1, r1)
eq2 = dist2(0, 0, c, 2r1, r2, 2r1 - r2, r2)
eq3 = dist2(0, 0, c, 2r1, x3, r3, r3)
eq4 = dist2(a, 0, 0, b, 2r1, r1, r1)
eq5 = dist2(a, 0, 0, b, r2, 2r1 - r2, r2)
eq6 = dist2(a, 0, 0, b, x3, r3, r3);
# res = solve([eq1, eq2, eq3, eq4, eq5, eq6], (r1, r2, x3, a, b, c))

eq1 から c を求める。
c = 3r1/2

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

   3*r1/2

eq2 に c を代入して,r1 を求める。
r1 = 2r2
前に求めた c は r2 の 3 倍である。c = 2r3

eq12 = eq2(c => ans_c)
ans_r1 = solve(eq12, r1)[2]
ans_r1 |> println

   2*r2

eq3 に c, r1 を代入して,x3 を求める。
x3 = 2r3

eq13 = eq3(c => 3r2, r1 => 2r2)/8r2^2 |> simplify
ans_x3 = solve(eq13, x3)[1]
ans_x3 |> println

   2*r3

eq4, eq5, eq6 に,c, r1, x3 を代入し,3元連立方程式を解き,r2, a, b を求める。
r2 = 3*r3/2, a = 5*r3, b = 15*r3/4 である。

eq14 = eq4(c => 3r2, r1 => 2r2, x3 => 2r3)/b
eq15 = eq5(c => 3r2, r1 => 2r2, x3 => 2r3)/a
eq16 = eq6(c => 3r2, r1 => 2r2, x3 => 2r3)/b
solve([eq14, eq15, eq16], (r2, a, b))[2]  # 2 of 2

   (3*r3/2, 5*r3, 15*r3/4)

大円の半径 r2 は,小円の半径 r3 の 3/2 倍である。

小円の直径が 1 寸のとき,大円の直径は 1.5 寸である。

r3 が与えられたとき,すべてのパラメータは以下のとおりである(この順に決定される)。

x3 = 2r3
r2 = 3r3/2
r1 = 2r2
c = 3r1/2
a = 5r3
b = 15r3/4

function draw(r3, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   x3 = 2r3
   r2 = 3r3/2
   r1 = 2r2
   c = 3r1/2
   a = 5r3
   b = 15r3/4
   @printf("小円の直径が %g のとき,大円の直径は %g である。\n", 2r3, 2r2)
   @printf("r3 = %g;  x3 = %g;  r2 = %g;  r1 = %g;  c = %g;  a = %g;  b = %g\n", r3, x3, r2, r1, c, a, b)
   plot(2r1 .* [0, 1, 1, 0, 0], 2r1 .* [0, 0, 1, 1, 0], color=:green, lw=0.5)
   circle(2r1, r1, r1, beginangle=90, endangle=270)
   circle(r2, 2r1 - r2, r2, :blue)
   circle(x3, r3, r3, :orange)
   segment(0, 0, c, 2r1)
   segment(a, 0, 0, b)
   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(2r1, r1, "半円:r1,(2r1,r1) ", :red, :right, :vcenter)
       point(r2, 2r1 - r2, "大円:r2,(r2,2r1-r2)", :blue, :center, delta=-delta/2)
       point(x3, r3, "小円:r3,(x3,r3)", :orange, :center, delta=-delta/2)
       point(0, b, "b ", :green, :right, :vcenter)
       point(a, 0, "a", :green, :center, delta=-delta)
       point(c, 2r1, "(c,2r1)", :green, :center, :bottom, delta=delta)
       plot!(xlims=(-4delta, 2r1 + 2delta), ylims=(-4delta, 2r1 + 2delta))
   end

end;

draw(1/2, true)

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

算額(その2083)

2024年09月08日 | Julia

算額(その2083)

長野県小諸市荒町 八幡宮 天保9年(1838)
香川県算額研究会:「算額」第四集 全国調査
キーワード:円7個,外円,弦

外円の中に,水平な弦を引き,甲円 1 個,乙円 1 個,丙円 4 個を容れる。甲円,乙円の直径が 6.4 寸,1.6 寸のとき,丙円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (0, R - r1)
乙円の半径と中心座標を r2, (0, r2 - R)
丙円の半径と中心座標を r3, (x31, 2r2 - R + r3), (x32, 2r2 - R - r3)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

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

   (r1*r2/(r1 + r2), 2*r1*sqrt(r2)/sqrt(r1 + r2), 2*sqrt(r1)*r2/sqrt(r1 + r2))

丙円の半径 r3 は,甲円,乙円の半径 r1, r2 により,r1*r2/(r1 + r2) と表せる。
甲円,乙円の直径が 6.4 寸,1.6 寸のとき,丙円の直径は (6.4 * 1.6)/(6.4 + 1.6) = 1.28 寸である。

すべてのパラメータは以下のとおりである。

   r1 = 3.2;  r2 = 0.8;  R = 4;  r3 = 0.64;  x31 = 2.86217;  x32 = 1.43108;  

function draw(r1, r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r3, x31, x32) = (r1*r2/(r1 + r2), 2*r1*sqrt(r2)/sqrt(r1 + r2), 2*sqrt(r1)*r2/sqrt(r1 + r2))
   R = r1 + r2
   @printf("甲円,乙円の直径が %g,%g のとき,丙円の直径は %g である。\n", 2r1, 2r2, 2r3)
   @printf("r1 = %g;  r2 = %g;  R = %g;  r3 = %g;  x31 = %g;  x32 = %g;  \n", r1, r2, R, r3, x31, x32)
   plot()
   circle(0, 0, R, :green)
   circle(0, R - r1, r1)
   circle(0, r2 - R, r2, :blue)
   circle2(x31, 2r2 - R + r3, r3, :magenta)
   circle2(x32, 2r2 - R - r3, r3, :magenta)
   y = 2r2 - R
   x = sqrt(R^2 - y^2)
   segment(-x, y, x, y, :black)
   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, "R", :green, :center, :bottom, delta=delta/2)
       point(0, R - r1, "甲円:r1,(0,R-r1)", :red, :center, delta=-delta/2)
       point(0, r2 - R, "乙円:r2\n(0,r2-R)", :blue, :center, delta=-delta/2)
       point(x31, 2r2 - R + r3, "丙円:r3\n(x31,2r2-R+r3)", :magenta, :center, delta=-delta/2)
       point(x32, 2r2 - R - r3, "丙円:r3\n(x32,2r2-R-r3)", :magenta, :center, delta=-delta/2)
       point(0, R - 2r1, "R-2r1", :red, :center, :bottom, delta=delta/2)
       point(0, 2r2 - R, "2r2-R", :blue, :center, delta=-delta/2)
   end

end;

draw(6.4/2, 1.6/2, true)

 

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

算額(その2082)

2024年09月08日 | Julia

算額(その2082)

百五十二 群馬県前橋市下大屋町 産泰神社 年代不明
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円3個,正方形

正方形の中に大円 1 個,小円 2 個を容れる。大円の直径が与えられたとき,小円の直径はいかほどか。

大円の半径と中心座標を r1, (r1, r1); 正方形の一辺の長さは a = 2r1
小円の半径と中心座標を r2, (x2, r2), (a - r2, a - x2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive, x2::positive, a::positive;
a = 2r1
eq1 = (x2 - r1)^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = 2(2r1 - r2 - x2)^2 - 4r2^2
res = solve([eq1, eq2], (r2, x2))[1]  # 1 of 3

   ((-r1 + r1*(-2*sqrt(2) + sqrt(8 - 4*sqrt(2)) + 3))^2/(4*r1), r1*(-2*sqrt(2) + sqrt(8 - 4*sqrt(2)) + 3))

res[1] |> simplify |> println

   r1*(-1 - sqrt(2 - sqrt(2)) + sqrt(2))^2

res[2] |> println

   r1*(-2*sqrt(2) + sqrt(8 - 4*sqrt(2)) + 3)

小円の半径 r2は,大円の半径 r1 の (√2 - 1 - sqrt(2 - √2))^2 倍である。
大円の直径が 1 寸のとき,小円の直径は 0.12330864175628588 寸である。

すべてのパラメータは以下のとおりである。

   r1 = 0.5;  r2 = 0.0616543;  x2 = 0.851153

function draw(r1, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r2, x2) = ((-r1 + r1*(-2*sqrt(2) + sqrt(8 - 4*sqrt(2)) + 3))^2/(4*r1), r1*(-2*sqrt(2) + sqrt(8 - 4*sqrt(2)) + 3))
   @printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r2)
   @printf("r1 = %g;  r2 = %g;  x2 = %g\n", r1, r2, x2)
   a = 2r1
   #@printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r3)
   plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:green, lw=0.5)
   circle(r1, r1, r1)
   circle(x2, r2, r2, :blue)
   circle(a - r2, a - x2, 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(r1, r1, "大円:r1,(r1,r1)", :red, :center, delta=-delta/2)
       point(x2, r2, "小円:r2,(x2,r2) ", :blue, :right, :vcenter)
       point(a - r2, a - x2, "小円:r2,(a-r2,a-x2) ", :blue, :right, :vcenter)
       point(a, a, "(a,a)", :green, :right, :bottom, delta=delta/2)
   end

end;

draw(1/2, true)

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

算額(その2081)

2024年09月08日 | Julia

算額(その2081)

百五十一 群馬県前橋市下大屋町 産泰神社 年代不明
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,直線上

直線の上に大円 2 個に挟まれて,中円 1 個,小円 2 個が載っている。大円の直径が与えられたとき,小円の直径はいかほどか。

大円の半径と中心座標を r1, (r1, r1)
中円の半径と中心座標を r2, (0, r2)
小円の半径と中心座標を r3, (x3, r3)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

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

   (r1/4, r1/9, r1/3)

小円の半径 r3 は,大円の半径の 1/9 倍である。
大円の直径が 9 寸のとき,小円の直径は 1 寸である。
ちなみに,中円の直径は大円の直径の 1/4 倍である。

function draw(r1, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r2, r3, x3) = (r1/4, r1/9, r1/3)
   @printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r3)
   plot()
   circle2(r1, r1, r1)
   circle(0, r2, r2, :green)
   circle2(x3, r3, r3, :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(r1, r1, "大円:r1,(r1,r1)", :red, :center, delta=-delta)
       point(0, r2, " 中円:r2,(0,r2)", :green, :left, :bottom, delta=delta)
       point(x3, r3, "小円:r3,(x3,r3) ", :blue, :left, :vcenter, deltax=6delta)
   end

end;

draw(9/2, true)

 

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

算額(その2080)

2024年09月08日 | Julia

算額(その2080)

百四十八 群馬県安中市磯部 赤城神社 昭和52年(1977) 復元
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円2個,正方形,直線上

直線の上に大円,小円,正方形が載っている。大円の直径は正方形の対角線の長さと同じである。大円の直径が 10 寸のとき,小円の直径はいかほどか。

大円の半径と中心座標を r1, (0, r1)
小円の半径と中心座標を r2, (x2, r2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms r1::positive, r2::positive, x2::positive;
eq1 = x2^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = dist2(r1, r1, 2r1, 0, x2, r2, r2)
res = solve([eq1, eq2], (r2, x2))[2]

   (r1*(2 - sqrt(2))^2, 2*r1*(2 - sqrt(2)))

小円の半径 r2 は,大円の半径 r1 の (2 - √2)^2 倍である。
大円の直径が 10 寸のとき,小円の直径は 10(2 - √2)^2 = 3.431457505076197 寸である。
なお,中心座標は (5.857864376269049,0)

function draw(r1, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r2, x2) = (r1*(2 - sqrt(2))^2, 2*r1*(2 - sqrt(2)))
   @printf("大円の直径が %g のとき,小円の直径は %g である。\n", 2r1, 2r2)
   plot([r1, 2r1, 3r1, 2r1, r1], [r1, 0, r1, 2r1, r1], color=:blue, lw=0.5)
   circle(0, r1, r1)
   circle(x2, r2, r2, :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, r1, "大円:r1,(0,r1)", :red, :center, delta=-delta)
       point(x2, r2, "小円:r2\n(x2,r2)", :green, :center, delta=-delta)
       point(2r1, r1, "正方形:(2r1,r1)", :blue, :center, delta=-delta)
   end

end;

draw(10/2, true)

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

算額(その2079)

2024年09月08日 | Julia

算額(その2079)

百四十八 群馬県安中市磯部 赤城神社 昭和52年(1977) 復元
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,斜線,弦

外円の中に,2 本の等斜を引き,大円 1 個,等円 3 個を容れる。大円内の等円は,水平な弦に接している。外円の直径が 10 寸,等斜の長さが 8 寸のとき,等円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
大円の半径と中心座標を r1, (0, R - r1)
等円の半径と中心座標を r2, (r2, R - 2r1 + 3r2), (0, R - 2r1 + r2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms R::positive, r1::positive, r2::positive,
     x::positive, y::positive, 等斜::positive;
eq1 = r2^2 + (3r2 - r1)^2 - (r1 - r2)^2
eq2 = x^2 + (sqrt(R^2 - x^2) + R)^2 - 等斜^2
eq3 = (2R - r1)*(x/等斜) - r1
res = solve([eq1, eq2, eq3], (r1, r2, x))[1]

   (2*R*sqrt(4*R^2 - 等斜^2)/(2*R + sqrt(4*R^2 - 等斜^2)), 8*R*sqrt(4*R^2 - 等斜^2)/(9*(2*R + sqrt(4*R^2 - 等斜^2))), 等斜*sqrt(4*R^2 - 等斜^2)/(2*R))

外円の直径が 10 寸,等斜が 8 寸のとき,等円の直径は 10/3 寸である。

2res[2](R => 10//2, 等斜 => 8) |> println

   10/3

天 = sqrt(4R^2 - 等斜^2) と置くと,等円の半径は 8R*天/(9(2R+天) である。

R = 10/2
等斜 = 8
天 = sqrt(4R^2 - 等斜^2)
r1 = 8R*天/(9(2R+天))

   1.6666666666666667

すべてのパラメータは以下のとおりである。

   R = 5;  等斜 = 8;  r1 = 3.75;  r2 = 1.66667;  x = 4.8

function draw(R, 等斜, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r1, r2, x) = (2*R*sqrt(4*R^2 - 等斜^2)/(2*R + sqrt(4*R^2 - 等斜^2)), 8*R*sqrt(4*R^2 - 等斜^2)/(9*(2*R + sqrt(4*R^2 - 等斜^2))), 等斜*sqrt(4*R^2 - 等斜^2)/(2*R))
   y = sqrt(R^2 - x^2)
   y0 = R - 2r1 + 2r2
   x0 = sqrt(r1^2 - (r1 - 2r2)^2)
   plot()
   circle(0, 0, R, :green)
   circle(0, R - r1, r1) 
   circle2(r2, R - 2r1 + 3r2, r2, :blue)
   circle(0, R - 2r1 + r2, r2, :blue)
   segment(-x0, y0, x0, y0)
   plot!([-x, 0, x], [y, -R, y], color=:black, 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(x, y, " (x,y)", :black, :left, :vcenter)
       point(x0, y0, "(x0,y0) ", :black, :right, delta=-delta/2)
       point(0, R - 2r1 + 2r2, "R-2r1+2r2", :blue, :center, delta=-delta/2)
       point(0, R - 2r1, "R-2r1", :red, :center, delta=-delta/2)
       point(0, R, "R", :green, :center, :bottom, delta=delta/2)
       point(0, R - r1, "大円:r1,(0,R-r1)", :red, :center, :bottom, delta=delta/2)
       point(0, R - 2r1 + r2, "等円:r2,(0,R-2r1+r2)", :blue, :center, :bottom, delta=delta/2)
       point(r2, R - 2r1 + 3r2, "等円:r2\n(r2,R-2r1+3r2)", :blue, :center, :bottom, delta=delta/2)
   end

end;

draw(10/2, 8, true)

 

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

算額(その2078)

2024年09月07日 | Julia

算額(その2078)

百四十八 群馬県安中市磯部 赤城神社 昭和52年(1977) 復元
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円3個,正方形

正方形の中に,甲円 1 個,乙円 2 個を容れる。正方形の一辺の長さが 10 寸,甲円の直径が 7.5 寸のとき,乙円の直径はいかほどか。

正方形の一辺の長さを a
甲円の半径と中心座標を r1, (r1, r1)
乙円の半径と中心座標を r2, (a - r2, y), (y, a - r2)
とおき,以下の方程式を解く。

include("julia-source.txt");

using SymPy
@syms a::positive, r1::positive, r2::positive, y::positive;
eq1 = (a - r2 - r1)^2 + (y - r1)^2 - (r1 + r2)^2
eq2 = (y - (a - r2)) + √Sym(2)*r2
res = solve([eq1, eq2], (r2, y))[2]

   (-a + sqrt(2)*a + (1 - sqrt(2))*(sqrt(2)*sqrt(a)*sqrt(r1)*sqrt(sqrt(2) + 2)/(1 + sqrt(2)) - sqrt(2)*a + a + r1), sqrt(2)*sqrt(a)*sqrt(r1)*sqrt(sqrt(2) + 2)/(1 + sqrt(2)) - sqrt(2)*a + a + r1)

手動で簡約化すると以下のようになる。
正方形の一辺の長さが 10 寸,甲円の直径が 7.5 寸のとき,乙円の直径は 2*1.5590435749682972 = 3.1180871499365943 寸である。

a = 10
r1 = 7.5/2
t = sqrt(a*r1*(√2+2))
r2 = (2 - √2)a - (3√2 - 4)t - (√2 - 1)r1
y  = (2 - √2)t - (√2 - 1)a + r1
(r2, y)

   (1.5590435749682972, 6.236135856980884)

すべてのパラメータは以下のとおりである。

   a = 10;  r1 = 3.75;  r2 = 1.55904;  y = 6.23614

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

       point(a - r2, y, "乙円:r2,(a-r2,y)", :blue, :center, delta=-delta/2)
       point(y, a - r2, "乙円:r2,(y,a-r2)", :blue, :center, delta=-delta/2)
       point(a, a, "(a,a)", :green, :right, :bottom, delta=delta/2)
   end

end;

draw(10, 7.5/2, true)

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

算額(その2077)

2024年09月07日 | Julia

算額(その2077)

百四十七 群馬県甘楽郡妙義町下高田 高太神社 大正12年(1923)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円4個,長方形,菱形

長方形の中に菱形 1 個と等円 4 個を容れる。長方形の長辺,短辺が 8.3 寸,7.1 寸,菱形の一辺が 3 寸のとき,等円の直径はいかほどか。

長方形の長辺,短辺を 2a, 2b
菱形の一辺を c
等円の半径と中心座標を r, (a - r, 0), (0, b - r)
とおき,以下の方程式を解く。

include("julia-source.txt");

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

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

長方形の長辺,短辺が 8.3 寸,7.1 寸,菱形の一辺が 3 寸のとき,等円の直径は 1.75 寸である。

res(a => 8.3/2, b => 7.1/2, c => 3)*2 |> println

   1.75000000000000

function draw(a, b, c, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r = a/4 + b/4 - sqrt(-a^2 + 2*a*b - b^2 + 2*c^2)/4
   @printf("長方形の長辺,短辺が %g, %g,菱形の一辺が %g のとき,等円の直径は %g である。\n", 2a, 2b, c, 2r)
   plot([a, a, -a, -a, a], [-b, b, b, -b, -b], color=:green, lw=0.5)
   plot!([a - 2r, 0, 2r - a, 0, a - 2r], [0, b - 2r, 0, 2r - b, 0], color=:blue, lw=0.5)
   circle22(0, b - r, r) 
   circle2(a - r, 0, r)
   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 - r, 0, "等円:(a-r,0)", :red, :center, delta=-delta/2)
       point(0, b - r, "等円:(0,b-r)", :red, :center, delta=-delta/2)
       point(a, b, "(a,b) ", :green, :right, delta=-delta)
       point(0, b - 2r, "(0,b-2r)", :blue, :left, :vcenter, deltax=4delta)
       point(a - 2r, 0, "(a-2r,0)", :blue, :right, :vcenter, deltax=-2delta)
   end

end;

draw(8.3/2, 7.1/2, 3, true)

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

算額(その2076)

2024年09月06日 | Julia

算額(その2076)

百四十七 群馬県甘楽郡妙義町下高田 高太神社 大正12年(1923)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円2個,正方形2個

直線の上に正方形 2 個と大円,小円が載っている。正方形の一辺の長さが 5 寸,小円の直径が 4 寸のとき,大円の直径はいかほどか。

正方形の一辺の長さを a
大円の半径と中心座標を r1, (2r2 + r1)
小円の半径と中心座標を r2, (0, r2)
とおき,以下の方程式を解く。

include("julia-source.txt");

using SymPy
@syms a::positive, r1::positive, r2::positive;
eq1 = r2^2 + (2r2 + r1 - a)^2 - r1^2
res = solve(eq1, r1)[1]
res |> println

   (r2^2 + (a - 2*r2)^2)/(2*(a - 2*r2))

大円の半径 r1 は,正方形の一辺の長さ a と小円の半径 r2 の関数である。
正方形の一辺の長さが 5 寸,小円の直径が 4 寸のとき,大円の直径は 5 寸である。

「答」では 10.0625 となっているが...

a = 5
r2 = 4/2
(r2^2 + (a - 2*r2)^2)/(2*(a - 2*r2)) * 2

   5.0

function draw(a, r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = (r2^2 + (a - 2*r2)^2)/(2*(a - 2*r2))
   @printf("正方形の一辺の長さが %g,小円の直径が %g のとき,大円の直径は %g である。\n", a, 2r2, 2r1)
   plot()
   circle(0, 2r2 + r1, r1)
   circle(0, r2, r2, :blue)
   rect(r2, 0, r2 + a, a, :green)
   rect(-r2, 0, -r2 - a, a, :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, 2r2 + r1, "大円:r1,(0,2r2+r1)", :red, :center, delta=-delta)
       point(0, r2, "小円:r2,(0,r2)", :blue, :center, delta=-delta)
       point(r2, a, "(r2,a)", :green, :left, delta=-delta)
   end

end;

draw(5, 4/2, true)

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

算額(その2075)

2024年09月06日 | Julia

算額(その2075)

百四十三 群馬県榛名町榛名山 榛名神社 明治33年(1900)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円9個,外円

外円の中に,中円 4 個,小円 4 個を容れる。小円の直径が 1 寸のとき,中円の直径はいかほどか。

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

include("julia-source.txt");

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

   (r2*(9 - 4*sqrt(2)), 7*r2, r2*(1 + 5*sqrt(2)))

中円の半径 r1 は,小円の半径 r2 の (9 - 4√2) 倍である。
小円の直径が 1 寸のとき,中円の直径は 9 - 4√2 = 3.3431457505076194 寸である。

すべてのパラメータは以下のとおりである。

   r2 = 0.5;  R = 4.03553;  r1 = 1.67157;  x2 = 3.5

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

draw(1/2, true)

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

算額(その2074)

2024年09月06日 | Julia

算額(その2074)

百四十 群馬県甘楽郡妙義町下高田 高太神社 明治22年(1888)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:円5個,外円,半円4個

外円の中に,等円 4 個,半円 4 個を容れる。外円の直径が 24 寸のとき,等円の直径はいかほどか

外円の半径と中心座標を R, (0, 0)
半円の半径と中心座標を r1, (R/2, R/2), (R/2, -R/2)
等円の半径と中心座標を r2, (R/2, 0); r1 - R/2
とおく。

r1 = √2R/2 ゆえ,r2 = r1 - R/2 = √2R/2 - R/2 = R*(√2 - 1)/2 である。

等円の半径 r2 は,外円の半径 R の (√2 - 1)/2 倍である。

外円の直径が 24 寸のとき,等円の直径は 24*(√2 ー1)/2 = 4.970562748477142 寸である。

include("julia-source.txt");

function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r1 = √2R/2
   r2 = R*(√2 - 1)/2
   @printf("外円の直径が %g のとき,等円の直径は %g である。\n", 2R, 2r2)
   @printf("R = %g;  r1 = %g;  r2 = %g\n", R, r1, r2)
   plot()
   circle(0, 0, R, :green)
   circle(R/2, R/2, r1, beginangle= 135, endangle=315)
   circle(R/2, -R/2, r1, beginangle= 45, endangle=225)
   circle(-R/2, R/2, r1, beginangle= 225, endangle=405)
   circle(-R/2, -R/2, r1, beginangle= -45, endangle=135)
   circle42(0, R/2, 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(R, 0, " R", :green, :left, :bottom, delta=delta)
       point(R/2, R/2, "半円:r1,(R/2,R/2)", :red, :center, delta=-delta/2)
       point(R/2, 0, "等円:r2\n(R2,0)", :blue, :center, delta=-delta/2)
       segment(0, R, R, 0, :pink)
   end
end;

draw(24/2, true)

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

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

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