算額あれこれ

算額問題をコンピュータで解きます

算額(その2220)

福島県三春町大字七草木字松山(旧七草木村)若草木神社 明治11年(1878) 

街角の数学 Street Wasan ~落書き帳「○△□」~ 11. 種明かし
http://streetwasan.web.fc2.com/math15.5.18.html
キーワード:円1個,菱形,斜線
#Julia #SymPy #算額 #和算 #数学


図のように,菱形とその内接円がある。今,菱形の辺と異なる円の接線を引き,菱形の 2 辺を切る。

このときf図の赤,青,緑の線分の長さ平,甲,乙について,次の等式が成り立つことを示せ。
 \( (平/2)^2 = 甲\cdot 乙\)

これは,算法助術の公式45 そのものである。


図のように菱形 \({\rm ABCD}\) に内接する円に線分 \({\rm PQ}\) が接しているとする。

このとき \({\rm AC}^2 = 4{\rm AP} \cdot {\rm CQ}\) が成り立つ。

証明

\(\triangle {\rm OAP}\) と \(\triangle {\rm QCO}\) が相似であることを証明すればよい。

相似であるならば

\(\displaystyle \displaystyle \frac{{\rm OA}}{{\rm AP}}=\frac{{\rm QC}}{{\rm CO}}\)

となり,これに \({\rm OA} = {\rm OC} = \frac12 {\rm AC}\) を代入すれば,求める等式になるからである。

さて
\(\angle {\rm AOE} = \angle {\rm COF} = \alpha\)
\(\angle {\rm EOP} = \angle {\rm GOP} = \beta\)
\(\angle {\rm QOG} = \angle {\rm QOF} = \gamma\)
とおくと \(2(\alpha+\beta+\gamma)=180^\circ\)
すなわち \(\alpha+\beta+\gamma=90^\circ\)
ゆえに
\(\angle {\rm AOP}=\alpha+\beta\)
\(\angle {\rm CQO}=90^\circ-\gamma=\alpha+\beta\)
また,\(\angle {\rm OAP}=\angle {\rm OCQ}\) であるから,\(\triangle {\rm OAP}\) と \(\triangle {\rm QCO}\) は,対応する角が一致することから,相似である。

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2219)

福島郷社稲荷社 明治23年(1890)

街角の数学 Street Wasan ~落書き帳「○△□」~ 77. 雅な団扇(その2)
http://streetwasan.web.fc2.com/math15.9.1.html
キーワード:円3個,外円,菱形,団扇
#Julia #SymPy #算額 #和算 #数学


団扇の中に,等円 2 個と菱形を容れる。菱形の長い方の対角線(菱長)が 4.8 寸,等円の直径が 1.6 寸のとき,団扇の直径はいかほどか。

団扇の半径と中心座標を \(R,\ (0,\ 0)\)
等円の半径と中心座標を \(r,\ (r,\ y)\)
菱長,菱平(短い方の対角線)を \(2a,\ 2b\)
とおき以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース
using SymPy
@syms R::positive, a::positive, b::positive, r::positive, y::negative
# a = 48//20
# r = 16//20
eq1 =  a^2 + (R - b)^2 - R^2
eq2 = r^2 + y^2 - (R - r)^2
eq3 = dist2(0, R - 2b, a, R - b, r, y, r);

まず,eq1, eq2 を解いて \(b,\ y\) を求める。

res = solve([eq1, eq2], (b, y))[1]

    (R - sqrt(R - a)*sqrt(R + a), -sqrt(R)*sqrt(R - 2*r))

eq3 に代入し,新たな方程式を得る。

eq3_2 = eq3(b => res[1], y => res[2]) |> expand |> simplify |> x -> x/a

    \(\displaystyle - 2 R^{\frac{3}{2}} a \sqrt{R - 2 r} + 2 R^{\frac{3}{2}} r \sqrt{R - 2 r} + 4 \sqrt{R} a \sqrt{R - a} \sqrt{R + a} \sqrt{R - 2 r} - 2 \sqrt{R} r \sqrt{R - a} \sqrt{R + a} \sqrt{R - 2 r} + 6 R^{2} a - 6 R^{2} r - 2 R a r - 4 R a \sqrt{R^{2} - a^{2}} + 6 R r \sqrt{R^{2} - a^{2}} - 4 a^{3} + 4 a^{2} r - a r^{2}\)

さらに,\(\sqrt{R}\) を \(s\), \(\sqrt{r}\) を \(t\) とおく。

@syms s, t
eq3_3 = eq3_2(√R => s, √r => t) |> simplify

    \(- 4 a^{3} + 4 a^{2} t^{2} + 6 a s^{4} - 2 a s^{3} \sqrt{s^{2} - 2 t^{2}} - 2 a s^{2} t^{2} - 4 a s^{2} \sqrt{- a^{2} + s^{4}} + 4 a s \sqrt{- a + s^{2}} \sqrt{a + s^{2}} \sqrt{s^{2} - 2 t^{2}} - a t^{4} - 6 s^{4} t^{2} + 2 s^{3} t^{2} \sqrt{s^{2} - 2 t^{2}} + 6 s^{2} t^{2} \sqrt{- a^{2} + s^{4}} - 2 s t^{2} \sqrt{- a + s^{2}} \sqrt{a + s^{2}} \sqrt{s^{2} - 2 t^{2}}\)

方程式を解いて \(s\) を求める。

ans_s = solve(eq3_3, s)

    \(\displaystyle \left[\begin{smallmatrix}\frac{\sqrt{\frac{- 4 a^{2} + 4 a t^{2} - t^{4}}{- a + t^{2}}}}{2}\\- \frac{\sqrt{\frac{4 a^{2} - 4 a t^{2} + t^{4}}{a - t^{2}}}}{2}\end{smallmatrix}\right]\)

解(どちらでもよい)の中の \(t\) を \(\sqrt{r}\) に戻し,二乗すれば \(R\) が求まる。

ans_R = (ans_s[1](t => √r))^2 |> factor
@show(ans_R)

    ans_R = -(-2*a + r)^2/(4*(-a + r))

    \(\displaystyle - \frac{\left(- 2 a + r\right)^{2}}{4 \left(- a + r\right)}\)

団扇の直径 \(2R\) は, \(\displaystyle \frac{(2a - r)^2}{2a - 2r}\) である。
菱長が 4.8 寸,等円の直径が 1.6 寸のとき,団扇の直径は 5 寸である。

# R: 半径
ans_R(a => 4.8/2, r => 1.6/2)

    \(2.5\)

# 2R: 直径
(4.8 - 1.6/2)^2/(4.8 - 1.6)

    5.0

描画関数プログラムのソースを見る

function draw(a, r, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    R = (2*a - r)^2/4(a - r)
    (b, y) = (R - sqrt(R - a)*sqrt(R + a), -sqrt(R)*sqrt(R - 2*r))
    @printf("a = %g, r = %g, R = %g, b = %g, y = %g\n", a, r, R, b, y)
    plot([a, 0, -a, 0, a], [R - b, R, R - b, R - 2b, R - b], color=:green, lw=0.5)
    circle(0, 0, R)
    circle2(r, y, r, :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)", :red, :center, delta=-delta)
        point(a, R - b, " (a,R-b)", :green, :left, :vcenter)
        point(0, R - 2b, "(0,R-2b)", :green, :left, delta=-delta, deltax=delta)
        point(r, y, "等円:r,(r,y)", :blue, :center, delta=-delta)
        xlims!(-a - 3delta, a + 9delta)
    end
end;
draw(4.8/2, 1.6/2, true)

    a = 2.4, r = 0.8, R = 2.5, b = 1.8, y = -1.5

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2218)

街角の数学 Street Wasan ~落書き帳「○△□」~ 55. 完全数

http://streetwasan.web.fc2.com/math15.7.12.html
キーワード:円多数,外円
#Julia #SymPy #算額 #和算 #数学


算額(その0043)」において,中円,小円を増量したものである。
それぞれの半径が外円の半径の何分の一かがわかるので,計算不要で図が描ける。
ここでは極小円なども加えて,実に賑やかなものになった。隙間にはまだまだ小さな円を詰め込む余地がある。

外円,大円,中円,小円,極小円の半径を \(R,\ r_1,\ r_2,\ r_3,\ r_4\) とする。
\(R = 12\) のとき,\(r_1 = R/2 = 6,\ r2 = R/3 = 4,\ r3 = r_1/3 = R/6 = 2,\ r_4 = r_3/2 = R/12 = 1\) である。

include("julia-source.txt");  # julia-source.txt ソース

描画関数プログラムのソースを見る

function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    r1 = R/2
    r2 = R/3
    r3 = r1/3
    r4 = r3/2
    @printf("外円:R = %g, 大円:r1 = %g, 中円:r2 = %g, 小円:r3 = %g, 極小円:r4 = %g\n", R, r1, r2, r3, r4)
    plot()
    circle(0, 0, R, :green)
    circle22(0, r1, r1)
    circle(0, 0, r2, :blue)
    circle2(2r2, 0, r2, :blue)
    circle22(0, r2 + r3, r3, :magenta)
    circle4(4r3, r2 + r3, r3, :magenta)
    circle4(2r3, r2 + r3, r3, :magenta)
    circle22(0, r2 + 2r3 + r4, r4, :orange)
    circle4(2r4, r2 + 2r3 + r4, r4, :orange)
    circle4(4r4, r2 + 2r3 + r4, r4, :orange)
    circle22(0,r2 - r4, r4, :orange)
    circle4(2r4, r2 - r4, r4, :orange)
    circle4(4r4, r2 - r4, r4, :orange)
    circle4(4r4, r2 + r4, r4, :orange)
    circle4(4r4, r2 + 3r4, r4, :orange)
    for i in [1, 5, 7]
        circle22(0, i*r4, r4, :orange)
    end
    for i = 1:2:7
        circle4(2r2, i*r4, r4, :orange)
    end
    circle(0, 0, r3, :magenta)
    circle4(4r3, r3, r3, :magenta)
    r5 = 2r2/6
    circle2(R - r5, 0, r5, :darkgreen)
    circle2(r2 + r5, 0, r5, :darkgreen)
    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)
    end
end;
draw(12, true)

    外円:R = 12, 大円:r1 = 6, 中円:r2 = 4, 小円:r3 = 2, 極小円:r4 = 1

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2217)

街角の数学 Street Wasan ~落書き帳「○△□」~ 54. 東方見聞録

http://streetwasan.web.fc2.com/math15.7.10.html
キーワード:正方形,長方形,斜線
#Julia #SymPy #算額 #和算 #数学


下の図は,ジパングで見つけた家の側面図である。壁面には,大正方形4個,小正方形2個,長方形2個が図のようにはめ込まれている。

また,上の屋根は頂点を結ぶ直線に沿って,下の屋根は大正方形と長方形の頂点を結ぶ直線に沿って,それぞれ図のように掛けられている。

さらに,左右に掛けられた黄金の屋根は,それぞれ傾斜が等しく(平行に)なっているという。

このとき,大小正方形の辺の長さの比を求めよ。

一階部分は問題を考える上で不要である。

大正方形の一辺の長さを \(a\)
小正方形の一辺の長さを \(b\)
とおくと,上下の屋根の傾斜は等しく \(\frac{a}{a + b} = \frac{a - b}{b}\) となる。

include("julia-source.txt");  # julia-source.txt ソース
@syms a::positive, b::positive;
eq = a/(a + b) ⩵ (a - b)/b

    \(\displaystyle \frac{a}{a + b} = \frac{a - b}{b}\)

これを解いて \(a\) を求めると \(a = b\frac{1 + \sqrt{5}}{2}\) となる。

ans_a = solve(eq, a)[1]
@show(ans_a)

    ans_a = b*(1 + sqrt(5))/2

    \(\displaystyle \frac{b \left(1 + \sqrt{5}\right)}{2}\)

比を取ると,\(\frac{b}{a} = \frac{\sqrt{5} - 1}{2}\) すなわち,\(b\) は \(a\) の \(\frac{\sqrt{5} - 1}{2}\) 倍である。

@syms d
apart(b/ans_a, d) |> factor

    \(\displaystyle \frac{-1 + \sqrt{5}}{2}\)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2216)

街角の数学 Street Wasan ~落書き帳「○△□」~ 53. 角さんの色メガネ

http://streetwasan.web.fc2.com/math15.7.8.html
キーワード:円5個,外円,斜線
#Julia #SymPy #算額 #和算 #数学


正五角形の対角線を直径とする円(外円)を描き,もう 1 本の対角線で分割される線分を直径とする2 個の円(大円と中円)を描く。大円と中円の共通接線を 2 本描き,円に内接する小円1と,円に外接する小円2を描く。
小円1と小円2の半径を中円の半径で表わせ。

下敷きになる正五角形の一辺の長さを \(a\)
共通接線のなす角を \(2\theta\)
外円の半径と中心座標を \( (R,\ (0,\ 0)\)
大円の半径と中心座標を \(r_2,\ (r_2 - R,\ 0)\)
中円の半径と中心座標を \(r_1,\ (R - r_1,\ 0)\)
小円1の半径と中心座標を \(r_3,\ (R + r_3,\ 0)\)
小円2の半径と中心座標を \(r_4,\ (x_4,\ y_4)\)
共通接線の交点座標を \( (x,\ 0)\)
とおくと,\({\rm BC}/{\rm AB} = {\rm OH}/{\rm AO} = {\rm DE}/{\rm AD} = {\rm FG}/{\rm AF} = \sin θ\) なので,以下の方程式を順に解いていく。

include("julia-source.txt");  # julia-source.txt ソース
@syms a::positive, R, p, r1, r2, r3, r4, x4, y4, x;
# a: 正五角形の一辺の長さ

# r1: 中円の半径
r1 = (√Sym(5) - 1)a/4
r1.evalf()

    \(0.309016994374947 a\)

# r2: 大円の半径(直径は 2r2 = a)
r2 = a/2

    \(\displaystyle \frac{a}{2}\)

# R: 外円の半径
R = r1 + r2
R.evalf()

    \(0.809016994374947 a\)

# p0: sin(θ)
x1 = R - r1
x2 = r2 - R
p = (r2 - r1)/(x1 - x2)
p.evalf()

    \(0.23606797749979\)

θ = (asin(p)/pi*180).evalf()

    \(13.6545847459755\)

# x
eq0 = r1/(x - (2r2 - R) - r1) - r2/(x - (2r2 - R) + r2);
ans_x = solve(eq0, x)[1] |> factor
@show(ans_x)

    ans_x = a*(sqrt(5) + 5)/4

    \(\displaystyle \frac{a \left(\sqrt{5} + 5\right)}{4}\)

ans_x.evalf()

    \(1.80901699437495 a\)

# x1
(ans_x - (R - r1)).evalf()

    \(1.30901699437495 a\)

# p1
(r1/(ans_x - (R - r1))).evalf()

    \(0.23606797749979\)

# x2
x2 = r2 - R

    \(\displaystyle - \frac{a \left(-1 + \sqrt{5}\right)}{4}\)

# p2
(r2/(x - x2))(x => ans_x).evalf()

    \(0.23606797749979\)

eq1 = p - r3/(x - (R + r3))  # FG/AF
ans_r3 = solve(eq1(x => ans_x), r3)[1]
@show(ans_r3)

    ans_r3 = a*(3 - sqrt(5))/4

    \(\displaystyle \frac{a \left(3 - \sqrt{5}\right)}{4}\)

ans_r3.evalf()

    \(0.190983005625053 a\)

# p3
(ans_r3/(ans_x - (R + ans_r3))).evalf()

    \(0.23606797749979\)

eq2 = p - (R - 2r4)/x
ans_r4 = solve(eq2(x => ans_x), r4)[1] |> simplify
@show(ans_r4)

    ans_r4 = a*(3 - sqrt(5))/4

    \(\displaystyle \frac{a \left(3 - \sqrt{5}\right)}{4}\)

# p4
( (R - 2ans_r4)/ans_x).evalf()

    \(0.23606797749979\)

小円1 と 小円2 の半径はともに \(\frac{a(3 - \sqrt{5}) }{4}\) で,同じ大きさである。

(ans_r3 ⩵ ans_r4)

    \(\text{True}\)

描画関数プログラムのソースを見る

function draw(a, more)
    pyplot(size=(600, 500), grid=false, aspectratio=1, showaxis=true, label="", fontfamily="IPAexMincho")
    x = (√5 + 5)a/4
    r3 = r4 = (3 - √5)a/4
    r1 = (√5 - 1)a/4
    r2 = a/2
    R = r1 + r2
    x1 = R - r1
    x2 = r2 - R
    println("x = \(x, r1 = \)r1, r2 = \(r2, R = \)R")
    p = (r2 - r1)/(x1 - x2)
    println("p  = \(p, r2 - r1 = \)(r2 - r1), 2sqrt(r1*r2) = $(2sqrt(r1*r2))")
    x3 = R + r3
    p3 = r3/(x - x3)
    println("p3 = \(p3, r3 = \)r3, x - x3 = $(x - x3)")
    x1 = R - r1
    p1 = r1/(x - x1)
    println("p1 = \(p1,  r1 = \)r1, x1 = \( (R - r1), x - x1 = \)(x - x1)")
    x2 = r2 - R
    p2 = r2/(x - x2)
    println("p2 = \(p2, r2 = \)r2, x - x2 = $(x - x2)")
    l = R - r4
    θ = asin(r2/(x - r2 + R))
    (x4, y4) = l.*(sin(θ), cos(θ))
    p4 = (R - 2r4)/x
    println("p4 = \(p4, r4 = \)r4, R - 2r4 = \( (R - 2r4), x = \)x")
    plot()
    circle(0, 0, R, :magenta)
    circle(x1, 0, r1, :red)
    circle(x2, 0, r2, :blue)
    circle(x3, 0, r3, :green)
    circle(x4, y4, r4, :darkgreen)
    abline(x, 0, -tan(θ), x2 - r2, 1.1x)
    abline(x, 0, tan(θ), x2 - r2, 1.1x)
    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, "O\nR,(0,0)", :magenta, :center, delta=-delta)
        point(x, 0, "A\n(x,0)", :black, :center, delta=-delta)
        point(x1, 0, "D\nr1,(x1,0)", :red, :center, delta=-delta)
        point(x2, 0, "B\nr2,(x2,0)", :blue, :center, delta=-delta, deltax=-3delta)
        (x02, y02) = (x2 + r2*sin(θ), r2*cos(θ))
        segment(x2, 0, x02, y02, :blue)
        point(x02, y02, "C", :blue, :left, :bottom, delta=delta/2)
        (x00, y00) = (R - 2r4).*(sin(θ), cos(θ))
        segment(0, 0, x00, y00, :magenta)
        point(x00, y00, "H", :magenta, :left, :bottom, delta=delta/2)
        (x01, y01) = (x1 + r1*sin(θ), r1*cos(θ))
        segment(x1, 0, x01, y01, :red)
        point(x01, y01, "E", :red, :left, :bottom, delta=delta/2)
        (x03, y03) = (x3 + r3*sin(θ), r3*cos(θ))
        segment(x3, 0, x03, y03, :green)
        point(x03, y03, "G", :green, :left, :bottom, delta=delta/2)
        point(x3, 0, "    F\nr3,(x3,0)", :green, :left, delta=-delta, deltax=-7delta)
        point(x4, y4, "r4,(x4,y4)", :darkgreen, :left, delta=-delta, deltax=-7delta)
        circle(x, 0, r3, :brown, beginangle=(1 - θ/pi)*180, endangle=180, lw=3)
        point(x, 0, "θ", :brown, :left, :bottom, delta=3delta, deltax=-10delta)
        point(x2 - r2, 0, "L ", :blue, :right, :vcenter)
        point(x2 + r2, 0, " J", :blue, :left, :vcenter)
        point(x1 + r1, 0, " K", :blue, :left, :vcenter)
        point(x3 + r3, 0, " N", :blue, :left, :vcenter)
    end
end;
draw(1, true)

    x = 1.8090169943749475, r1 = 0.30901699437494745, r2 = 0.5, R = 0.8090169943749475
    p = 0.23606797749978967, r2 - r1 = 0.19098300562505255, 2sqrt(r1*r2) = 0.7861513777574233
    p3 = 0.23606797749978967, r3 = 0.19098300562505255, x - x3 = 0.8090169943749475
    p1 = 0.23606797749978972, r1 = 0.30901699437494745, x1 = 0.5, x - x1 = 1.3090169943749475
    p2 = 0.2360679774997897, r2 = 0.5, x - x2 = 2.118033988749895
    p4 = 0.23606797749978975, r4 = 0.19098300562505255, R - 2r4 = 0.42705098312484235, x = 1.8090169943749475

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2215)

街角の数学 Street Wasan ~落書き帳「○△□」~ 52. ウルトラマン・ゴールド

http://streetwasan.web.fc2.com/math15.7.7.html
キーワード:円4個,外円,二等辺三角形
#Julia #SymPy #算額 #和算 #数学


半径 \(R\) の外円と二等辺三角形が図のようにある。二等辺三角形の頂点は外円周上にあり,底辺はその中点で外円に接している。
三角形の等辺と外円で囲まれた部分に内接する最大の円の半径が,三角形の内接円の半径 \(r\) に等しいとき,\(r\) を \(R\) で表せ。

注:「三角形の等辺と外円で囲まれた部分に内接する最大の円」といういのはよく言われるのであるが,単に「弦の垂直二等分線上に円の中心がある」ということに過ぎない。

外円の半径と中心座標を \(R,\ (0,\ 0)\)
等円の半径と中心座標を \(r,\ (0,\ r - R),\ (x,\ y)\)
二等辺三角形の斜辺と底辺の交点座標を \( (x_0,\ R)\)
とおき,以下の連立方程式を解く。

eq1 は,\({\rm AB} = r,\ {\rm OC} = R - 2r,\ {\rm OD} = {\rm OE} = R,\ {\rm AE} = 2R - r\) より,

\({\rm OE}/{\rm OC} = {\rm AE}/{\rm AB}\) なので,\(R/(R - 2r) = (2R - r)/r\) を表す。
eq2 は \({\rm OE}/{\rm OC} = {\rm EG}/{\rm FG}\) を二乗したもの,eq3 は等円が外円に内接すること,eq4 は等円の中心と外円の中心を結ぶ直線と二等辺三角形の斜辺が直交することを表す。

include("julia-source.txt");  # julia-source.txt ソース
@syms R::positive, r::positive, x::positive, y::positive, x0::positive
eq1 = R/(R - 2r) - (2R - r)/r
# eq2 = (2R - r)/r - sqrt(x0^2 + 4R^2)/x0
eq2 = ( (2R - r)/r)^2 - (x0^2 + 4R^2)/x0^2
eq3 = x^2 + y^2 - (R - r)^2
eq4 = -2R/x0 + x/y
res = solve([eq1, eq2, eq3, eq4], (r, x, y, x0))[1]

    (R*(3 - sqrt(5))/2, R*sqrt(-398 + 178*sqrt(5))*(2 + sqrt(5)), R*sqrt(94 - 42*sqrt(5))/2, R*sqrt(-2 + sqrt(5)))

# r
ans_r = res[1]
@show(ans_r)

    ans_r = R*(3 - sqrt(5))/2

    \(\displaystyle \frac{R \left(3 - \sqrt{5}\right)}{2}\)

等円の半径 \(r\) は,外円の半径 \(R\) の \(\frac{3 - \sqrt{5}}{2} = 0.3819660112501051\) 倍である。

描画関数プログラムのソースを見る

function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (r, x, y, x0) = R.*( (3 - √5)/2, sqrt( 178√5 - 398)*(2 + √5), sqrt(94 - 42√5)/2, R*sqrt(√5 - 2))
    println( (r, x, y, x0))
    plot([x0, 0, -x0, x0], [-R, R, -R, -R], color=:green, lw=0.5)
    circle(0, 0, R, :blue)
    circle2(x, y, r)
    circle(0, r - R, r)
    θ = atan(x0/2R)
    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)", :red, :center, delta=-delta)
        point(0, r - R, "A:(0,r-R)", :red, :center, delta=-delta)
        point(x0, -R, "G:(x0,-R)", :green, :center, delta=-delta)
        (Bx, By) = (r*cos(θ), r*sin(θ)+ r - R)
        (Dx, Dy) = (R*cos(θ), R*sin(θ))
        point(Bx, By, " B")
        point(0, 0, " O:(0,0)")
        point( (R - 2r)*cos(θ), (R - 2r)*sin(θ), " C")
        point(Dx, Dy, " D")
        point(0, R, "E:(0,R)", :green, :center, :bottom, delta=delta/2)
        point(0, -R, "F:(0,-R)", :green, :center, delta=-delta)
        segment(0, 0, Dx, Dy, :gray70)
        segment(0, r - R, Bx, By, :gray70)
    end
end;
draw(1, true)

    (0.3819660112501051, 0.6005662120021625, 0.14589803375031762, 0.48586827175664576)

    yield from postorder_traversal(arg, keys)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2214)

茨城県那珂市(旧瓜連町)静神社 明治4年(1871)

街角の数学 Street Wasan ~落書き帳「○△□」~ 46. 向こう三軒両隣
http://streetwasan.web.fc2.com/math15.6.28.html
キーワード:円1個,四分円,正方形
#Julia #SymPy #算額 #和算 #数学


正方形の中に半円 1 個,四分円 2 個を設け,大円 1 個と小円 1 個を容れる。正方形の一辺の長さが 1 寸のとき,大円と小円の直径はいかほどか。

正方形の一辺の長さを \(a\)
大円の半径と中心座標を \(r_1,\ (0,\ a/2 + r_1)\)
小円の半径と中心座標を \(r_2,\ (0,\ a - r_2)\)
とおき,以下の連立方程式を解く(それぞれの方程式は独立である)。

include("julia-source.txt");  # julia-source.txt ソース
@syms a, r1, r2
eq1 = (a/2)^2 + (a/2 + r1)^2 - (a - r1)^2
eq2 = (a/2)^2 + (a - r2)^2 - (r2 + a)^2
res = solve([eq1, eq2], (r1, r2))

    \(\begin{cases}r_{1} & \text{=>} &\frac{a}{6}\\r_{2} & \text{=>} &\frac{a}{16}\\\end{cases}\)

正方形の一辺の長さが \(a\) のとき,大円の半径は \(a/6\),小円の半径は \(a/16\) である。

描画関数プログラムのソースを見る

function draw(a, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    r1 = a/6
    r2 = a/16
    plot()
    rect(-a/2,0, a/2, a, :green)
    circle(0, a, a/2, :magenta, beginangle=180, endangle=360)
    circle(a/2, 0, a, :blue, beginangle=90, endangle=180)
    circle(-a/2, 0, a, :blue, beginangle=0, endangle=90)
    circle(0, a/2 + r1, r1, :orange)
    circle(0, a - 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(a/2, a, "(a/2,a)", :green, :right, :bottom, delta=delta/2)
        point(0, 0, "(0,0)", :green, :center, delta=-delta)
        point(0, a/2 + r1, "大円:r1,(0,a/2+r1)", :orange, :center, delta=-delta/2)
        point(0, a - r2, "小円:r2,(0,a-r2)", :red, :center, :bottom, delta=5delta)
    end
end;
draw(1, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2213)

茨城県真壁郡協和町 八幡宮 明治20年(1887)

街角の数学 Street Wasan ~落書き帳「○△□」~ 45. 姉妹都市宣言
http://streetwasan.web.fc2.com/math15.6.27.html
キーワード:円5個,外円,弦
#Julia #SymPy #算額 #和算 #数学


外円内の弦を隔てて,甲円 1 個、乙円 1 個,丙円 2 個が図のようにある。丙円は,外円と弦で囲まれた下の部分に内接する最大の円である。また上の部分では,甲円と乙円が外円に接し,さらに甲円と丙円,乙円と丙円がそれぞれ接している。
このとき、外円の半径は,甲円,乙円,丙円の半径の和であることを示せ。

注:この問題は,算法助術の公式28そのものである。

外円の半径と中心座標を \(R,\ (0,\ 0)\)
甲円の半径と中心座標を \(r_1,\ (x_1,\ y + r_1)\)
乙円の半径と中心座標を \(r_2,\ (x_2,\ y + r_2)\)
丙円の半径と中心座標を \(r_3,\ (x_3,\ y + r_3),\ (0,\ y - r_3)\)
とおき,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース
@syms R::positive, r1::positive, x1, r2::positive, x2, r3::positive, x3
y = 2r3 - R
eq1 = x1^2 + (y + r1)^2 - (R - r1)^2
eq2 = x2^2 + (y + r2)^2 - (R - r2)^2
eq3 = (x1 - x3)^2 + (r1 - r3)^2 - (r1 + r3)^2
eq4 = (x3 - x2)^2 + (r2 - r3)^2 - (r2 + r3)^2;

res = solve([eq1, eq2, eq3, eq4], (R, x1, x2, x3))[4]  # 4 of 4

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

外円の半径は,甲円,乙円,丙円の半径の和である。

# R
res[1]

    \(r_{1} + r_{2} + r_{3}\)

描画関数プログラムのソースを見る

function draw(r1, r2, r3, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (R, x1, x2, x3) = (r1 + r2 + r3, 2*sqrt(r3)*(sqrt(r1)*sqrt(r2) + r2)*sqrt(-2*sqrt(r1)*sqrt(r2) + r1 + r2)/(r1 - r2), 2*sqrt(r3)*(-sqrt(r1)*sqrt(r2) - r1)*sqrt(-2*sqrt(r1)*sqrt(r2) + r1 + r2)/(r1 - r2), -2*sqrt(r3)*sqrt(-2*sqrt(r1)*sqrt(r2) + r1 + r2))
    y = 2r3 - R
    plot()
    circle(0, 0, R, :green)
    circle(x1, y + r1, r1)
    circle(x2, y + r2, r2, :magenta)
    circle(x3, y + r3, r3, :blue)
    circle(0, y - r3, r3, :blue)
    x = sqrt(R^2 - y^2)
    segment(-x, y, x, y)
    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)", :green, :right, :bottom, delta=delta)
        point(x1, y + r1, "甲円:r1,(x1,y+r1)", :red, :center, delta=-delta)
        point(x2, y + r2, "乙円:r2,(x2,y+r2)", :magenta, :center, delta=-delta)
        point(x3, y + r3, " 丙円:r3,(x3,y+r3)", :blue, delta=-delta, deltax=-4delta)
        point(0, y - r3, " 丙円:r3,(x3,y-r3)", :blue, delta=-delta, deltax=-4delta)
        point(x, y, " (x,y)")
    end
end;
draw(4, 2, 1, true)

\(r_2 = r_3\) のときは,「算額2212」 である。

draw(4, 2, 2, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2212)

福島県田村市曳舟町 日渡神社 明治21年(1888)

街角の数学 Street Wasan ~落書き帳「○△□」~ 44. 団子三兄弟http://streetwasan.web.fc2.com/math15.6.26.html
キーワード:円5個,外円,弦
#Julia #SymPy #算額 #和算 #数学


第4問 外円内の弦を隔てて,甲円1個、乙円3個が図のようにある。乙円は,外円と弦で囲まれた下の部分に内接する最大の円である。また上の部分では,甲円と乙円2個が弦に接し,さらに甲円と外円と右乙円,乙円同士,左乙円と外円がそれぞれ接している。

外円の直径を4寸,甲円の直径を2寸として,乙円の直径を求めよ。

外円の半径と中心座標を \(R,\ (0,\ 0)\)
甲円の半径と中心座標を \(r_1,\ (r_1,\ 0)\)
乙円の半径と中心座標を \(r_2,\ (x_2,\ -r_2),\ (x_2 - 2r_2,\ -r_2),\ (0,\ -3r_2)\)
とおき,以下の連立方程式を解く。

著者は「外円径4寸,甲円径2寸というのは元の問題の通りです。したがって,甲円が外円の中心を通る特別な場合になっています。だからと言って,「なあんだ,簡単じゃないか。乙円径は○寸さ」と速断するのは危険です。「不安定な」という感じは,むしろ問題文(の条件設定)にあったのかもしれません。」といっているのであるが,真意がはっきりしない。

1. 「乙円は,外円と弦で囲まれた下の部分に内接する最大の円である。」は,下の乙円の中心は \(y\) 軸上にあるということ。
2. 「したがって,甲円が外円の中心を通る特別な場合になっています。だからと言って,『なあんだ,簡単じゃないか。乙円径は○寸さ』と速断するのは危険です。」というのは,簡単に考えれば足し算により成り立ちそうに思われるが,上にある 2 つの乙円は,互いに外接すると同時に,外円と甲円に外接できるのか?

ということであろう。

「そこで,外円とその弦,すなわち乙円を与えて,甲円を求める問題に設定し直すことにします。」というのは,飛躍し過ぎであろう。

外円の半径と中心座標を \(R,\ (0,\ 0)\)
甲円の半径と中心座標を \(r_1,\ (0, r_1)\)
乙円の半径と中心座標を \(r_2,\ (x_2,\ -r_2),\ (x_2 - 2r_2,\ -r_2),\ (0,\ -3r_2)\)
とおき,以下の連立方程式を解く。

与えられた条件で図形が確定できるかどうか,客観的に検証しよう。
知りたいことは,\(x_2\) の座標値である。

include("julia-source.txt");  # julia-source.txt ソース
@syms R, r1, r2, x2
r1 = R/2
r2 = r1/2
eq = (x2 - 2r2)^2 + r2^2 - (R - r2)^2

    \(\displaystyle - \frac{R^{2}}{2} + \left(- \frac{R}{2} + x_{2}\right)^{2}\)

ans_x2 = solve(eq, x2)[1]  # 1 of 2
@show(ans_x2)

    ans_x2 = R*(1 - sqrt(2))/2

    \(\displaystyle \frac{R \left(1 - \sqrt{2}\right)}{2}\)

外円の半径が 4/2 のとき,\(x_2\) はいかほどか。

ans_x2 |> println
ans_x2[1](R => 4/2).evalf() |> println

    R*(1 - sqrt(2))/2
    -0.414213562373095

図を描いてみると,与えられた条件で乙円はピッタリと位置に収まることがわかる。
すなわち,乙円の直径は 外円の直径の 1/4 倍である。
外円が 4 寸のとき,(甲円の直径は 2 寸で),乙円の直径は \(R/4 = 1\) 寸である。
このとき,乙円,甲円,外円の外接条件はすべて満たされる。

# r2
(R/4)(R => 4)

    \(1\)

描画関数プログラムのソースを見る

function draw(R, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    r1 = R/2
    r2 = r1/2
    x2 = R*(1 - sqrt(2))/2
    plot()
    circle(0, 0, R, :green)
    circle(r1, 0, r1)
    circle(x2, -r2, r2, :blue)
    circle(x2 - 2r2, -r2, r2, :blue)
    circle(0, -3r2, r2, :blue)
    y = -2r2
    x = sqrt(R^2 - y^2)
    segment(-x, y, x, y)
    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)", :green, :right, :bottom, delta=delta)
        point(r1, 0, "甲円:r1,(r1,0)", :red, :center, delta=-delta)
        point(x2, -r2, "乙円:r2\n(x2,-r2)", :blue, :center, delta=-delta)
        point(x2-2r2, -r2, "乙円:r2\n(x2-2r2,-r2)", :blue, :center, delta=-delta)
        point(0, -3r2, "乙円:r2\n(x0,-3r2)", :blue, :center, delta=-delta)
    end
end;
draw(4, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2211)

福島県田村市船引町新舘字曲山 八幡神社 明治11年(1878)

街角の数学 Street Wasan ~落書き帳「○△□」~ 35. 拝啓 三平方の定理 様
http://streetwasan.web.fc2.com/math15.6.16.html
キーワード:円3個,正三角形,斜線
#Julia #SymPy #算額 #和算 #数学


第2問 図のように,一直線上に大小の正三角形とその内接円(甲,丙)があり,その間に乙円が直線と2つの正三角形に接している。3個の円(甲,乙,丙)は,図のように2本の共通外接線を持つ。
丙円の半径が1寸,乙円の半径が1.5寸のとき,甲円の半径を求めよ。

include("julia-source.txt");  # julia-source.txt ソース
@syms r1::positive, r2::positive, x2::positive,
      r3::positive, x3::positive, a::positive, b::positive
eq1 = dist2(a, 0, 0, b, 0, r1, r1)
# eq2 = dist2(a, 0, 0, b, x2, r2, r2)
# eq3 = dist2(a, 0, 0, b, x3, r3, r3)
eq2 = r3/(a - x3) - r2/(a - x2)
eq3 = r3/(a - x3) - r1/a
eq4 = dist2(0, 3r1, √Sym(3)r1, 0, x2, r2, r2)
eq5 = dist2(x3 - √Sym(3)r3, 0, x3, 3r3, x2, r2, r2);

まず,eq1, eq2, eq3, eq4 を解いて \(x_2, x_3, a, b\) を求める。

res = solve([eq1, eq2, eq3, eq4], (x2, x3, a, b))[2]  # 2 of 2

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

結果を eq5 に代入し eq5_2 として,これを解いて \(r_1\) を求める。

eq5_2 = eq5(x2 => res[1], x3 => res[2], a => res[3], b => res[4]) |> simplify |> numerator |> factor

    \(\left(3 r_{1} - r_{2}\right) \left(r_{2} - r_{3}\right) \left(r_{1} r_{2} - 3 r_{1} r_{3} + r_{2}^{2} + r_{2} r_{3}\right)\)

\(3r_1 ≠ r_2\),\(r_2 ≠ r_3\) であ00る。r1*r2 - 3r1*r3 + r2^2 + r2*r3 = 0 は手計算で解ける。

ans_r1 = solve(eq5_2, r1)[2]  #2 of 2
@show(ans_r1)

    ans_r1 = r2*(-r2 - r3)/(r2 - 3*r3)

    \(\displaystyle \frac{r_{2} \left(- r_{2} - r_{3}\right)}{r_{2} - 3 r_{3}}\)

甲円の半径 \(r_1\) は \(r_2(r_2 + r_3)/(3r_3 - r_2)\) である。
乙円の半径 \(r_2\) が1.5,丙円の半径 \(r_3\) が 1 のとき,甲円の半径は 2.5 である。

ans_r1(r2 => 1.5, r3 => 1)

    \(2.5\)

描画関数プログラムのソースを見る

function draw(r2, r3, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    r1 = r2*(-r2 - r3)/(r2 - 3*r3)
    (x2, x3, a, b) = (√3(r1 + r2/3), √3(r1^2 + r1*r2/3 - r1*r3 - r2*r3/3)/(r1 - r2), √3r1*(3r1 + r2)/(3(r1 - r2)), r1*(9r1^2 + 6r1*r2 + r2^2)/(3r1^2 + 6r1*r2 - r2^2))
    println( (r1, x2, x3, a, b))
    plot([√3r1, 0, -√3r1, √3r1], [0, 3r1, 0, 0], color=:green, lw=0.5)
    circle(0, r1, r1)
    circle(x2, r2, r2, :blue)
    plot!([x3 + √3r3, x3, x3 - √3r3, x3 + √3r3], [0, 3r3, 0, 0], color=:green, lw=0.5)
    circle(x3, r3, r3, :magenta)
    #segment(a, 0, 0, b)
    abline(0, b, -b/a, -0.3a, a)
    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=-2delta)
        point(x2, r2, "乙円:r2\n(x2,r2)", :blue, :center, delta=-2delta)
        point(x3, r3, "丙円:r3,(x3,r3)", :magenta, :left, delta=-2delta, deltax=-5delta)
        point(0, 3r1, "(0,3r1)", :green, :center, :bottom, delta=delta/2)
        point(x3, 3r3, "(x3,3r3)", :green, :center, :bottom, delta=delta/2)
        point(√3r1, 0, "(√3r1,0)", :green, :right, delta=-2delta)
        point(x3-√3r3, 0, "(x3-√3r3,0)", :green, :left, delta=-2delta)
        point(a, 0, "(a,0)", :black, :right, delta=-2delta)
        point(0, 0, "(0,0)", :green, :center, delta=-2delta)
        point(0, b, "(0,b)", :black, :left, :bottom, delta=delta/2)
    end
end;
draw(1.5, 1, true)

    (2.5, 5.196152422706632, 7.794228634059947, 12.990381056766578, 5.1923076923076925)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2210)

福島県川俣氏宅の算額 明治12年(1879)

街角の数学 Street Wasan ~落書き帳「○△□」~ 34. 人気図書
http://streetwasan.web.fc2.com/math15.6.14.html
キーワード:直角三角形,斜線
#Julia #SymPy #算額 #和算 #数学


\({\rm AB=4}\),\({\rm AC=3}\) の直角三角形 \({\rm ABC}\) があり,その斜辺 \({\rm BC}\) 上に,\({\rm DB=AB}\) となる点 \({\rm D}\) をとる。
辺 \({\rm AB}\) 上の点 \({\rm P}\) を,\({\rm DP=BC/2}\) となるようにとるとき,\({\rm ⊿BDP}\) の面積を求めよ。

注:図形は「算額(その2209)」と同じで,求めるものが違う。

\({\rm AB}\) を 股
\({\rm AC}\) を 鈎
\({\rm D}\) の座標を \( (x_1,\ y_1)\)
\({\rm P}\) の座標を \( (x_2,\ 0)\)
とおき,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース
@syms 股, 鈎, x1, y1, x2
y1 = (股 - x1)*鈎/股
eq1 = sqrt( (x2 - x1)^2 + y1^2) - sqrt(股^2 + 鈎^2)/2
eq2 = (股 - x1)^2 + y1^2 - 股^2;
res = solve([eq1, eq2], (x1, x2))[2]  # 2 of 4

    (-股^2/sqrt(股^2 + 鈎^2) + 股, 股 - sqrt(股^2 + 鈎^2)/2)

\({\rm ⊿BDP}\) の面積は,\( (股 - x_2)y_1/2 = ⊿ABC/2\) である。

(股 - res[2])*( (股 - res[1])*鈎/股)/2

    \(\displaystyle \frac{股 鈎}{4}\)

描画関数プログラムのソースを見る

function draw(股, 鈎, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (x1, x2) = (-股^2/sqrt(股^2 + 鈎^2) + 股, 股 - sqrt(股^2 + 鈎^2)/2)
    y1 = (股 - x1)*鈎/股
    plot([x2, 0, 0, x1], [0, 0, 鈎, y1], color=:green, lw=0.5)
    plot!([x2, 股, x1, x2], [0, 0, y1, 0], color=:green, lw=0.5, seriestype=:shape, fillcolor=:lemonchiffon)
    segment(x1, y1, x2, 0)
    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, "A:(0,0)", :green, :left, delta=-delta)
        point(股, 0, "B:(股,0)", :green, :right, delta=-delta)
        point(0, 鈎, " C:(0,鈎)", :green, :left, :bottom, delta=delta/2)
        point(x1, y1, " D:(x1,y1)", :black, :left, :bottom, delta=delta/2)
        point(x2, 0, " P:(x2,0)", :red, :center, delta=-delta)
    end
end;
draw(4, 3, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2209)

千葉胤秀: 算法新書,文政13年(1830)

街角の数学 Street Wasan ~落書き帳「○△□」~ 33. 一刀両断
http://streetwasan.web.fc2.com/math15.6.13.html
キーワード:直角三角形,斜線
#Julia #SymPy #算額 #和算 #数学


直角三角形 \({\rm ABC}\) の斜辺 \({\rm BC}\) 上に点 \({\rm D}\) がある。ただし、\({\rm DB} = {\rm AB}\)である。
辺 \({\rm AB}\) 上に点 \({\rm P}\) をとり,線分 \({\rm DP}\) で \({\rm ⊿ABC}\) の面積を二等分するには,点 \({\rm P}\) をどのようにとればよいか。その位置を求めよ。

\({\rm AB}\) を 股
\({\rm AC}\) を 鈎
\({\rm D}\) の座標を \( (x_1,\ y_1)\)
\({\rm P}\) の座標を \( (x_2,\ 0)\)
とおき,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース
@syms 股, 鈎, x1, y1, x2
y1 = (股 - x1)*鈎/股
eq1 = (股 - x2)*y1/2 - 股*鈎/4
eq2 = (股 - x1)^2 + y1^2 - 股^2
res = solve([eq1, eq2], (x1, x2))[1]  # 1 of 2

    (股*(-股^2 + 2*股*(股 - sqrt(股^2 + 鈎^2)/2) + 鈎^2)/(股^2 + 鈎^2), 股 - sqrt(股^2 + 鈎^2)/2)

# x2
res[2]

    \(\displaystyle 股 - \frac{\sqrt{股^{2} + 鈎^{2}}}{2}\)

点 \({\rm P}\) の \(x\) 座標は,\({\rm AB} - {\rm BC}/2\) である。

描画関数プログラムのソースを見る

function draw(股, 鈎, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (x1, x2) = (股*(-股^2 + 2*股*(股 - sqrt(股^2 + 鈎^2)/2) + 鈎^2)/(股^2 + 鈎^2), 股 - sqrt(股^2 + 鈎^2)/2)
    y1 = (股 - x1)*鈎/股
    plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:green, lw=0.5, seriestype=:shape, fillcolor=:lightskyblue)
    plot!([x2, 股, x1, x2], [0, 0, y1, 0], color=:green, lw=0.5, seriestype=:shape, fillcolor=:lemonchiffon)
    segment(x1, y1, x2, 0)
    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, "A:(0,0)", :green, :left, delta=-delta)
        point(股, 0, "B:(股,0)", :green, :right, delta=-delta)
        point(0, 鈎, " C:(0,鈎)", :green, :left, :bottom, delta=delta/2)
        point(x1, y1, " D:(x1,y1)", :black, :left, :bottom, delta=delta/2)
        point(x2, 0, " P:(x2,0)", :red, :center, delta=-delta)
    end
end;
draw(4, 3, true)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2208)

福島県福島市立子山 文珠尊(文殊堂) 明治18年(1885)

街角の数学 Street Wasan ~落書き帳「○△□」~ 23. ギッコンバッタン
http://streetwasan.web.fc2.com/math15.5.30.html
キーワード:円2個,正三角形,斜線
#Julia #SymPy #算額 #和算 #数学


正三角形とその底辺の延長線がある。そこに,頂点を通る任意の直線を引く。ただし,この直線は正三角形と頂点だけを共有するとする。
2直線に接し,かつ正三角形に外接する図の大円と小円の直径をそれぞれ X,Y とするとき,X+Y の値は一定であることを示せ。

著者は「計算なしの問題はいいなあ」といっているので,計算無しで答えを出そう。

「(正三角形の頂点を通る)直線は正三角形と頂点だけを共有する」とあるが,下の図にあるような極限状態を考えよう。すなわち斜線が正三角形の斜辺に一致するとき,大円の半径は正三角形の高さに等しくなり,小円の半径は 0 になる。また,斜線が水平な場合ももう一つの極端な場合で,大円と小円の半径は等しく,正三角形の高さに等しくなる。

よって,大円と小円の直径の和は正三角形の高さの 2 倍である。

著者は「綺麗な問題には,綺麗な解法がある。」とも言っている。

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2207)

福島県福島市 『黒岩虚空蔵堂算額』第14問 明治26年(1893)

街角の数学 Street Wasan ~落書き帳「○△□」~ 22. 計算いらずの極値問題
http://streetwasan.web.fc2.com/math15.5.29.html
キーワード:円3個,直角三角形,長方形
#Julia #SymPy #算額 #和算 #数学


直角三角形の中に,長方形,天円,地円,人円を容れる。長方形の面積が最大となるとき,天円の半径と地円の半径の二乗和が人円の半径の二乗に等しいことを示せ。

図のように座標点を命名し,\({\rm OB} = 鈎\),\({\rm OA} = 股\),\({\rm OC} = c\),\({\rm OD} = d\),\({\rm ∠AOB} = \theta\) とする。
その他追加的に変数を定義し,以下の連立方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース
@syms 鈎, 股, 弦, c, d, r1, r2, r3
# 付随的な定義
弦 = sqrt(鈎^2 + 股^2)
sinθ = 鈎/弦
cosθ = 股/弦
tanθ = 鈎/股
# 天円が内接する直角三角形について
BD = 鈎 - d; BE = BD*sinθ; DE = BD*cosθ
eq1 = (BE + DE - BD) - 2r1
# 地円が内接する直角三角形について
AC = 股 - c; CF = AC*sinθ; AF = AC*cosθ
eq2 = CF + AF - AC - 2r2
# 人円が内接する直角三角形について
CD = sqrt(c^2 + d^2)
eq3 = d + c - CD - 2r3
# CD と AB が平行
eq4 = d/c - tanθ;

(ans_r1, ans_r2, ans_r3, ans_c) = solve([eq1, eq2, eq3, eq4], (r1, r2, r3, c))[1]

    (-d*股/(2*sqrt(股^2 + 鈎^2)) - d*鈎/(2*sqrt(股^2 + 鈎^2)) + d/2 + 股*鈎/(2*sqrt(股^2 + 鈎^2)) + 鈎^2/(2*sqrt(股^2 + 鈎^2)) - 鈎/2, 股*(d*股^2 - d*股*sqrt(股^2 + 鈎^2) + d*鈎^2 - d*鈎*sqrt(股^2 + 鈎^2) - 股^2*鈎 + 股*鈎*sqrt(股^2 + 鈎^2) - 鈎^3 + 鈎^2*sqrt(股^2 + 鈎^2))/(2*鈎*(股^2 + 鈎^2)), (d*股 + 鈎*(d - sqrt(d^2*(股^2 + 鈎^2)/鈎^2)))/(2*鈎), d*股/鈎)

長方形の面積を,鈎,股,\(d\) を用いて表す。

# 長方形の面積
S = DE*CD

    \(\displaystyle \frac{股 \sqrt{c^{2} + d^{2}} \left(- d + 鈎\right)}{\sqrt{股^{2} + 鈎^{2}}}\)

S = S(c => ans_c)

    \(\displaystyle \frac{股 \left(- d + 鈎\right) \sqrt{\frac{d^{2} 股^{2}}{鈎^{2}} + d^{2}}}{\sqrt{股^{2} + 鈎^{2}}}\)

たとえば,鈎 = 3, 股 = 4 のとき,長方形の面積は下図のようになる。面積が最大になるのは \(d\) が鈎の 1/2 の近辺である。

pyplot(size=(300, 150), grid=false, aspectratio=:none, showaxis=true, label="", fontfamily="IPAexMincho")
plot(S(鈎 => 3, 股 => 4), xlims=(0, 3), xlabel="d", ylabel="S")

面積が最大になるときの \(d\) は,\(S\) の導関数をとり,導関数が 0 になるときの \(d\) を求めればよい。

d0 = solve(diff(S, d), d)[1]

    \(\displaystyle \frac{鈎}{2}\)

\(d = 鈎/2\) のときに長方形の面積は最大となる。
このとき,天円と地円の直径の二乗和 \(lh\) と 人円の直径の二乗 \(rh\) は以下のようになり,\(lh = rh\) となることがわかる。

lh = (ans_r1^2 + ans_r2^2)(d => 鈎/2) |> factor

    \(\displaystyle - \frac{- 股^{2} - 股 鈎 + 股 \sqrt{股^{2} + 鈎^{2}} - 鈎^{2} + 鈎 \sqrt{股^{2} + 鈎^{2}}}{8}\)

rh = (ans_r3^2)(d => 鈎/2) |> expand |> factor

    \(\displaystyle - \frac{- 股^{2} - 股 鈎 + 股 \sqrt{股^{2} + 鈎^{2}} - 鈎^{2} + 鈎 \sqrt{股^{2} + 鈎^{2}}}{8}\)

\(lh\) と \(rh\) は,等しい。

lh ⩵ rh

    \(\text{True}\)

ちなみに,そのときの長方形の面積は \(S = 鈎\cdot 股/4 = 直角三角形の面積/2\) である。

S(d => 鈎/2) |> simplify

    \(\displaystyle \frac{股 鈎}{4}\)

直角三角形 \({\rm ABO}\) に内接する円の半径 \(r_0\) は 「\(鈎 + 股 - \sqrt{鈎^2 + 股^2} = 鈎 + 股 - 弦\)」である。

r0 = 鈎 + 股 - sqrt(鈎^2 + 股^2)

    \(股 + 鈎 - \sqrt{股^{2} + 鈎^{2}}\)

天円,地円,人円の半径は \(r_0\) の,鈎/4弦,股/4弦,1/4 倍である。

ans_r1 = ans_r1(d => 鈎/2) |> simplify

    \(\displaystyle \frac{鈎 \left(股 + 鈎 - \sqrt{股^{2} + 鈎^{2}}\right)}{4 \sqrt{股^{2} + 鈎^{2}}}\)

ans_r2 = ans_r2(d => 鈎/2) |> simplify

    \(\displaystyle \frac{股 \left(股 + 鈎 - \sqrt{股^{2} + 鈎^{2}}\right)}{4 \sqrt{股^{2} + 鈎^{2}}}\)

ans_r3 = ans_r3(d => 鈎/2) |> factor

    \(\displaystyle - \frac{- 股 - 鈎 + \sqrt{股^{2} + 鈎^{2}}}{4}\)

ans_r1/r0 |> simplify

    \(\displaystyle \frac{鈎}{4 \sqrt{股^{2} + 鈎^{2}}}\)

ans_r2/r0 |> simplify

    \(\displaystyle \frac{股}{4 \sqrt{股^{2} + 鈎^{2}}}\)

ans_r3/r0 |> simplify

    \(\displaystyle \frac{1}{4}\)

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください

算額(その2206)

福島県田村市船引町文珠 安倍文殊菩薩堂 明治10年(1877)

深川英俊,トニー・ロスマン:聖なる数学:算額,p. 100,森北出版株式会社,2010年4月22日.

福島県安達郡東和町木幡山(現二本松市) 隠津島神社 明治17年(1884)

街角の数学 Street Wasan ~落書き帳「○△□」~ 16. また一寸(○△□のおにぎり弁当)
http://streetwasan.web.fc2.com/math15.5.23.html

キーワード:円1個,正方形,正三角形,直角三角形
#Julia #SymPy #算額 #和算 #数学


直角三角形の中に,正方形,円,正三角形が互いに接して入っている。鈎の長さが 1 寸のとき,正三角形の一辺の長さはいかほどか。

注:「算額(その0734)」と図形は同じで,求めるものが違う。連立方程式は全く同じである。

「\(鈎\)」,「\(股\)」,「\(弦\)」をそのまま変数名として使う。
正三角形の一辺の長さを \(2a\),正方形の一辺の長さを \(b\),円の半径を \(r\) として以下の方程式を解く。

include("julia-source.txt");  # julia-source.txt ソース
function driver(鈎)
    function H(u)
        function parameters()
            弦 = sqrt(鈎^2 + 股^2)
            eq1 = 股*y - xc*鈎
            eq2 = √3a/(股 - (x + a)) - 鈎/股
            eq3 = b*弦 - 股*(鈎 - y)
            eq4 = dist3(x, 0, x + a, √3a, r, r, r)
            eq5 = sqrt( (鈎 - y)^2 - b^2) + b + sqrt(3a^2 + (股 - x - a)^2) - 弦
            eq6 = y + xc - sqrt(y^2 + xc^2) - 2r
            eq7 = dist3(x, 0, x + a, √3a, 0, y, b)
            eq8 = x0^2 + (y0 - y)^2 - b^2
            eq9 = (鈎 - y0)/x0 - 鈎/股
            return [eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9]
        end;
        (股, r, a, b, x, y, xc, x0, y0) = u
        return parameters()
    end;
    iniv = BigFloat[1.7, 0.17, 0.37, 0.5, 0.27, 0.46, 0.8, 0.23, 0.87]
    res = nls(H, ini=iniv)
    res[2] || println("収束していない")
    return res[1]
end;
(股, r, a, b, x, y, xc, x0, y0) = driver(1)
(股, r, a, b, x, y, xc, x0, y0) |> println

    (1.7320508075688774, 0.16987298107780677, 0.36602540378443865, 0.4641016151377546, 0.2679491924311227, 0.4641016151377546, 0.8038475772933682, 0.23205080756887728, 0.8660254037844387)

直角三角形は辺の比が \(2:1:\sqrt{3}\) のよく見かけるものだ。

\(a = 0.36602540378443865\) がどういう数かは nsimplify により明らかになる。

# a
sympy.nsimplify(0.36602540378443865) |> factor

    \(\displaystyle \frac{-1 + \sqrt{3}}{2}\)

sqrt(3) - 1

    0.7320508075688772

正三角形の一辺の長さは,鈎の長さの \(\sqrt{3} - 1\) 倍である。

鈎が 1 寸のとき,正三角形の一辺の長さは 0.7320508075688772 寸である。

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

\(弦弦 = 2,\ b = 0.464101615137755,\ 股 = 1.73205080756888\)
\(r = 0.169872981077807,\ a = 0.366025403784439\)
\(b = 0.464101615137755,\ x = 0.267949192431123\)
\(y = 0.464101615137755,\ x_c = 0.803847577293368\)
\(x_0 = 0.232050807568877,\ y_0 = 0.866025403784439\)

描画関数プログラムのソースを見る

function draw(鈎, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAexMincho")
    (股, r, a, b, x, y, xc, x0, y0) = driver(鈎)
    弦 = sqrt(鈎^2 + 股^2)
    @printf("弦 = %.15g, b = %.15g, 股 = %.15g, r = %.15g, a = %.15g, b = %.15g, x = %.15g, y = %.15g, xc = %.15g, x0 = %.15g, y0 = %.15g\n", 弦, b, 股, r, a, b, x, y, xc, x0, y0)
    plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:black, lw=0.5)
    circle(r, r, r)
    segment(x, 0, x + a, √3a, :blue)
    segment(x + 2a, 0, x + a, √3a, :blue)
    (x00, y00) = intersectionXY(0, y, xc, 0, x, 0, x + a, √3a)
    segment(0, y, x00, y00)
    segment(0, y, x0, y0)
    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, r, "r,(r,r)", :red, :center, delta=-2delta)
        point(x0, y0, " (x0,y0)", :black, :left, :bottom)
        point(x + a, √3a, " (x+a,√3a)", :black, :left, :bottom)
        point(0, 鈎, "鈎 ", :black, :right, :vcenter)
        point(0, y, "y ", :black, :right, :vcenter)
        point(股, 0, "股", :black, :center, delta=-2delta)
        point(0, 0, "0", :black, :center, delta=-2delta)
        point(x, 0, "x", :black, :center, delta=-2delta)
        point(x + 2a, 0, "x+2a", :black, :center, delta=-2delta)
        point(x00, y00, " (x00,y00)", :black, :left, :vcenter)
        plot!(xlims=(-0.15, 1.9), ylims=(-0.15, 1.1))
    end
end;
draw(1, true)

    弦 = 2, b = 0.464101615137755, 股 = 1.73205080756888, r = 0.169872981077807, a = 0.366025403784439, b = 0.464101615137755, x = 0.267949192431123, y = 0.464101615137755, xc = 0.803847577293368, x0 = 0.232050807568877, y0 = 0.866025403784439

 

「算額あれこれ」の全ページの索引


以下のアイコンをクリックして応援してください