ワイドレンズで星野写真を撮ってみた


ワイドレンズで星野写真を撮ってみた


算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円4個,半円,長方形
#Julia #SymPy #算額 #和算 #数学
長方形の中に,大円(半円)2 個,中円 2 個,小円 2 個を容れる。大円の直径が 3 寸のとき,中円の直径はいかほどか。

大円の半径と中心座標を \(r_1,\ (x_1,\ 0)\)
小円の半径と中心座標を \(r_2,\ (0,\ r_1 - r_2)\)
中円の半径と中心座標を \(r_3,\ (0,\ r_3)\)
とおき,以下の連立方程式の解を求める。
include("julia-source.txt"); # julia-source.txt ソース
@syms r1, x1, r2, r3
eq1 = r1 - (2r2 + 2r3)
eq2 = x1^2 + (r1 - r2)^2 - (r1 + r2)^2
eq3 = x1^2 + r3^2 - (r1 + r3)^2
res = solve([eq1, eq2, eq3], (x1, r2, r3))[2] # 2 of 2
(2*sqrt(3)*r1/3, r1/3, r1/6)
# r2
ans_r2 = res[2]
@show(ans_r2)
ans_r2 = r1/3
\(\displaystyle \frac{r_{1}}{3}\)
中円の半径 \(r_2\) は,大円の半径 \(r_1\) の 1/3 倍である。
大円の直径が 3 寸のとき,中円の直径は 1 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(x1, r2, r3) = (2*sqrt(3)*r1/3, r1/3, r1/6)
plot([x1, x1, -x1, -x1, x1], [-r1, r1, r1, -r1, -r1], color=:green, lw=0.5)
circle(x1, 0, r1, :magenta, beginangle=90, endangle=270)
circle(-x1, 0, r1, :magenta, beginangle=-90, endangle=90)
circle22(0, r1 - r2, r2)
circle22(0, 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(x1, 0, "大円:r1,(x1,0)", :magenta, :right, :vcenter, deltax=-delta)
point(0, r1 - r2, "中円:r2\n(0,r1-r2)", :red, :center, delta=-delta)
point(0, r3, "小円:r3:(0,r3)", :blue, :left, :vcenter, deltax=r3 + delta)
point(0, r1, "(0,r1)", :green, :center, :bottom, delta=delta/2)
point(0, 0, "(0,0)", :green, :center, delta=-delta)
end
end;
draw(3, true)
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円2個,半円,正三角形
#Julia #SymPy #算額 #和算 #数学
長方形の中に,大円(半円)2 個,小円 2 個,正三角形 1 個を容れる。大円の直径が 3 寸のとき,小円の直径はいかほどか。

大円の半径と中心座標を \(r_1,\ (x_1,\ r_1)\)
小円の半径と中心座標を \(r_2,\ (r_2,\ 2r_1 - r_2)\)
正三角形の頂点座標を \( (a/2,\ 0),\ (0,\ \sqrt{3}a/2)\)
とおき,以下の連立方程式の解を求める。
include("julia-source.txt"); # julia-source.txt ソース
@syms a, r1, x1, r2
eq1 = (x1 - r2)^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = dist2(0, √Sym(3)a/2, a/2, 0, x1, r1, r1)
eq3 = dist2(0, √Sym(3)a/2, a/2, 0, r2, 2r1 - r2, r2)
res = solve([eq1, eq2, eq3], (a, x1, r2))[2]
(2*r1*(1 + sqrt(3))/3, r1*(1/3 + 2*sqrt(3)/3), r1/3)
# r2: 小円の半径
ans_r2 = res[3]
@show(ans_r2)
ans_r2 = r1/3
\(\displaystyle \frac{r_{1}}{3}\)
小円の半径 \(r_2\) は,大円の半径 \(r_1\) の 1/3 倍である。
大円の直径が 3 寸のとき,小円の直径は 1 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(a, x1, r2) = (2*r1*(1 + sqrt(3))/3, r1*(1/3 + 2*sqrt(3)/3), r1/3)
plot([x1, x1, -x1, -x1, x1], [0, 2r1, 2r1, 0, 0], color=:green, lw=0.5)
plot!([a/2, 0, -a/2], [0, √3a/2, 0], color=:green, lw=0.5)
circle(x1, r1, r1, :blue, beginangle=90, endangle=270)
circle(-x1, r1, r1, :blue, beginangle=-90, endangle=90)
circle2(r2, 2r1 - r2, r2)
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(x1, r1, "大円:r1,(x1,r1)", :blue, :right, :vcenter, deltax=-delta)
point(r2, 2r1 - r2, "小円:r2\n(r2,2r1-r2)", :red, :center, delta=-delta)
point(a/2, 0, "(a/2,0)", :green, :center, delta=-delta)
point(0, 2r1, "(0,2r1)", :green, :center, :bottom, delta=delta/2)
point(0, 0, "(0,0)", :green, :center, delta=-delta)
point(0, √3a/2, "(0,√3a/2)", :green, :right, :vcenter, deltax=-delta)
end
end;
r1 = 3
draw(r1, true)
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円5個,半円
#Julia, #SymPy, #算額, #和算,#数学
半円の中に,甲円 2 個,乙円 1 個,丙円 2 個を容れる。甲円の直径が 5 寸のとき,丙円の直径はいかほどか。

半円の半径と中心座標を \(R,\ (0,\ 0)\)
甲円の半径と中心座標を \(r_1,\ (r_1,\ r_1)\)
乙円の半径と中心座標を \(r_2,\ (0,\ R - r_2)\)
丙円の半径と中心座標を \(r_3,\ (x_3,\ y_3)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
@syms R, r1::positive, r2, r3, x3, y3
eq1 = 2r1^2 - (R - r1)^2
eq2 = r1^2 + (r1 - R + r2)^2 - (r1 + r2)^2
eq3 = x3^2 + y3^2 - (R - r3)^2
eq4 = x3^2 + (R - r2 - y3)^2 - (r2 + r3)^2
eq5 = (r1 - x3)^2 + (r1 - y3)^2 - (r1 + r3)^2;
eq1, eq2, eq3, eq4 を解いて,\(R,\ r_2,\ x_3, y_3\) を求める。
res = solve([eq1, eq2, eq3, eq4], (R, r2, x3, y3))[4] # 4 of 4
(r1*(1 + sqrt(2)), r1*(-1 + sqrt(2)), sqrt(r3*(2*r1 - r3)), r1 + sqrt(2)*(r1 - r3))
得られた解を eq5 に代入し新たな方程式 eq5_2 とする。
eq5_2 = eq5(R => res[1], r2 => res[2], x3 => res[3], y3 => res[4]) |> factor
\(2 r_{1} \left(r_{1} - 2 r_{3} - \sqrt{2 r_{1} r_{3} - r_{3}^{2}}\right)\)
eq5_2 を解いて \(r_3\) を得る。
# r3
ans_r3 = solve(eq5_2, r3)[1]
\(\displaystyle \frac{r_{1}}{5}\)
丙円の半径 \(r_3\) は甲円の半径 \(r_1\) の 1/5 倍である。
甲円の直径が 5 寸のとき,丙円の直径は 1 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
r3 = r1/5
(R, r2, x3, y3) = (r1*(1 + √2), r1*(√2 - 1), sqrt(r3*(2r1 - r3)), r1 + √2(r1 - r3))
println( (R, r2, r3, x3, y3))
plot()
circle(0, 0, R, :green, beginangle=0, endangle=180)
circle2(r1, r1, r1, :magenta)
circle(0, R - r2, r2, :red)
circle2(x3, y3, 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(0, R, "(0,R)", :green, :center, :bottom, delta=delta/2)
point(0, 0, "外円:R,(0,0)", :green, :center, delta=-delta)
point(r1, r1, "甲円:r1,(r1,r1)", :magenta, :center, delta=-delta)
point(0, R - r2, "乙円:r2\n(0,R-r2)", :red, :center, delta=-delta)
point(x3, y3, "丙円:r3,(x3,y3)", :blue, :left, :bottom, delta=r3)
end
end;
r1 = 5/2
draw(r1, true)
(6.035533905932738, 1.0355339059327378, 0.5, 1.5, 5.32842712474619)
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円5個,直線上
#Julia, #SymPy, #算額, #和算,#数学
直線上に大円 2 個が交わっており,小円 3 個を容れる。大円の直径が 6 寸のとき,小円の直径はいかほどか。

大円の半径と中心座標を \(r_1,\ (x_1,\ r_1)\)
小円の半径と中心座標を \(r_2,\ (0,\ r_2),\ (0,\ r_1 \pm r_2)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
@syms r1, x1, r2
eq1 = x1^2 + r2^2 - (r1 - r2)^2
eq2 = x1^2 + (r1 - r2)^2 - (r1 + r2)^2
res = solve([eq1, eq2], (r2, x1))[2] # 2 of 2
(r1/6, sqrt(6)*r1/3)
# r2
res[1]
\(\displaystyle \frac{r_{1}}{6}\)
小円の半径 \(r_2\) は大円の半径 \(r_1\) の 1/6 倍である。
大円の直径が 6 寸のとき,小円の直径は 1 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(r2, x1) = r1.*(1/6, √6/3)
@printf("大円の直径が %.15g のとき,小円の直径は %.15g である。\n", 2r1, 2r2)
plot()
circle2(x1, r1, r1)
circle(0, r1 + r2, r2, :blue)
circle(0, r1 - r2, r2, :blue)
circle(0, 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(x1, r1, "大円:r1,(x1,r1)", :red, :left, :vcenter, deltax=delta)
point(0, r1 + r2, "小円:r2,(0,r1+r2)", :blue, :right, :vcenter, deltax=-r2 - delta)
point(0, r1 - r2, "小円:r2,(0,r1-r2)", :blue, :right, :vcenter, deltax=-r2 - delta)
point(0, r2, "小円:r2,(0,r2)", :blue, :right, :bottom, delta=delta, deltax=-r2 - 2delta)
point(0, 0, "(0,0)", :black, :center, delta=-delta)
end
end;
r1 = 6/2
draw(r1, true)
大円の直径が 6 のとき,小円の直径は 1 である。
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円9個,直線上
#Julia, #SymPy, #算額, #和算,#数学
直線上に大円 2 個が交わっており,小円 1 個,甲円 6 個を容れる。大円の直径が 6 寸のとき,甲円の直径はいかほどか。

大円の半径と中心座標を \(r_1,\ (x_1,\ r_1)\)
小円の半径と中心座標を \(r_2,\ (0,\ r_1)\)
甲円の半径と中心座標を \(r_3,\ (0,\ r_1 - r_2 - r_3),\ (r_2 - r_3,\ y_3)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
@syms r1, x1, r2, r3, y3
x1 = r1 - r2
eq1 = x1^2 + (r2 + r3)^2 - (r1 - r3)^2
eq2 = (r1 - 2r2 + r3)^2 + (r1 - y3)^2 - (r1 - r3)^2
eq3 = (2x1 - r1 + 2r2 - r3)^2 + (r1 - y3)^2 - (r1 + r3)^2;
res = solve([eq1, eq2, eq3], (r2, r3, y3))[2] # 2 of 4
(r1/2, r1/6, r1*(1 - sqrt(6)/3))
# r3
res[2]
\(\displaystyle \frac{r_{1}}{6}\)
甲円の半径 \(r_3\) は大円の半径 \(r_1\) の 1/6 倍である。
大円の直径が 7 寸のとき,甲円の直径は 1 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(r2, r3, y3) = (r1/2, r1/6, r1*(1 - sqrt(6)/3))
x1 = r1 - r2
@printf("大円の直径が %.15g のとき,甲円の直径は %.15g である。\n", 2r1, 2r3)
plot()
circle2(x1, r1, r1)
circle(0, r1, r2, :blue)
circle(0, r1 - r2 - r3, r3, :green)
circle2(r2 - r3, y3, r3, :green)
circle(0, r1 + r2 + r3, r3, :green)
circle2(r2 - r3, 2r1 - y3, r3, :green)
segment(r2, 0, r2, 2r1)
segment(-r2, 0, -r2, 2r1)
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(x1, r1, "大円:r1,(x1,r1)", :red, :left, :vcenter, deltax=delta)
point(0, r1, "小円:r2,(0,r1)", :blue, :center, :bottom, delta=delta)
point(0, r1 - r2 - r3, "甲円:r2,(0,r1-r2-r3)", :green, :left, :vcenter, deltax=r2 + delta)
point(r2 - r3, y3, "甲円:r2,(r2-r3,y3)", :green, :left, :vcenter, deltax=r3 + delta)
point(0, 0, "(0,0)", :black, :center, delta=-delta)
end
end;
r1 = 6/2
draw(r1, true)
大円の直径が 6 のとき,甲円の直径は 1 である。
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円6個
#Julia, #SymPy, #算額, #和算,#数学
大円 3 個が交わっており,小円 3 個を容れる。大円の直径が 7 寸のとき,小円の直径はいかほどか。

大円の半径と中心座標を \(r_1,\ (0,\ r1),\ (\sqrt{3}r_1,\ -r_1/2)\)
小円の半径と中心座標を \(r_2,\ (x_2,\ x_2/\sqrt{3})\)
とおき,以下の連立方程式を解いて \(r_2\) が与えられたときの \(r_1\) を求める。
include("julia-source.txt"); # julia-source.txt ソース
@syms r1::positive, x1::positive, y1::negative, r2::positive, x2::positive, y2::negative
x1 = √Sym(3)r1/2
y1 = -r1/2
y2 = -x2/√Sym(3)
eq1 = x1^2 + (2r1 - r2 - y1)^2 - (r1 + r2)^2
eq2 = x2^2 + (r1 - y2)^2 - (r1 + r2)^2
res = solve([eq1, eq2], (r2, x2))[1]
(6*r1/7, 4*sqrt(3)*r1/7)
# r2
res[1]
\(\displaystyle \frac{6 r_{1}}{7}\)
小円の半径 \(r_2\) は大円の半径 \(r_1\) の 7/6 倍である。
大円の直径が 7 寸のとき,小円の直径は 6 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(r2, x2) = r1.*(6/7, 4√3/7)
y2 = -x2/√3
x1 = √3r1/2
y1 = -r1/2
@printf("大円の直径が %.15g のとき,小円の直径は %.15g である。\n", 2r1, 2r2)
plot()
rotate(0, r1, r1)
rotate(0, 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, r1, "大円:r1,(0,r1)", :red, :center, delta=-delta/2)
point(0, 2r1 - r2, "小円:r2,(0,2r1-r2)", :blue, :center, :bottom, delta=delta)
point(x1, y1, "(x1,y1)", :red, :left, :bottom, delta=delta)
point(x2, y2, "(x2,y2)", :blue, :left, delta=-delta)
end
end;
draw(7, true)
大円の直径が 14 のとき,小円の直径は 12 である。
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円7個,外円,二等辺三角形
#Julia #SymPy #算額 #和算 #数学
外円の中に二等辺三角形を設け,甲円 4 個,乙円 2 個を容れる。甲円の直径が 8 寸のとき,乙円の直径はいかほどか。

外円の半径と中心座標を \(R,\ (0,\ 0)\)
外円の円周上にある二等辺三角形の頂点座標を \( (\sqrt{R^2 - y^2},\ y),\ (0,\ R)\)
甲円の半径と中心座標を \(r_1,\ (r_1,\ y + r_1),\ (r_1,\ y - r_1)\)
乙円の半径と中心座標を \(r_2,\ (x_2,\ y_2)\)
とおき,以下の連立方程式の数値解を求める。
include("julia-source.txt"); # julia-source.txt ソース
function driver(r1)
function H(u)
function parameters()
eq1 = r1^2 + (y - r1)^2 - (R - r1)^2
eq2 = x2^2 + y2^2 - (R - r2)^2
eq3 = dist3(0, R, sqrt(R^2 - y^2), y, r1, y + r1, r1)
eq4 = dist3(0, R, sqrt(R^2 - y^2), y, x2, y2, r2)
eq5 = (R - y)/sqrt(R^2 - y^2) - x2/y2
return [eq1, eq2, eq3, eq4, eq5]
end;
(R, y, r2, x2, y2) = u
return parameters()
end;
iniv = BigFloat[3.1, -0.88, 0.63, 2.0, 1.5].*r1
res = nls(H, ini=iniv)
res[2] || println("収束していない")
return res[1]
end;
甲円の半径 \(r_1\) に任意の値を与えて解を求め,比 \(p = r_2/r_1\) を求める。
r1 = pi
(R, y, r2, x2, y2) = driver(r1)
(R, y, r2, x2, y2) |> println
(9.817477042468104, -2.748893571891069, 1.9634954084936207, 6.283185307179586, 4.71238898038469)
println(r2)
1.9634954084936207
p = r2/r1
0.625
sympy.nsimplify(r2/r1)
\(\displaystyle \frac{5}{8}\)
乙円の半径 \(r_2\) は,甲円の半径 \(r_1\) の 5/8 倍である。
甲円の直径が 8 寸のとき,乙円の直径は 5 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(R, y, r2, x2, y2) = driver(r1)
x = sqrt(R^2 - y^2)
plot([x, 0, -x, x], [y, R, y, y], color=:green, lw=0.5)
circle(0, 0, R, :magenta)
circle2(r1, y + r1, r1)
circle2(r1, y - r1, r1)
circle2(x2, 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(0, 0, "外円:R,(0,0)", :magenta, :right, :vcenter, deltax=-delta)
point(r1, y + r1, "甲円:r1,(r1,y+r1)", :red, :center, delta=-delta)
point(r1, y - r1, "甲円:r1,(r1,y-r1)", :red, :center, delta=-delta)
point(x2, y2, "乙円:r2\n(x2,y2)", :blue, :center, delta=-delta)
point(0, y, "(0,y)", :green, :center, delta=-delta)
point(x, y, "(x,y)", :green, :right, delta=-delta)
end
end;
r1 = 8/2
draw(r1, true)
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円5個,長方形,斜線
#Julia #SymPy #算額 #和算 #数学
長方形の中に斜線を 2 本引き,大円 1 個,小円 4 個を容れる。大円の直径が 4 寸のとき,小円の直径はいかほどか。

長方形の長辺,短辺を \(b,\ h;\ h = 2r_1\)
斜線と長方形の長辺の交点座標を \( (a,\ 0)\)
大円の半径と中心座標を \(r_1,\ (0,\ r_1)\)
小円の半径と中心座標を \(r_2,\ (b - r_2,\ r_2),\ (2\sqrt{r_1 r_2},\ h - r_2)\)
とおき,以下の連立方程式の解を求める。
include("julia-source.txt"); # julia-source.txt ソース
@syms a, b, h, r1, r2
h = 2r1
eq1 = r1^2 - a*b # 算法助術-公式82
# eq2 = (b - a) + h - sqrt( (b - a)^2 + h^2) - 2r2
eq2 = (b - a) + h - (a + b) - 2r2 # 斜線の長さは a + b
eq3 = r2/(b - 2sqrt(r1*r2)) - r1/b;
res = solve([eq1, eq2, eq3], (r2, a, b))[1];
# r2: 小円の半径
ans_r2 = res[1]
\(\displaystyle \frac{r_{1}}{4}\)
小円の半径は,大円の半径の 1/4 倍である。
大円の直径が 4 寸のとき,小円の直径は 1 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(r2, a, b) = (r1/4, 3*r1/4, 4*r1/3)
@printf("大円の直径が %.15g のとき,小円の直径は %.15g である。\n", 2r1, 2r2)
h = 2r1
plot([b, b, -b, -b, b], [0, h, h, 0, 0], color=:green, lw=0.5)
segment(a, 0, b, h)
segment(-a, 0, -b, h)
circle(0, h/2, r1, :blue)
circle2(2sqrt(r1*r2), h - r2, r2)
circle2(b - r2, r2, r2)
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)", :blue, :center, delta=-delta)
point(b - r2, r2, "小円:r2\n(b-r2,r2)", :red, :center, delta=-delta)
point(2sqrt(r1*r2), h - r2, "小円:r2,(2sqrt(r1*r2),h-r2)", :red, :right, :bottom, delta=r2 + delta/2, deltax=4delta)
point(a, 0, "(a,0)", :green, :center, delta=-delta)
point(b, 0, "(b,0)", :green, :center, delta=-delta)
point(b, h, "(b,h)", :green, :center, :bottom, delta=delta/2)
point(0, 0, "(0,0)", :green, :center, delta=-delta)
end
end;
r1 = 4/2
draw(r1, true)
大円の直径が 4 のとき,小円の直径は 1 である。
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円5個,正方形,斜線
#Julia #SymPy #算額 #和算 #数学
正方形の中に斜線を 4 本引き,大円 4 個,小円 1 個を容れる。大円の直径が 5 寸のとき,小円の直径はいかほどか。

正方形の一辺の長さを \(a\)
大円の半径と中心座標を \(r_1,\ (a/2 - r_1,\ 0)\)
小円の半径と中心座標を \(r_2,\ (0,\ 0)\)
とおき,以下の連立方程式の解を求める。
include("julia-source.txt"); # julia-source.txt ソース
@syms a::positive, r1::positive, r2::positive
eq1 = dist2(0, 2r1 - a/2, a/2, a/2, a/2 - r1, 0, r1)
eq2 = dist2(0, 2r1 - a/2, a/2, a/2, 0, 0, r2)
res = solve([eq1, eq2], (r2, a))[2] # 2 of 2;
(3*r1/5, 6*r1)
# r2: 小円の半径
ans_r2 = res[1]
\(\displaystyle \frac{3 r_{1}}{5}\)
小円の半径は,大円の半径の 3/5 倍である。
大円の直径が 5 寸のとき,小円の直径は 3 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(r2, a) = r1.*(3/5, 6)
plot([1, 1, -1, -1, 1].*a/2, [-1, 1, 1, -1, -1].*a/2, color=:green, lw=0.5)
plot!([a/2, 0, -a/2], [-a/2, a/2 - 2r1, -a/2], color=:green, lw=0.5)
plot!([a/2, 0, -a/2], [a/2, -a/2 + 2r1, a/2], color=:green, lw=0.5)
circle42(0, a/2 - r1, r1, :blue)
circle(0, 0, r2)
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, a/2, "(a/2,a/2)", :green, :right, :bottom, delta=0.4delta)
point(a/2 - r1, 0, "大円:r1,(a/2-r1,0)", :blue, :center, delta=-delta)
point(0, 0, "小円:r2\n(0,0)", :red, :center, delta=-delta)
#adjust_xlims!(right=5delta)
end
end;
draw(5, true)
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円2個,四分円,正方形
#Julia #SymPy #算額 #和算 #数学
正方形の中に甲円 1 個,乙円 1 個,四分円 2 個,小正方形 1 個を容れる。甲円の直径が 39 寸のとき,乙円の直径はいかほどか。

正方形の一辺の長さを \(a,\ b\)
甲円の半径と中心座標を \(r_1,\ (0,\ b + r_1)\)
乙円の半径と中心座標を \(r_2,\ (0,\ a - r_2)\)
とおき,以下の連立方程式の解を求める。
include("julia-source.txt"); # julia-source.txt ソース
@syms a::positive, b::positive, R::positive, r1::positive, r2::positive
R = a
eq1 = (a/2)^2 + (b + r1)^2 - (R - r1)^2
eq2 = (a/2)^2 + (a - r2)^2 - (R + r2)^2
eq3 = (a/2 + b/2)^2 + b^2 - R^2
res = solve([eq1, eq2, eq3],(r2, a, b))[1]
(20*r1/39, 320*r1/39, 64*r1/13)
# r2: 乙円の半径
ans_r2 = res[1]
\(\displaystyle \frac{20 r_{1}}{39}\)
乙円の半径は,甲円の半径の 20/39 倍である。
甲円の直径が 39 寸のとき,乙円の直径は 20 寸である。
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(r2, a, b) = r1.*(20/39, 320/39, 64/13)
R = a
println( (r2, a, b))
plot([1, 1, -1, -1, 1].*a/2, [0, 1, 1, 0, 0].*a, color=:green, lw=0.5)
plot!([1, 1, -1, -1, 1].*b/2, [0, 1, 1, 0, 0].*b, color=:green, lw=0.5)
circle(a/2, 0, R, :magenta, beginangle=90, endangle=180)
circle(-a/2, 0, R, :magenta, beginangle=0, endangle=90)
circle(0, a - r2, r2, :blue)
circle(0, b + r1, r1)
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, "(0,0)", :green, :center, delta=-delta)
point(b/2, 0, "(b/2,0)", :green, :center, delta=-delta)
point(0, a, "(0,a)", :green, :center, :bottom, delta=0.4delta)
point(a/2, a, "(a/2,a)", :green, :center, :bottom, delta=0.4delta)
point(0, b, "(0,b)", :green, :center, delta=-delta)
point(a/2, 0, "(a/2,0)", :green, :center, delta=-delta)
point(0, a - r2, "乙円:r2,(a-r2,r2)", :red, :center, delta=-delta)
point(0, b + r1, "甲円:r1\n(b,b+r1)", :blue, :center, :bottom, delta=delta/2)
end
end;
draw(39, true)
(20.0, 320.0, 192.0)
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円4個,円弧,正三角形
#Julia #SymPy #算額 #和算 #数学
正三角形の中に円弧を隔てて全円 1 個,上円 1 個,下円 2 個を容れる。上円の直径が 5 寸のとき,下円の直径はいかほどか。

正三角形の一辺の長さを \(a\)
斜線と辺の交点座標を \( (c_x,\ c_y),\ (d_x,\ d_y)\)
全円の半径と中心座標を \(r_0,\ (0,\ r_0);\ r_0 = a/2√3\)
上円の半径と中心座標を \(r_1,\ (0,\ 2r_0 + r_1)\)
下円の半径と中心座標を \(r_2,\ (2\sqrt{r_0 r_2},\ r_2)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
@syms r1, r0, a, x1, y1, r2, cx, dx
r0 = a/2√Sym(3)
cy = √Sym(3)*(a/2 - cx)
dy = √Sym(3)*(a/2 - dx)
eq1 = dist2(-a/2, 0, cx, cy, 0, r2, r2) |> numerator
eq2 = dist2(-a/2, 0, cx, cy, 0, y1, r1) |> numerator
eq3 = dist2(-a/2, 0, dx, dy, 0, 2r0 + r1, r1) |> numerator
eq4 = dist2(-a/2, 0, dx, dy, 0, y1, r1) |> numerator
eq5 = a/2 - (2sqrt(r0*r1) + √Sym(3)r1);
一度に解けないが,以下の順で一つづつ解けばよい。
# a を求める
ans_a = solve(eq5, a)[2] # 2 of 2
\(6 \sqrt{3} r_{1}\)
# dx を求める
eq3_2 = eq3(a => ans_a) |> factor
\(- 1728 dx r_{1}^{2} \left(- 7 dx + 5 \sqrt{3} r_{1}\right)\)
ans_dx = solve(eq3_2, dx)[2] # 2 of 2
\(\displaystyle \frac{5 \sqrt{3} r_{1}}{7}\)
# y1 を求める
eq4_2 = eq4(a => ans_a, dx => ans_dx) |> factor
\(\displaystyle \frac{156 r_{1}^{2} \left(- 53 r_{1} + 13 y_{1}\right) \left(- 7 r_{1} + y_{1}\right)}{49}\)
ans_y1 = solve(eq4_2, y1)[1] # 1 of 2
\(\displaystyle \frac{53 r_{1}}{13}\)
# cx を求める
eq2_2 = eq2(a => ans_a, y1 => ans_y1) |> factor
\(\displaystyle \frac{36 r_{1}^{2} \left(784 cx^{2} - 1757 \sqrt{3} cx r_{1} + 2565 r_{1}^{2}\right)}{169}\)
ans_cx = solve(eq2_2, cx)[2] # 2 of 2
\(\displaystyle \frac{171 \sqrt{3} r_{1}}{112}\)
# r2 を求める
eq1_2 = eq1(a => ans_a, cx => ans_cx) |> factor
\(\displaystyle \frac{4455 r_{1}^{2} \left(15 r_{1} - 11 r_{2}\right) \left(99 r_{1} + 5 r_{2}\right)}{784}\)
ans_r2 = solve(eq1_2, r2)[2] # 2 of 2
\(\displaystyle \frac{15 r_{1}}{11}\)
下円の半径 \(r_2\) は,上円の半径 \(r_1\) の 15/11 倍である。
上円の直径が 11 寸のとき,下円の直径は 15 寸である。
ちなみに,三角形の一辺の長さとの比を取ると,上円の直径は三角形の一辺の長さの \(\displaystyle \frac{\sqrt{3}}{9}\) 倍,下円の直径は三角形の一辺の長さの \(\displaystyle \frac{5\sqrt{3}}{33}\) 倍である。
2r1/ans_a
\(\displaystyle \frac{\sqrt{3}}{9}\)
2ans_r2/ans_a
\(\displaystyle \frac{5 \sqrt{3}}{33}\)
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(a, dx, y1, cx, r2) = r1.*(6√3, 5√3/7, 53/13, 171√3/112, 15/11)
println( (a, dx, y1, cx, r2))
r0 = a/2√3
cy = √3(a/2 - cx)
dy = √3(a/2 - dx)
plot([a/2, 0, -a/2, a/2], [0, √3a/2, 0, 0], color=:green, lw=0.5)
circle(0, 2r0 + r1, r1, :blue)
circle(0, y1, r1, :blue)
circle(0, r2, r2)
circle(0, r0, r0, :orange)
segment(-a/2, 0, cx, cy)
segment(-a/2, 0, dx, dy)
segment(a/2, 0, -cx, cy)
segment(a/2, 0, -dx, dy)
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, r0, "全円:r0,(0,r0)", :orange, :left, :vcenter, deltax=3delta)
point(a/2, 0, "(a/2,0)", :green, :right, delta=-delta)
point(0, 0, "(0,0)", :green, :center, delta=-delta)
point(0, √3a/2, "(0,√3a/2)", :green, :center, :bottom, delta=delta/2)
point(cx, cy, "(cx,cy)", :green, :left, :vcenter, deltax=delta)
point(dx, dy, "(dx,dy)", :green, :left, :vcenter, deltax=delta)
point(0, r2, "下円:r2,(0,r2)", :red, :center, delta=-delta)
point(0, y1, "上円:r1\n(0,y1)", :blue, :center, :bottom, delta=delta/2)
point(0, 2r0 + r1, "上円:r1\n(0,2r0+r1)", :blue, :center, :bottom, delta=delta/2)
end
end;
draw(11, true)
(114.3153532995459, 13.608970630898321, 44.84615384615384, 29.089174723545163, 14.999999999999998)
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円4個,円弧,正三角形
#Julia #SymPy #算額 #和算 #数学
正三角形の中に円弧を隔てて全円 1 個,上円 1 個,下円 2 個を容れる。上円の直径が 5 寸のとき,下円の直径はいかほどか。

注:問題は簡潔に記載されているが,算額(その2458)でも注記した通り,円弧は正三角形の頂点を通るだけではなく,正三角形の重心も通り,辺に接する。つまり,正三角形の一辺の長さを \(a\),外円の半径と中心座標を \(R,\ (x_0,\ y_0)\)としたとき,
\(x_0 = a/2,\ R = y_0 = a/\sqrt{3}\) である。
そのほか,
全円の半径と中心座標を \(r_0,\ (0,\ r_0);\ r_0 = R/2\)
上円の半径と中心座標を \(r_1,\ (0,\ 2r_0 + r_1)\)
下円の半径と中心座標を \(r_2,\ (2\sqrt{r_0 r_2},\ r_2)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
@syms r1, r0, a, x1, y1, r2
R = a/√Sym(3)
r0 = R/2
x0 = a/2
y0 = R
x2 = 2sqrt(r0*r2)
eq1 = x0^2 + r1^2 - (R - r1)^2
eq2 = x2^2 + (r2 + r0)^2 - (R - r2)^2
res = solve([eq1, eq2], (r2, a))[2] # 2 of 2
(6*r1/5, 8*sqrt(3)*r1)
# r2: 下円の半径
ans_r2 = res[1]
@show(ans_r2)
ans_r2 = 6*r1/5
\(\displaystyle \frac{6 r_{1}}{5}\)
下円の半径は上円の半径の 6/5 倍である。
上円の直径が 5 寸のとき,下円の直径は 6 寸である。
# a:正三角形の一辺の長さ
ans_a = res[2]
@show(ans_a)
ans_a = 8*sqrt(3)*r1
\(8 \sqrt{3} r_{1}\)
# R: 外円(円弧)の半径
ans_a/√Sym(3)
\(8 r_{1}\)
# r0: 全円の半径
ans_a/√Sym(3)/2
\(4 r_{1}\)
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
(r2, a) = (6r1/5, 8√3r1)
R = a/√3
r0 = R/2
x0 = a/2
y0 = R
x2 = 2sqrt(r0*r2)
@printf("上円の直径が %.15g のとき,下円の直径は %.15g, 三角形の一辺の長さは %.15g,円弧(外円)の直径は %.15g,全円の直径は %.15g である。\n",
2r1, 2r2, a, 2R, 2r0)
plot([a/2, 0, -a/2, a/2], [0, √3a/2, 0, 0], color=:green, lw=0.5)
circle(x0, y0, R, beginangle=150, endangle=270)
circle(-x0, y0, R, beginangle=-90, endangle=30)
circle(0, -a/2√3, R, beginangle=30, endangle=150)
circle2(x2, r2, r2, :blue)
circle(0, 2r0 + r1, r1, :magenta)
circle(0, r0, r0)
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(x0, y0, "外円:R,(x0,y0)", :red, :right, :bottom, delta=delta/2)
point(0, R + r1, "上円:r1,(0,R+r1)", :magenta, :left, :bottom, delta=3delta, deltax=8delta)
point(x2, r2, "下円:r2,(x2,r2)", :blue, :right, delta=-r2 - delta, deltax=3delta)
point(a/2, 0, "(a/2,0)", :green, :right, delta=-delta)
point(0, 0, "(0,0)", :green, :center, delta=-delta)
point(0, r0, "(0,r0)", :black, :left, :bottom, delta=delta/2, deltax=2delta)
point(0, √3a/2, "(0,√3a/2)", :green, :center, :bottom, delta=delta/2)
point(0, -r0, "(0,-r0)", :red, :center, delta=-delta)
end
end;
draw(5/2, true)
上円の直径が 5 のとき,下円の直径は 6, 三角形の一辺の長さは 34.6410161513775,円弧(外円)の直径は 40,全円の直径は 20 である。
以下のアイコンをクリックして応援してください
算法便覧,武田真元著,高岡貞覚,秋田伊任校,文化11年(1814)
東北大学総合知デジタルアーカイブ
Tohoku University Digital Archives (ToUDA)
https://touda.tohoku.ac.jp/collection/database/library//10020000003479
キーワード:円3個,円弧,正三角形
#Julia #SymPy #算額 #和算 #数学
正三角形の中に円弧を隔てて甲円 2 個乙円 1 個を容れる。甲円の直径が 64 寸のとき,乙円の直径はいかほどか。

注:問題は簡潔に記載されているが,予備的な分析により,円弧は正三角形の頂点を通るだけではなく,正三角形の重心も通り,辺に接する。つまり,正三角形の一辺の長さを \(a\),外円の半径と中心座標を \(r_0,\ (x_0,\ y_0)\)としたとき,
\(x_0 = a/2,\ y_0 = a/\sqrt{3},\ r_0 = y_0\) である。
そのほか,
甲円の半径と中心座標を \(r_1,\ (x_1,\ y_1)\)
乙円の半径と中心座標を \(r_1,\ (0,\ r_-2)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
@syms r1, r0, a, x1, y1, r2
x0 = a/2
y0 = a/√Sym(3)
r0 = y0
eq3 = (x0 - x1)^2 + (y0 - y1)^2 - (r0 - r1)^2
eq4 = (x0 + x1)^2 + (y0 - y1)^2 - (r0 + r1)^2
eq5 = x0^2 + (y0 - r2)^2 - (r0 + r2)^2
eq6 = dist2(a/2, 0, 0, √Sym(3)a/2, x1, y1, r1)
res = solve([eq3, eq4, eq5], (a, x1, y1))[5] # 5 of 6
(16*sqrt(3)*r2/3, 2*sqrt(3)*(-4*r2 + sqrt(r1^2 + 8*r1*r2 + 16*r2^2))/3, 16*r2/3 - sqrt(-3*r1^2 + 64*r2^2)/3)
eq6_2 = eq6(a => res[1], x1 => res[2], y1 => res[3]) |> factor
\(\displaystyle - \frac{3 r_{1}^{2} - 288 r_{1} r_{2} - 1664 r_{2}^{2} - 64 r_{2} \sqrt{- 3 r_{1}^{2} + 64 r_{2}^{2}} + 384 r_{2} \sqrt{r_{1}^{2} + 8 r_{1} r_{2} + 16 r_{2}^{2}} + 12 \sqrt{- 3 r_{1}^{2} + 64 r_{2}^{2}} \sqrt{r_{1}^{2} + 8 r_{1} r_{2} + 16 r_{2}^{2}}}{36}\)
# r2 乙円の半径
ans_r2 = solve(eq6_2, r2)[1]
@show(ans_r2)
ans_r2 = 49*r1/64
\(\displaystyle \frac{49 r_{1}}{64}\)
乙円の半径は,甲円の半径の 49/64 倍である。
甲円の直径が 64 寸のとき,乙円の直径は 49 寸である。
# a:正三角形の一辺の長さ
ans_a = res[1](r2 => 49r1/64)
\(\displaystyle \frac{49 \sqrt{3} r_{1}}{12}\)
# r0: 外円(円弧)の半径
ans_a/√Sym(3)
\(\displaystyle \frac{49 r_{1}}{12}\)
function draw(r1, more=false)
pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
r2 = 49r1/64
(a, x1, y1) = (16*sqrt(3)*r2/3, 2*sqrt(3)*(-4*r2 + sqrt(r1^2 + 8*r1*r2 + 16*r2^2))/3, 16*r2/3 - sqrt(-3*r1^2 + 64*r2^2)/3)
x0 = a/2
y0 = (x0 + a/2)/√3
r0 = y0
println( (a, r0, x0, y0, x1, y1, r2))
plot([a/2, 0, -a/2, a/2], [0, √3a/2, 0, 0], color=:green, lw=0.5)
circle(x0, y0, r0, beginangle=150, endangle=270)
circle(-x0, y0, r0, beginangle=-90, endangle=30)
circle2(x1, y1, r1, :blue)
circle(0, r2, r2, :magenta)
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(x0, y0, "外円:r0,(x0,y0)", :red, :right, :bottom, delta=delta/2)
point(x1, y1, "甲円:r1,(x1,y1)", :blue, :center, delta=-delta)
point(0, r2, "乙円:r2,(0,r2)", :magenta, :center, delta=-delta)
point(a/2, 0, "(a/2,0)", :green, :right, delta=-delta)
point(0, 0, "(0,0)", :green, :right, delta=-delta)
point(0, √3a/2, "(0,√3a/2)", :green, :center, :bottom, delta=delta/2)
end
end;
draw(64/2, true)
(226.3213055223333, 130.66666666666666, 113.16065276116665, 130.66666666666666, 36.95041722813605, 68.0, 24.5)
以下のアイコンをクリックして応援してください