裏 RjpWiki

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

算額(その309)

2023年07月01日 | Julia

算額(その309)

「三重県に現存する算額の研究」福島完(2007/2/13)
https://mie-u.repo.nii.ac.jp/?action=repository_uri&item_id=7216
三重県伊賀市 永保寺 弘化4年(1847)

問題文2

鉤が 3 丈,股が 4 丈の鉤股弦に,内接円,正三角形をいれる。直角の頂点から弦へ垂線(垂線の長さが中股)を下ろす。

弦,中股,円の直径,正三角形の一辺を求めよ。

中股と弦の交点の座標を (x , y), 円の半径を r とする。

以下の方程式を解く。

include("julia-source.txt");

using SymPy

@syms 鉤::positive, 股::positive, 弦::positive, r::positive, x::positive, y::positive

(鉤, 股) = (3, 4)
eq1 = 鉤^2 + 股^2 - 弦^2
eq2 = 鉤 + 股 - 弦 - 2r
eq3 = (3 - y)/x - 3//4
eq4 = 5*(sqrt(x^2 + y^2)) - 3*4
solve([eq1, eq2, eq3, eq4], (弦, r, x, y))

   1-element Vector{NTuple{4, Sym}}:
    (5, 1, 36/25, 48/25)

以下の数値の単位は「丈」

(弦, r, x, y) = (5, 1, 36/25, 48/25)
弦 |> println
中股 = sqrt(x^2 + y^2) |> println
円の直径 = 2r |> println
正三角形の一辺 = (2cos(PI/6)r).evalf() |> println

   5
   2.4
   2
   1.73205080756888

using Plots

function draw(zoomin=false, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (鉤, 股) = (3, 4)
   (弦, r, x, y) = (5, 1, 36/25, 48/25)
   plot([0, 股, 0, 0], [0, 0, 鉤, 0], color=:black, lw=0.5)
   circle(r, r, r, :blue)
   segment(0, 0, x, y, :red)
   plot!([r*(1-√3/2), r*(1+√3/2), r, r*(1-√3/2)], [r/2, r/2, 2r, r/2], color=:green, lw=0.5)
   if more
       point(股, 0, "股", :black, :left, :bottom)
       point(0, 鉤, " 鉤", :black, :left, :bottom)
       point(x, y, " (x,y)", :red, :left, :bottom)
       point(r, r, " (r,r)", :blue)
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;

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

算額(その308)

2023年07月01日 | Julia

算額(その308)

「三重県に現存する算額の研究」福島完(2007/2/13)
https://mie-u.repo.nii.ac.jp/?action=repository_uri&item_id=7216
三重県伊賀市 永保寺 弘化4年(1847)

問題文1 

正三角形2つが図のように組み合わされている。両者に重なりのない小さな正三角形一つの面積が 1456.612 である。このとき,正三角形の一辺,正六角形の一辺,正三角形の外接円の直径,正六角形の外接円の直径,正六角形の面積を求めよ。

正三角形の外接円の半径を r とする。

以下の方程式を解く。r が求まれば,あとは連鎖的に求まる。

include("julia-source.txt");

using SymPy

@syms r::positive
eq1 = (r*(1-sin(PI/6)))^2 * tan(PI/6) - 1456.612  # 小さな正三角形の面積
solve(eq1)[1] |> println  # r

   100.457473408692

r = 100.457473408692
2r*sin(PI/3).evalf() |> println  # 正三角形の一辺
2r*(1-sin(PI/6))*tan(PI/6).evalf() |> println  # 正六角形の一辺(正三角形の一辺の 1/3
2r |> println  # 正三角形の外接円の直径
(2r*sin(PI/3)*2/3).evalf() |> println  # 正六角形の一辺 の 2 倍
1456.612*6 |> println # 正六角形の面積 = 小さな正三角形の面積の6倍

   173.997447943854
   57.9991493146180
   200.914946817384
   115.998298629236
   8739.672

using Plots

function draw(zoomin=false, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   r = 100.457473408692
   x = zeros(6)
   y = zeros(6)
   delta = pi/3
   for i in 1:6
       θ = i*delta - pi/6
       x[i] = r*cos(θ)
       y[i] = r*sin(θ)
   end
   plot(x[[1,3,5,1]], y[[1,3,5,1]], color=:black, lw=0.5)
   plot!(x[[2,4,6,2]], y[[2,4,6,2]], color=:black, lw=0.5)
   circle(0, 0, r)
   if more
       point(r, 0, " r")
       vline!([0], color=:black, lw=0.5)
       hline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;

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

算額(その307)

2023年07月01日 | Julia

算額(その307)

「三重県に現存する算額の研究」福島完(2007/2/13)
https://mie-u.repo.nii.ac.jp/?action=repository_uri&item_id=7216
三重県伊賀市 永保寺 天保15年(1844)

問題文4 

図のような五芒星を一本の糸で作る。中にできた正五角形の面積が 730925坪(7309.25平方寸)のとき,正五角形の一辺の長さと糸の長さを求めよ。

正五角形の一辺の長さを 2a,とする。この面積は (2a)^2\*sqrt(10\*sqrt(5) + 25)/4 である(注)。
五芒星が内接する外円の半径を r,五芒星の第1象限にある角の x 座標を x1 とする。
以下の連立方程式を解く(a だけが求まれば,あとは連鎖的に求まるので,連立方程式を解かなくてもよい)。

include("julia-source.txt");

using SymPy

@syms a::positive, r::positive, x1::positive
eq1 = a/(r*sin(PI/10)) - tan(PI/5)
eq2 = (2a)^2*sqrt(10sqrt(5) + 25)/4 - 7309.25
eq3 = x1 - r*cos(PI/10)

solve([eq1, eq2, eq3], (a, r, x1))

   1-element Vector{Tuple{Sym, Sym, Sym}}:
    (32.5898173447572, 145.157179706289, 138.052681646693)

外円の半径 = 145.157180寸
正五角形の一辺の長さ = 2a = 65.179635寸
糸の長さ = 10x1 = 1380.526816寸

using Plots

function draw(zoomin=false, more=false)
   pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (a, r, x1) = (32.5898173447572, 145.157179706289, 138.052681646693)
   delta = 2pi/5
   x = zeros(5)
   y = zeros(5)
   for i in 1:5
       θ = pi/2 + (i - 2)delta
       x[i] = r*cos(θ)
       y[i] = r*sin(θ)
   end
   b = tan(pi/5)*y[1]
   @printf("外円の半径 = %.6f寸\n", r)
   @printf("正五角形の一辺の長さ = %.6f寸\n", 2a)
   @printf("糸の長さ = %.6f寸\n", 10x1)
   plot()
   circle(0, 0, r)
   plot!(x[[1,3,5,2,4,1]], y[[1,3,5,2,4,1]], color=:black, lw=0.5)
   if more
       point(r, 0, "r ", :red, :right, :bottom)
       point(0, y[1], " A", :green, :left, :bottom)
       point(tan(pi/5)*y[1], y[1], " B", :green, :left, :bottom)
       point(x[1], y[1], " C", :green, :left, :bottom)
       annotate!(29, 75, text("A:(0,y[1])\nB:tan(pi/5)*y[1],y[1]\nC:(x[1],y[1]))", :left, 10))
       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アクセスランキング にほんブログ村