裏 RjpWiki

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

算額(その851)改訂版

2025年01月04日 | Julia

算額(その851)改訂版

算額(その851)は依拠した山村の図が不適切だったことがわかったので,改訂版を書く

九 岩手県水沢市佐倉河 胆沢城八幡神社 弘化2年(1845)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html

今有如図 03025
https://w.atwiki.jp/sangaku/pages/143.html

キーワード:円4個,外円,ひし形,面積
#Julia, #SymPy, #算額, #和算

大円内に互いに内接・外接する小円 3 個と,菱形を入れる。小円の直径が与えられたとき,黒積を求めよ。
図では,小円,菱形はどれにも接していないが,そんな訳はないだろう。

山村の図では,どれが黒積か明確ではない。「今有如図」でどれが黒積か分かったので,改訂版を書く。

外円の半径と中心座標を R, (0, 0)
小円の半径と中心座標を r, (0, R - r), (x, y)
∠AOB を θ
とおき,以下の連立方程式を解く。
一度に解けないので,まず eq1, eq3 から x,y を求め,結果を eq2 に代入して b を求める。

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms r, R, x, y, a, b
R = b + r
a = sqrt(R^2 - (b - R)^2)
eq1 = x^2 + y^2 - (R - r)^2
eq2 = dist2(0, 2b - R, a, b - R, x, y, r)
eq3 = x^2 + (R - r - y)^2 - 4r^2;
#res = solve([eq1, eq2, eq3], (x, y, b))

res = solve([eq1, eq3], (x, y))[2]

    (2*r*sqrt(-(-b + r)*(b + r))/b, -(-b^2 + 2*r^2)/b)

eq12 = eq2(x => res[1], y => res[2]) |> simplify |> numerator |> x -> x/r^2 |> factor
eq12 |> println

    (-b + 2*r)*(-3*b^2 - 2*b*r + 4*r^2 - 4*sqrt(b^2 - r^2)*sqrt(b^2 + 2*b*r))

eq12 は(2r - b) という因数を持つので,b = 2r はその解である。また,適解であることが確かめられる。

よって,x, y は,r = 1/2, b = 2r = 1 を代入することにより,√3/2, 1/2 である。

# x
res[1](r => 1//2, b => 1) |> println

    sqrt(3)/2

# y
res[2](r => 1//2, b => 1) |> println

    1/2

結果としてこの場合には,小円の中心は一辺の長さが 2r の正六角形の頂点である。

黒積は「扇形AOBの面積 - 扇型ACDの面積 - ⊿OCDの面積」の 4 倍である。
∠ACD = 120°,∠AOB = 30° なので,面積 S は 4*(π*R^2*(30/360) - (R - r)*cosd(30)*r/2 - π*r^2*(120/360)) である。
簡約化すると -sqrt(3)*b*r - 4*pi*r^2/3 + pi*(b + r)^2/3 である。

S = 4*(PI*R^2*(30//360) - (R - r)*cosd(Sym(30))*r//2 - PI*r^2*(120//360)) |> simplify
S |> println

    -sqrt(3)*b*r - 4*pi*r^2/3 + pi*(b + r)^2/3

術は,小円の直径が 1 のときで,そのとき b も 1 になるので,黒積の数値は 5*pi/12 - √3/2 = 0.4429715352113086

S(b =>1, r => 1//2) |> simplify |> println

    -sqrt(3)/2 + 5*pi/12

-sqrt(3)/2 + 5*pi/12

    0.4429715352113086

術は円積率=0.76 を使っているので,黒積は「(0.76*10 - sqrt(27))/6」で,計算結果は 0.40064126288222796 となる。
円周率を使うと (pi/4*10 - sqrt(27))/6 = 0.44297153521130844 である。
(pi/4*10 - sqrt(27))/6 は簡約化すると -sqrt(3)/2 + 5*pi/12 となり,上述の式と同じである。

function draw(more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r = 1/2
    b = 2r
    x = 2r*sqrt((b - r)*(b + r))/b
    y = (b^2 - 2r^2)/b
    R = b + r
    a = sqrt(R^2 - (b - R)^2)
    θ = asind(r/(R - r))
    S = -sqrt(3)*b*r - 4*pi*r^2/3 + pi*(b + r)^2/3
    @printf("小円の直径が %g のとき,黒積は %g である。\n", 2r, 4S)
    @printf("r = %g;  x = %g;  y = %g;  b = %g;  a = %g;  R = %g;  θ = %g\n", r, x, y, b, a, R, θ)  
    plot([0, a, 0, -a, 0], [-R, b - R, 2b - R, b - R, -R], color=:green, lw=0.5)
    circle(0, 0, R)
    circle(0, R - r, r, :blue)
    circle2(x, 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(R, 0, " R", :red, :left, :vcenter)
        point(x, y, "小円:r,(x,y)", :blue, :center, delta=-delta/2)
        θ2 = 30:0.1:90
        ax = R.*cosd.(θ2)
        ay = R.*sind.(θ2)
        θ3 = 90:-0.1:-30
        append!(ax, r.*cosd.(θ3))
        append!(ay, (R - r) .+ r.*sind.(θ3))
        θ4 = 150:-0.1:30
        append!(ax, x .+ r.*cosd.(θ4))
        append!(ay, y .+ r.*sind.(θ4))
        plot!(ax, ay, seriestype=:shape, color=:gray80, fillcolor=:gray80, lw=0.5)
        plot!(-ax, ay, seriestype=:shape, color=:gray80, fillcolor=:gray80, lw=0.5)
        segment(0, 0, R*cosd(60), R*sind(60), :gray60)
        point(0, R, "A", :red, :center, :bottom, delta=delta/2)
        point(R*cosd(60), R*sind(60), "B", :red, :left, :bottom, delta=delta/2)
        point(0, R - r, "C ", :blue, :right, :vcenter)
        point(x/2, (R - r + y)/2, " D", :blue, :left)
        segment(0, R - r, x/2, (R - r + y)/2, :gray60)
        segment(0,0, 0, R - r, :gray60)
        point(0, 0, "O", :red, :center, delta=-delta/2)
        point(0, 2b - R, "2b-r   ", :green, :right, :vcenter)
        point(0, b - R, "b-r ", :green, :right, :vcenter)
        point(a, b - R, "(a,b-r)  ", :green, :right, :vcenter)
    end
end;

draw(true)

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

算額(その1519)

2025年01月04日 | Julia

算額(その1519)

百 大船渡市猪川町 雨宝堂 現雨宝山竜宝院 文政10年(1827)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html

キーワード:円14個,外円
#Julia, #SymPy, #算額, #和算

大円の中に3個の中円を容れたもの 2 個と小円 6 個が図のように互いに接している。小円の直径が 1 寸のとき,甲円の直径はいかほどか。

大円の半径と中心座標を r1, (x1, r1)
中円の半径と中心座標を r2, (x1, 2r2/√3)
小円の半径と中心座標を r3, (0, r3), (r3, y3)
とおき,以下の連立方程式を解く。
甲円の半径 r1 は,(筆算により)中円の半径 r2 の (2/√3 + 1) 倍である。

include("julia-source.txt")
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms r1, x1, r2, y2, r3, y3
r1 = r2*(2/√Sym(3) + 1)
y2 = r1 - r2
eq1 = x1^2 + r3^2 - (r1 + r3)^2
eq2 = (x1 - r3)^2 + y3^2 - (r1 + r3)^2
eq3 = r3^2 + (y3 - r3)^2 - 4r3^2
res = solve([eq1, eq2, eq3], (x1, r2, y3))[4]

    (r3*(sqrt(3) + 2), -2*sqrt(3)*r3 + 2*sqrt(3)*r3*sqrt(15*sqrt(3) + 26)/(4*sqrt(3) + 7) + 3*r3, r3*(1 + sqrt(3)))

中円の半径 r2 は,小円の半径 r3 の (3 + 3√2 - 2√3 - √6) 倍である。
小円の直径が 1 寸のとき,中円の直径は (3 + 3√2 - 2√3 - √6) = 1.3290493291983534 寸である。

「答」は「一寸三分二厘八毛余」と末尾に若干の誤差がある。

res[2] |> factor |> sympy.sqrtdenest |> simplify |> println

    -2*sqrt(3)*r3 - sqrt(6)*r3 + 3*r3 + 3*sqrt(2)*r3

3 + 3√2 - 2√3 - √6

    1.3290493291983534

function draw(r3, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (x1, r2, y3) = (r3*(sqrt(3) + 2), -2*sqrt(3)*r3 + 2*sqrt(3)*r3*sqrt(15*sqrt(3) + 26)/(4*sqrt(3) + 7) + 3*r3, r3*(1 + sqrt(3)))
    r1 = r2*(2/√3 + 1)
    #(r1, x1, r2, y3) = (-16*sqrt(3)*r3*sqrt(15*sqrt(3) + 26) - 8*sqrt(3)*r3*sqrt(45*sqrt(3) + 78) - r3 + 14*r3*sqrt(45*sqrt(3) + 78) + 28*r3*sqrt(15*sqrt(3) + 26), r3*(sqrt(3) + 2), -2*sqrt(3)*r3 + 2*sqrt(3)*r3*sqrt(15*sqrt(3) + 26)/(4*sqrt(3) + 7) + 3*r3, r3*(1 + sqrt(3)))
    println("x1 = $x1, r1 = $r1, 2r2 = $(2r2)")
    plot()
    circle(x1, 0, r1, :green)
    circle(-x1, 0, r1, :green)
    circle2(x1, 2r2/√3, r2, :blue)
    circle2(x1 + 2r2/√3*cosd(30), -2r2/√3*sind(30), r2, :blue)
    circle2(-x1 + 2r2/√3*cosd(30), -2r2/√3*sind(30), r2, :blue)
    circle22(0, r3, r3)
    circle4(r3, y3, r3)
    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,r1)", :green, :center, delta=-delta)
        point(x1, 2r2/√3, "中円:r2,(x1,2r2/√3)", :blue, :center, delta=-delta)
        point(0, r3, "小円:r3\n(0,r3)", :red, :center, delta=-delta)
        point(r3, y3, "小円:r3\n(r3,y3)", :red, :center, delta=-delta)
    end
end;

draw(1/2, true)

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

算額(その1518)

2025年01月04日 | Julia

算額(その1518)

九十七 大船渡市猪川町 雨宝堂 現雨宝山竜宝院 文政7年(1824)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html

キーワード:球4個,直方体,3次元
#Julia, #SymPy, #算額, #和算

直方体の中に,甲球 1 個,乙球 1 個,丙球 2 個を容れる。丙球の直径は甲球の直径の 1/2 である。乙球の直径が 4 寸のとき,甲球の直径はいかほどか。

注:明示的に書いてはいないが,甲球と乙球の頂点は共に直方体の上面に接する。山村の図はそのように描かれていないが答えが 7 寸なら,そのようになる。

算額(その1515)の類題である。

甲球の直径と中心座標を r1, (r1, 0, r1)
乙球の直径と中心座標を r2, (x2, 0, z2)
丙球の直径と中心座標を r3, (x3, r3, r3)
とおき,以下の連立方程式を解く。

include("julia-source.txt")
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms r1, r2, x2, z2, r3, x3
r3 = r1/2
eq1 = (r1 - x2)^2 + (z2 - r1)^2 - (r1 + r2)^2
eq2 = (r1 - x3)^2 + r3^2 + (r1 - r3)^2 - (r1 + r3)^2
eq3 = (x2 - x3)^2 + r3^2 + (z2 - r3)^2 - (r2 + r3)^2
eq4 = (z2 + r2) - 2r1
res = solve([eq1, eq2, eq3, eq4], (r1, x2, z2, x3))[2]  # 2 of 3

    (7*r2/4, 7*r2/4 + sqrt(7)*r2, 5*r2/2, 7*r2*(1/4 + sqrt(7)/8))

甲球の半径 r1 は,乙球の半径 r2 の 7/4 倍である。
乙球の直径が 4 寸のとき,甲球の直径は 7 寸である。

 

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

算額(その1517)

2025年01月04日 | Julia

算額(その1517)

九十六 大船渡市立根 気仙安養寺稲荷堂 文政5年(1822)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html

キーワード:円10,外円,二等辺三角形
#Julia, #SymPy, #算額, #和算

外円の中に二等辺三角形を容れ,甲円 4 個,乙円 2 個,丙円 4 個を容れる。丙円の直径が 1 寸のとき,甲円の直径はいかほどか。

二等辺三角形の底辺と y 軸の交点座標を (0, y)
外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (r1, y - r1), (r1, y + r1)
乙円の半径と中心座標を r2, (x2, y2)
丙円の半径と中心座標を r3, (x3, y3)
とおき,以下の連立方程式を解く。

include("julia-source.txt")
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms R::positive, r1, y, r2, x2, y2, r3, x3, y3
eq1 = r1^2 + (y - r1)^2 - (R - r1)^2
eq2 = x2^2 + y2^2 - (R - r2)^2
eq3 = x3^2 + y3^2 - (R - r3)^2
eq4 = (x2 - x3)^2 + (y2 - y3)^2 - (r2 + r3)^2
eq5 = y2/x2 * (y - R)/sqrt(R^2 - y^2) + 1
eq6 = dist(0, R, sqrt(R^2 - y^2), y, r1, y + r1) - r1^2
eq7 = dist(0, R, sqrt(R^2 - y^2), y, x2, y2) - r2^2
eq8 = dist(0, R, sqrt(R^2 - y^2), y, x3, y3) - r3^2;
# res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8], (R, r1, y, r2, x2, y2, x3, y3))

eq1, eq2 の連立方程式を解いて r1, y を求める。式には R を含む。

res = solve([eq1, eq6], (r1, y))[3]  # 3 of 3

    (8*R/25, -7*R/25)

eq2, eq5, eq7 の r1, y に上で求められた式を代入して連立方程式を解き,r2,x2,y2 を求める。

eq12 = eq2(r1 => res[1], y => res[2]);
eq15 = eq5(r1 => res[1], y => res[2]);
eq17 = eq7(r1 => res[1], y => res[2]) |> simplify;
res2 = solve([eq12, eq15, eq17], (r2, x2, y2))[1]  # 1 of 2

    (R/5, 16*R/25, 12*R/25)

丙円の半径だけを求めるならば,算法助術の公式29 を用いる。y, r2 は上で求められた式を代入して方程式を解き,r3 を求める。

eq29 = (R^2 - y^2) + (R - y)^2 - 16r3*R
eq29_2 = eq29(y => res[2], r2 => res2[1])
ans_r3 = solve(eq29_2, r3)[1]

ans_r3 |> println

    4*R/25

丙円の半径 r3 は,外円の半径 R の 4/25 倍である。

図を描くために x3, y3 も求めるならば,eq3, eq4, eq8 にそれまでに得られた r1, y, r2, x2, y2 を代入し,連立方程式を解いて r3, x3, y3 を求める。

eq13 = eq3(r1 => res[1], y => res[2])
eq14 = eq4(r1 => res[1], y => res[2], r2 => res2[1], x2 => res2[2], y2 => res2[3]) |> simplify
eq18 = eq8(r1 => res[1], y => res[2]) |> factor |> numerator
res3 = solve([eq13, eq14, eq18], (r3, x3, y3))[2];  # 3 of 3

# r3
res3[1] |> println

    4*R/25

# x3
res3[2] |> println

    4*R*(3*sqrt(5) + 19)/125

# y3
res3[3] |> println

    R*(57/125 - 16*sqrt(5)/125)

以上で全てのパラメータは R を含む式で表された。
R 以外のパラメータを基準にするには,基準にするパラメータで割ればよい。
r3 を基準にして,r1 を求めるには以下のようにする。

# (R, r1, y, r2, x2, y2, r3, x3, y3) 
(R, 8*R/25, -7*R/25, R/5, 16*R/25, 12*R/25, 4*R/25, 4*R*(3*sqrt(Sym(5)) + 19)/125, R*(57/125 - 16*sqrt(Sym(5))/125)) .// res3[1]

    (25/4, 2, -7/4, 5/4, 4, 3, 1, 3*sqrt(5)/5 + 19/5, 2.85 - 4*sqrt(5)/5)

r3 = 4*R/25
r1 = 8*R/25
r1/r3 |> println

    2

甲円の半径 r1 は,丙円の半径 r3 の 2 倍である。
丙円の直径が 1 寸のとき,甲円の直径は 2 寸である。

function draw(r3, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (R, r1, y, r2, x2, y2, r3, x3, y3) = (25/4, 2, -7/4, 5/4, 4, 3, 1, 3*sqrt(5)/5 + 19/5, 2.85 - 4*sqrt(5)/5) ./ r3
    plot([0, -sqrt(R^2 - y^2), sqrt(R^2 - y^2), 0], [R, y, y, R], color=:orange, lw=0.5)
    circle(0, 0, R, :green)
    circle2(r1, y + r1, r1)
    circle2(r1, y - r1, r1)
    circle2(x2, y2, r2, :magenta)
    circle2(x3, y3, r3, :blue)
    θ3 = atand(y3, x3)
    θ2 = atand(y2, x2)
    θ4 = θ2 + (θ2 - θ3)
    circle2(sqrt(x3^2 + y3^2)*cosd(θ4), sqrt(x3^2 + y3^2)*sind(θ4), 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, y - r1, "甲円:r1,(r1,y-r1)", :red, :center, delta=-delta/2)
        point(r1, y + r1, "甲円:r1,(r1,y+r1)", :red, :center, delta=-delta/2)
        point(x2, y2, "乙円:r2\n(x2,y2)", :magenta, :center, delta=-delta/2)
        point(x3, y3, "丙円:r3\n(x3,y3)", :blue, :center, delta=-delta/2)
        point(0, R, "R", :green, :center, :bottom, delta=delta/2)
        point(0, y, "y", :orange, :center, :bottom, delta=delta/2)
    end
end;

draw(1/2, true)

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

算額(その1516)

2025年01月04日 | Julia

算額(その1516)

八十五 岩手県一関市室根町折壁字天王前 彌榮神社 明治16年(1883)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.

http://www.wasan.jp/yamamura/yamamura.html

今有如図 03067
https://w.atwiki.jp/sangaku/pages/286.html

キーワード:円4,外円,正方形
#Julia, #SymPy, #算額, #和算

外円の中に,乾円,兌円,離円,正方形を容れる。乾円の直径は,離円の直径の 195/500 倍,正方形の一辺の長さは離円と乾円の直径の半分である。兌円の直径はいかほどか。

注1:山村の図では正方形は外円と 2 点で接しているが,乾円と離円の中心が残りの頂点になるべきなので(村山の図ではそのように描かれていないが),そのような場合には図は左右対称になり,必然的に乾円と離円は合同になり,兌円の中心は外円の中心線上にあることになり,問題にならない。また,「乾円の直径は,離円の直径の 195/500 倍」なのだから,乾円は離円より小さいことになるが,山村の図では逆になっている。「今有如図」では,どれがどの円なのかが図に描かれていないので参考にはならないが,山村の解釈は間違っている。また,術の解説も妥当なものではない。術自体もおかしいが。
注2:問題文では,基準となる円の絶対的な大きさが書かれていないので,「兌円の直径はいかほどか」は術も「四分1」と書かれており相対的なものであるが,何に対しての相対値化が明示されていない。

外円の半径と中心座標を R, (0, 0)
離円の半径と中心座標を r1, (x1, y1)
乾円の半径と中心座標を r2, (x2, y2); y2 = y1
兌円の半径と中心座標を r3, (x3, y3)
正方形の一辺の長さを a
とおき,以下の連立方程式を解く。

include("julia-source.txt")
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy
@syms R, a, x0, r1, x1, y1, r2, x2, y2, r3, x3, y3
r2 = r1*195//500
a = r1 + r2
y2 = y1
eq1 = x1^2 + y1^2 - (R - r1)^2
eq2 = x2^2 + y2^2 - (R - r2)^2
eq3 = x3^2 + y3^2 - (R - r3)^2
eq4 = (x1 - x3)^2 + (y1 - y3)^2 - (r1 + r3)^2
eq5 = (x2 - x3)^2 + (y2 - y3)^2 - (r2 + r3)^2
eq6 = x1 - x2 - a
eq7 = (sqrt(R^2 - x2^2) - y2) - (r1 + r2);
# solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7], (R, x1, y1, x2, r3, x3, y3))

function H(u)
    (R, x1, y1, x2, r3, x3, y3) = u
    return [
        x1^2 + y1^2 - (R - r1)^2,  # eq1
        x2^2 + y1^2 - (R - 39*r1/100)^2,  # eq2
        x3^2 + y3^2 - (R - r3)^2,  # eq3
        -(r1 + r3)^2 + (x1 - x3)^2 + (y1 - y3)^2,  # eq4
        -(39*r1/100 + r3)^2 + (x2 - x3)^2 + (y1 - y3)^2,  # eq5
        -139*r1/100 + x1 - x2,  # eq6
        -139*r1/100 - y1 + sqrt(R^2 - x2^2),  # eq7
    ]
end;
r1 = 1/2
iniv = BigFloat[0.74, 0.17, -0.17, -0.52, 0.14, -0.38, -0.47]
res = nls(H, ini=iniv)

    ([0.7414808299927744, 0.17460193791683998, -0.1668147311531064, -0.52039806208316, 0.1354422352837994, -0.38483674087676983, -0.4681703334772241], true)

離円の半径が 1/2 のとき,兌円の半径は 0.1354422352837994となり,離円の大きさの 0.1354422352837994/0.5 = 0.2708844705675988 で,「1/4」には一致しない。

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

R = 0.741481;  r1 = 0.5;  x1 = 0.174602;  y1 = -0.166815;  r2 = 0.195;  x2 = -0.520398;  y2 = -0.166815;  r3 = 0.135442;  x3 = -0.384837;  y3 = -0.46817

function draw(r1, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (R, x1, y1, x2, r3, x3, y3) = [10, 3.70185, -1.73789, -6, 2.43359, -2.88951, -7]
    (R, x1, y1, x2, r3, x3, y3) = res[1]
    y2 = y1
    r2 = r1*195/500
    @printf("R = %g;  r1 = %g;  x1 = %g;  y1 = %g;  r2 = %g;  x2 = %g;  y2 = %g;  r3 = %g;  x3 = %g;  y3 = %g\n", R, r1, x1, y1, r2, x2, y2, r3, x3, y3)
    plot([x2, x1, x1, x2, x2], [y2, y2, sqrt(R^2 - x2^2), sqrt(R^2 - x2^2), y2], color=:orange, lw=0.5)
    circle(0, 0, R, :green)
    circle(x1, y1, r1)
    circle(x2, y2, r2, :blue)
    circle(x3, y3, r3, :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(x1, y1, "離円", :red, :center, delta=-delta)
        point(x2, y2, "乾円", :blue, :center, delta=-delta)
        point(x3, y3, "兌円", :magenta, :center, delta=-delta)
        point(0, R, "R", :green, :center, :bottom, delta=delta)
    end
end;

draw(1/2, true)

 

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

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

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