裏 RjpWiki

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

算額(その1171)

2024年07月28日 | Julia

算額(その1171)

一八 大里郡岡部村岡 稲荷社 文化14年(1817)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円1個,正三角形,菱形,斜線

正三角形の中に斜線と菱形と円を容れる。正三角形の一辺の長さを 8 寸としたとき,斜線の長さはいかほどか。

正三角形の一辺の長さを a
円の半径と中心座標を r, (x, r)
菱形の頂点の座標を (c, 2r), (a - 2r/√3, 0)
斜線と正三角形の底辺との交点座標を (b, 0)
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

@syms r::positive, x::positive, a::positive, b::positive, c::positive
c = a - 2r/√Sym(3)
eq1 = dist2(0, 0, a/2, √Sym(3)a/2, x, r, r)
eq2 = dist2(b, 0, a/2, √Sym(3)a/2, x, r, r)
eq3 = dist2(2c - a, 0, c, 2r, x, r, r)
res = solve([eq1, eq2, eq3], (b, x, r))[1]

   (5*a/8, 3*a/8, sqrt(3)*a/8)

斜線と正三角形の底辺との交点の座標は,(5a/8, 0) である。
正三角形の頂点 (a/2, √3a/2) からの線分の長さは 
sqrt((5a/8 - a/2)^2 + (√3a/2)^2) = 7a/8 である。
正三角形の一辺の長さが 8 寸のときは,斜線の長さは 7 寸である。

図を描いて,正三角形の辺に平行で円の中心を通る平行線や接線を描くと一辺が2の小さな正三角形ができる。三角形 ABC の斜辺の長さ AB を求めることになる。AC = 1, BC = 4√3 なのでピタゴラスの定理から AB = sqrt(AC^2 + BC^2) = sqrt(1 + 48) = sqrt(49) = 7 となる。

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

   a = 8;  b = 5;  c = 6;  x = 3;  r = 1.73205

function draw(a, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (b, x, r) = (5*a/8, 3*a/8, sqrt(3)*a/8)
   c = a - 2r/√3
   @printf("正三角形の一辺の長さが %g のとき,斜線の長さは %g である。\n", a, 7a/8)
   @printf("a = %g;  b = %g;  c = %g;  x = %g;  r = %g\n", a, b, c, x, r)
   plot([0, a, a/2, 0], [0, 0, √3a/2, 0], color=:blue, lw=0.5)
   circle(x, r, r)
   segment(a/2, √3a/2, b, 0)
   segment(2c - a, 0, c, 2r, :green)
   segment(c, 2r, a - c, 2r, :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/2, √3a/2, " (a/2,√3a/2)", :blue, :left, :vcenter)
       point(c, 2r, " (c,2r)", :green, :left, :vcenter)
       point(a - c, 2r, "(a-c,2r) ", :green, :right, :vcenter)
       point(x, r, "(x,r)", :red, :center, delta=-delta/2)
       point(2c - a, 0, "2c-a", :green, :center, delta=-delta/2)
       point(b, 0, "b", :black, :center, delta=-delta/2)
       point(a, 0, "a", :blue, :center, delta=-delta/2)
       ylims!(-5delta, √3a/2 + 2delta)
   end
end;

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

算額(その1170)

2024年07月28日 | Julia

算額(その1170)

 七九 春日部市 香取神社 明治9年(1876)
 九九 春日部市小渕 観音院 明治30年(1897)
一〇三 春日部市 東福寺 明治40年(1907)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:面積

面積が 120408472.1265051159 坪の円形の土地がある。円の直径を求めよ。

注:10間四方=1坪

面積を「円法 = 0.79」で割り,平方根を求めればよい。

数値演算的には問題はないが,答えが 123456.78899999999間 となり,出題者が期待した 12345.6789 にならないのは元の面積の数値が精度不足なのである。

sqrt(120408472.1265051159/0.79)*10  # 10間四方=1坪

   123456.78899999999

sqrt(big"120408472.1265051159"/0.79)*10

   123456.7889999999972240087150564101168588130753116810662338684335743893401965257

あまり意味はないが,以下のように長い数値だと 123456.789 に極めて近い数値が得られる。

sqrt(big"120408472.12650512131489653123169070170206396142020821571350097656251"/0.79)*10

   123456.7890000000000000000000000000000000000000000000000000000000000051265823247

ところで,「円法 = 0.79」はなにかといえば,一辺の長さが a の正方形の面積 s1 = a^2 と,正方形の中に内接する円,すなわち直径が a の円の面積 s2 = (a/2)^2 * 円周率 = a^2 * (円周率/4) の比である。
s1/s2 = (a^2) / (a^2 * (円周率/4)) = 円周率/4 = 円法
円法 = 0.79 ということは,円周率 = 4*0.79 = 3.16 である。当時は円周率は「円率」と呼ばれていた。
今はよく使われている 3.14 ではないかといえば,もともとは 3.14 に近い近似値は知られていたのであろうが pi/4 ≒ 0.7853981633974483 の小数点以下 3 桁目で四捨五入して 0.79 としたのであるが,0.7853... を 0.79 はちょっと大雑把すぎたのである。

現在用いられている円周率 π を用いたときに問題文を書き直すと以下のようになる。

pi/4

   0.7853981633974483

big"123456.789"^2*pi/4

   1.197070795767721080355012226425152943759227052416650126777784107916604885390605e+10

sqrt(big"119707079.576772108"/(pi/4))*10

   123456.7890000000023879722548741154634802177298661877133836534897753633868719298

面積が 1億1970万7079歩5分7厘6毛7糸7忽2微1繊0沙8塵の円形の土地の直径はいかほどか。
答 123456.789 間

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

算額(その1169)

2024年07月28日 | Julia

算額(その1169)

 九九 春日部市小渕 観音院 明治30年(1897)
一〇三 春日部市 東福寺 明治40年(1907)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:面積

1,5241,5787.50190521 坪の土地がある。
これを正方形にしたとき,その一辺はいかほどか。
注:10 間四方を 1 坪とする。

平方根を求めればよい。
そのまま計算しても精度上の問題はない。
12万3456.789間

sqrt(1_5241_5787.50190521)*10  # 10間四方=1坪

   123456.78899999999

123456.789^2

   1.5241578750190521e10

sqrt(big"1_5241_5787.50190521")*10

   123456.7890000000000000000000000000000000000000000000000000000000000000000000004

big"123456.789"^2

   1.524157875019052100000000000000000000000000000000000000000000000000000000000004e+10

 

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

算額(その1168)

2024年07月28日 | Julia

算額(その1168)

十七 大里郡岡部村岡 稲荷社 文化13年(1816)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.

(10) 京都市中京区三条大宮西二筋目下ル 武信稲荷神社 嘉永6年(1853)
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.

キーワード:円6個,二等辺三角形

二等辺三角形と甲円,乙円,丙円が 2 個ずつある。乙円の直径が 65 寸のとき,丙円の直径はいくつか。

算額(その360)に丙円を加えたものである。

甲円の直径,中心座標を r1, (0, r1) および (0, 3r1)
乙円の直径,中心座標を r2, (x2,y2)
丙円の半径,中心座標を r3, (x3, y3)
として,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy

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

eq1 = x2^2 + (y2 - 3r1)^2 - (r1 - r2)^2
eq2 = a^2 + (4r1)^2 - (3a)^2
eq3 = 3(r1 - 2r2) - r1
eq4 = 4r1*(y2 - 3r1) - a*x2
eq5 = x3^2 + r1^2 - (r1 + r3)^2
eq6 = dist2(0, 4r1, a, 0, x3, 2r1, r3)
res = solve([eq1, eq2, eq3, eq4, eq5, eq6], (r3, x3, r1, a, x2, y2))[2]

   (6*r2*(7 - 4*sqrt(3)), -6*sqrt(2)*r2*(35 - 21*sqrt(3))/7, 3*r2, 3*sqrt(2)*r2, 4*sqrt(2)*r2/3, 29*r2/3)

丙円の半径 r3 は乙円の半径 r2 の 6(7 - 4√3) である。
よって,乙円の直径が 65 寸なら,丙円の直径は 65*6(7 - 4√3) = 28.00074019255158 寸である。

65*6(7 - 4√3)

   28.00074019255158

ちなみに,甲円の直径は乙円の直径の 3 倍である。

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

  r2 = 32.5;  r3 = 14.0004;  x3 = 54.0933;  r1 = 97.5;  a = 137.886;  x2 = 61.2826;  y2 = 314.167

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

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

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

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