裏 RjpWiki

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

算額(その1640)

2025年02月27日 | Julia

算額(その1640)

九 岩手県奥州市(旧水沢市佐倉河) 胆沢城 八幡宮 弘化2年(1845)

山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

今有如図 03076
https://w.atwiki.jp/sangaku/pages/137.html

一関博物館 和算に挑戦 令和5年度出題問題(3)[上級問題](高校生・一般向き)
https://www.city.ichinoseki.iwate.jp/museum/wasan/r5/hard.html

大円の中に楕円 3 個と小円を容れる。楕円の面積が最大になるとき,大円の直径を小円の直径で表す術を述べよ。

この算額は「算額(その678)」と求めるものが違うだけで,本質的に同じ問題である。

変数値が正の値を取るように,上下を反転させて解く。
大円の半径と中心座標を R, (0, 0)
小円の半径と中心座標を r, (0, 0)
楕円の超半径,短半径,中心座標を a, b, (0, y)
楕円と円の接点座標を (x1, y1)
楕円同士の接点座標を (x2, y2)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms x1::positive, y1::positive, x2::positive, y2::positive, y::positive, a::positive, b::positive, R::positive
y2 = x2/sqrt(Sym(3))
eq1 = x1^2/a^2 + (y1 - y)^2/b^2 - 1
eq2 = b^2*x1/(a^2*(y - y1)) + x1/y1
eq3 = x1^2 + y1^2 - R^2
eq4 = x2^2/a^2 + (y2 - y)^2/b^2 - 1
eq5 = b^2*x2/(a^2*(y - y2))- 1/sqrt(Sym(3));

eq1, eq2, eq3 を解き,x1, y1, y を求める。

res1 = solve([eq1, eq2, eq3], (x1, y1, y))[1]  # 1 of 2

    (sqrt((-R^2*b^2 + a^4)/(a - b))/sqrt(a + b), a*sqrt(R^2*a^2 - R^2*b^2 - a^4 + a^2*b^2)/(a^2 - b^2), sqrt(R^2*a^2 - R^2*b^2 - a^4 + a^2*b^2)/a)

eq4, eq5 を解き,x2, y を求める。

res2 = solve([eq4, eq5], (x2, y))[1]

    (a^2/sqrt(a^2 + 3*b^2), sqrt(3*a^2 + 9*b^2)/3)

res1 と res2 の y は等しいので,次の法定式を立てる。

eq = res1[3] - res2[2]
eq |> println

    -sqrt(3*a^2 + 9*b^2)/3 + sqrt(R^2*a^2 - R^2*b^2 - a^4 + a^2*b^2)/a

b を求める。

ans_b = solve(eq, b)[1]
ans_b |> println

    a*sqrt(9*R^2 - 12*a^2)/(3*R)

楕円の面積 S は πab である。

S = PI * a * ans_b;

面積が最大になるときの長半径を求めるには,S(a) の導関数 S(a)'を求め,S(a)'= 0 を解く。

max_at_a = solve(diff(S, a), a)[1]
max_at_a |> println

    sqrt(2)*R/2

楕円の面積が最大になるときの長半径は √2R/2,

ans_b = ans_b(a => max_at_a)
ans_b |> println

    sqrt(6)*R/6

同じく短半径は √6R/6

ans_y = res2[2](b =>ans_b)(a => max_at_a)
ans_y |> println

    sqrt(3)*R/3

そのときの,中心座標の y 座標値は √3R/3 である。

小円の半径は r = ans_y - ans_b = (√3/3 - √6/6)*R で,
R = r/(√3/3 - √6/6) = r*(√6 + 2√3) すなわち,大円の直径は小円の直径の (√6 + 2√3) = 5.913591357920932 倍である。

@syms r, d
apart(r / (√Sym(3)/3 - √Sym(6)/6), d) |> simplify |> factor |> println

    r*(sqrt(6) + 2*sqrt(3))

山村も「今有如図」も,術は √(√285 + 28) となっている。山村も「今有如図」も誤記(誤読)には気づいていない(問題を実際に解いていないのであろう)。
一関博物館のページでは,「術では √(√288 + 18) となっている」としている。二重根号を外せば √(√288 + 18) = √6 + 2√3 である。

√(√Sym(288) + 18) |> sympy.sqrtdenest |> println

    sqrt(6) + 2*sqrt(3)

function draw(r, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    R = r*(√6 + 2√3)
    a = √2R/2
    b = √6R/6
    y = √3R/3
    x1 = sqrt((-R^2*b^2 + a^4)/(a - b))/sqrt(a + b)
    y1 = a*sqrt(R^2*a^2 - R^2*b^2 - a^4 + a^2*b^2)/(a^2 - b^2)
    x2 = a^2/sqrt(a^2 + 3*b^2)
    y2 = y2 = √3x2/3
    println((x1, y1))
    println((x2, y2))
    plot()
    circle(0, 0, R)
    circle(0, 0, r, :green)
    ellipse(0, y, a, b, color=:blue)
    ellipse(y*cosd(30), -y*sind(30), a, b, color=:blue, φ=-120)
    ellipse(-y*cosd(30), -y*sind(30), a, b, color=:blue, φ=120)
    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, "(x1,y1)", :green, :left, :bottom, delta=delta/2)
        point(x2, y2, "(x2,y2)", :green, :left, delta=-delta/2)
        point(0, R, "R", :red, :center, :bottom, delta=delta/2)
        point(0, r, "r", :green, :center, :bottom, delta=delta/2)
        point(0, y, " y=r+b", :green, :center, :bottom, delta=delta/2)
    end
end;

draw(1/2, true)

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

算額(その1639)

2025年02月27日 | Julia

算額(その1639)

三 岩手県花巻市太田 音羽山清水観世音堂 明治25年(1892)

山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

今有如図 03076
https://w.atwiki.jp/sangaku/pages/137.html

楕円の中に,合同な正三角形を 3 個容れる。楕円の短径が与えられたときに,長径を求める術を述べよ。

原文は「𫝆󠄃有如圖画側圓容等三角󠄄三個側圓短徑若干問得側圓長徑術如何」である。

山村はなぜか知らないが,外円の中に合同な正三角形を 3 個と,楕円を 2 個容れている。
「今有如図」は問の通りの図を描いている。

問の解釈は今有如図のほうが正しい。計算すると術の通りの答えになる。

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

注:楕円の長径は x 軸上にあるのではない。また,結果的に,楕円は長径≒短径で,ほぼ円に近い。

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

using SymPy
@syms x::positive, a::positive, b::positive, y0::positive
eq1 = (x/2)^2/a^2 + (√Sym(3)x/2 - y0)^2/b^2 - 1
eq2 = x^2/a^2 + y0^2/b^2 - 1
eq3 = y0 + √Sym(3)x/2 - b
res = solve([eq1, eq2, eq3], (a, x, y0))[1]

    (sqrt(42)*b/6, 28*sqrt(3)*b/45, b/15)

楕円の長径 a は 短径 b の √42/6 = sqrt(7/6) 倍である。

術は「置七個以六個除之開平方【之倍】乘短徑得長徑」である。「【之倍】」は誰が入れたものであろうか?
今有如図は「欠字については「現存 岩手の算額」による」としているので,山村か?
山村は,図の解釈を誤っているため,解に合わすためにいつものように変なことをしたと思われる。解説で,術の「sqrt(7÷6)×短径=長径」を,「訂正 sqrt(7÷6)×2×短径=2.16×短径=長径」 と書いている。試しに山村の描いた位置に楕円を描いてみると長径は短径の3倍位になる。

function draw(b, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (x, a, y0) = (28*sqrt(3)*b/45, sqrt(42)*b/6, b/15)
    println("b = $b, x = $x, a = $a, y0 = $y0")
    plot([0, x, x/2, 0], [0, 0, √3x/2, 0], color=:blue)
    plot!([0, -x, -x/2, 0], [0, 0, √3x/2, 0], color=:blue)
    plot!([x/2, 0, -x/2, x/2], [0, -√3x/2, 0, 0], color=:blue)
    ellipse(0, y0, a, b, color=:red)
    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, y0)
        point(-a, y0)
        point(x/2, √3x/2)
        point(x, 0, " x", :blue, :left, :vcenter)
        point(0, y0, "y0", :red, :center, :bottom, delta=delta/2)
        point(0, y0 - b, "y0-b", :red, :center, delta=-delta/2)
        point(0, y0 + b, "y0+b", :red, :center, :bottom, delta=delta/2)
        point(a, y0, "(a,y0)", :red, :left, :bottom, delta=delta/2)
        dimension_line(-a, y0, a, y0, "長径", :black, :center, :bottom, delta=3delta, length=4delta)
        plot!(xlims=(-a - 3delta, a + 8delta), ylims=(y0 - b - 5delta, y0 + b + delta))
    end
end;

draw(1, true)

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

はなまるうどん×吉野家 ゆめタウン高松店

2025年02月26日 | さぬきうどん

高松市上天神町 はなまるうどん×吉野家 ゆめタウン高松店

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

算額(その1638)

2025年02月26日 | Julia

算額(その1638)

長野県埴科郡坂城町 諏訪社 文化2年(1805)
中村信弥「改訂増補長野県の算額」県内の算額1(78)
http://www.wasan.jp/zoho/zoho.html

長方形の中に円を容れる。長方形の長辺,短辺を「長」,「平」,円によって切り取られる対角線の部分を「帯弦」と呼ぶ。長が 185 寸,平が 80 寸のとき,帯弦を求める術を述べよ。

対角線と円の交点座標を (x1, y1), (x2, y2) とおき,以下の連立方程式を解く。

帯弦は sqrt((x1 - x2)^2 + (y1 - y2)^2) である。

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

using SymPy
@syms 長::positive, 平::positive, 帯弦::positive,
      x1::positive, y1::positive, x2::positive, y2::positive
eq1 = y1/(長 - x1) - 平/長
eq2 = y2/(長 - x2) - 平/長
eq3 = (x1 - (長 - 平/2))^2 + (y1 - 平/2)^2 - (平/2)^2
eq4 = (x2 - (長 - 平/2))^2 + (y2 - 平/2)^2 - (平/2)^2
eq5 = sqrt((x1 - x2)^2 + (y1 - y2)^2) - 帯弦
res = solve([eq1, eq2, eq3, eq4, eq5], (帯弦, x1, y1, x2, y2))[2]  # 2 of 2

    (sqrt(2)*平^(3/2)*sqrt(長)/sqrt(平^2 + 長^2), (sqrt(2)*平^(3/2)*長^(3/2) + 平^2*長 - 平*長^2 + 2*長^3)/(2*(平^2 + 長^2)), (-sqrt(2)*平^(5/2)*sqrt(長) + 平^2*(平 + 長))/(2*(平^2 + 長^2)), (-sqrt(2)*平^(3/2)*長^(3/2) + 平^2*長 - 平*長^2 + 2*長^3)/(2*(平^2 + 長^2)), (sqrt(2)*平^(5/2)*sqrt(長) + 平^2*(平 + 長))/(2*(平^2 + 長^2)))

帯弦は sqrt(2)*平^(3/2)*sqrt(長)/sqrt(平^2 + 長^2) である。

res[1] |> println

    sqrt(2)*平^(3/2)*sqrt(長)/sqrt(平^2 + 長^2)

長が 185 寸,平が 80 寸のとき,帯弦は 68.2871764062511 寸である。

res[1](長 => 185, 平 => 80).evalf() |> println

    68.2871764062511

術は 平*sqrt(2長*平/(長^2 + 平^2)) といっているので上で得た数式に一致する。

(平*sqrt(2長*平/(長^2 + 平^2)))(長 => 185, 平 => 80).evalf() |> println

    68.2871764062511

しかし,答では 68 + 179/625 = 68.2864 と,近似値としては精度の低い値を示している。
書き間違いではないようだ。

function draw(長, 平, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (帯弦, x1, y1, x2, y2) = (sqrt(2)*平^(3/2)*sqrt(長)/sqrt(平^2 + 長^2), (sqrt(2)*平^(3/2)*長^(3/2) + 平^2*長 - 平*長^2 + 2*長^3)/(2*(平^2 + 長^2)), (-sqrt(2)*平^(5/2)*sqrt(長) + 平^2*(平 + 長))/(2*(平^2 + 長^2)), (-sqrt(2)*平^(3/2)*長^(3/2) + 平^2*長 - 平*長^2 + 2*長^3)/(2*(平^2 + 長^2)), (sqrt(2)*平^(5/2)*sqrt(長) + 平^2*(平 + 長))/(2*(平^2 + 長^2)))
    println((帯弦, x1, y1, x2, y2))
    plot([0, 長, 長, 0, 0], [0, 0, 平, 平, 0], color=:green, lw=0.5)
    circle(長 - 平/2, 平/2, 平/2)
    segment(0, 平, 長, 0, :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)
        dimension_line(x1, y1, x2, y2, "帯弦", :black, :left, :bottom, delta=delta, length=7, dx=1, dy=2)
        point(x1, y1, "(x1,y1)", :blue, :right, :vcenter, deltax=-3delta)
        point(x2, y2, "(x2,y2)", :blue, :right, :vcenter, deltax=-3delta)
        point(長, 平, "(長,平)", :green, :right, :bottom, delta=delta)
    end
end;

draw(185, 80, true)

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

算額(その1637)

2025年02月25日 | Julia

算額(その1637)

宮城県石巻市尾崎宮下 久須師神社 明治20年(1887)
徳竹亜紀子,谷垣美保: 2021年度の算額調査,仙台高等専門学校名取キャンパス 研究紀要,第 58 号, p.7-28, 2022.
https://www.sendai-nct.ac.jp/natori-library/wp/wp-content/uploads/2022/03/kiyo2022-2.pdf

正方形の中に楕円と正三角形を容れる。楕円の長径と短径が与えられたとき,正三角形の一辺の長さを得る術を述べよ。

図を反時計回りに 45° 回転させて考える。

楕円が内接する正方形の一辺の長さ a は「算法助術の公式94」で求めることができる。
正三角形の一辺の長さを b,楕円上の正三角形の頂点座標を (x0, y0) とおき,以下の方程式を解く。

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

using SymPy
@syms a, b, p, q, θ, x0, y0
a = √Sym(2)sqrt(p^2 + q^2)
θ = Sym(45 + 60)
x0 = b*cosd(θ)
y0 = b*sind(θ)
eq1 = x0^2/p^2 + (y0 - a/sqrt(Sym(2)))^2/q^2 - 1
ans_b = solve(eq1, b)[1]  # 1 of 2
ans_b |> println

    p^2*(-2*sqrt(2)*3^(1/4)*q + (sqrt(2) + sqrt(6))*sqrt(p^2 + q^2))/(sqrt(3)*p^2 + 2*p^2 - sqrt(3)*q^2 + 2*q^2)

普通は分母の有理化を行うが,分子の有理化を行ってみる。
分子・分母に num = (2√2*3^(1/4)*q + (√2 + √6)*sqrt(p^2 + q^2)) を掛ける。

num = (2*sqrt(Sym(2))*Sym(3)^(1//4)*q + (sqrt(Sym(2)) + sqrt(Sym(6)))*sqrt(p^2 + q^2));
num2 = numerator(ans_b)*num|> simplify;
den2 = denominator(ans_b)*num |> simplify;
num2/den2 |> simplify |> println
num2/den2 |> simplify |> display

    4*p^2/(2*sqrt(2)*3^(1/4)*q + (sqrt(2) + sqrt(6))*sqrt(p^2 + q^2))

徳竹らが提示したのと同じ式が得られた。

2√Sym(2)p^2/((√Sym(3) + 1)sqrt(p^2 + q^2) + 2fourthroot(Sym(3))*q)

function draw(p, q, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    a = sqrt(2)*sqrt(p^2 + q^2)
    b = 4*p^2/(2*sqrt(2)*3^(1/4)*q + (sqrt(2) + sqrt(6))*sqrt(p^2 + q^2))
    println("a = $a, b = $b")
    plot(a/√2 .*[1, 0, -1, 0, 1], a/√2 .+ a/√2 .*[0, 1, 0, -1, 0], color=:green, lw=0.5)
    ellipse(0, a/√2, p, q, color=:red)
    plot!([0, b*cosd(45), b*cosd(105), 0], [0, b*sind(45), b*sind(105), 0], color=:blue, lw=0.5)
    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, a/√2, "楕円:p,q,(0,a/√2)", :red, :center, delta=-delta/2)
        dimension_line(0, 0, b/√2, b/√2, "b", :black, :left, delta=-delta/2, deltax=delta, dx=a/70, dy=-a/70, length=0.4)
        dimension_line(0, 0, a/√2, a/√2, "a", :black, :left, delta=-delta/2, deltax=delta, dx=a/18, dy=-a/18, length=0.4)
        point(b*cosd(105), b*sind(105), "(x0,y0)", :blue, :center, :bottom, delta=delta)
    end
end;

draw(6, 3, true)

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

算額(その1636)

2025年02月24日 | Julia

算額(その1636)

『算法新書 巻の二』(千葉胤秀編,文政13年(1830)
和算に挑戦 平成16年度出題問題(2)[中級問題]&解答
https://www.city.ichinoseki.iwate.jp/museum/wasan/h16/normal.html

上面が長方形の図のような楔形があります。

(1) 長,平,刃,高を使って,この楔形の体積を求める公式を作ってください。
(2) 長の長さ 12 cm,平の長さ 7 cm,刃の長さ 6 cm,高の長さ 8cm のとき,(1) で作った公式を用いてこの楔形の体積を求めてください

楔形を図のように四角錐 2 個と三角柱 1 個に切り分けそれぞれの体積 v1, v2 を求める。

楔形の体積 V は V = 2v1 + v2 で,簡約化すると V = 平*高*(刃 + 2*長)/6 となる。

using SymPy
@syms 長, 平, 刃, 高
v1 = 平*(長 - 刃)/2*高/3
v2 = 平*高/2*刃
V = 2v1 + v2 |> simplify
V |> println

    平*高*(刃 + 2*長)/6

長,平,刃,高に実値を代入して体積 280 を得る。

V(長 => 12, 平 => 7, 刃 => 6, 高 => 8) |> println

    280

 

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

算額(その1635)

2025年02月24日 | Julia

算額(その1635)

九八 鴻巣市三ツ木山王 三木神社 明治28年(1895)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円3個,外円,楕円2個,正方形
#Julia, #Julia, #SymPy, #算額, #和算, #数学

外円の中に,大楕円 1 個,小楕円 1 個,正方形 1 個,小円 2 個を容れる。小楕円の長径が 5 寸,短径が 3 寸のとき,小円の直径はいかほどか。

1. 算法助術の公式94より,長径,短径が p,q の楕円を内接する正方形の一辺 a は,a = sqrt((p^2 + q^2)/2) である。
2. 大楕円の短径は正方形の対角線の長さに等しく,√2a である。
3. 大楕円は小楕円と相似で,相似比 = 大楕円の短径/小楕円の短径 = √2a/q なので,大楕円の長径 = 小楕円の長径*相似比 = p*√2a/q である。
4. 小円の直径 = 大楕円の長径/2 - 大楕円の短径/2 =  (p*√2a/q - √2a)/2 = √2a(p/q - 1)/2 である。
5. p = 5, q = 3 のとき,小円の直径は 1.9436506316151005 である。

p = 5; q = 3
a = sqrt((p^2 + q^2)/2)
√2a*(p/q - 1)/2 

    1.9436506316151005

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

function draw(p, q, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    a = 2sqrt((p^2 + q^2)/2)
    b2 = √2a/2
    plot([b2, 0, -b2, 0, b2], [0, b2, 0, -b2, 0], color=:green, lw=0.5)
    ellipse(0, 0, q, p, color=:blue)
    a2 = b2*(p/q)
    ellipse(0, 0, b2, a2, color=:blue)
    circle(0, 0, a2)
    r = (a2 - b2)/2
    circle2(a2 - r, 0, r, :magenta)
end;

draw(5/2, 3/2, true)

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

算額(その1634)

2025年02月23日 | Julia

算額(その1634)

八三 東松山市岩殿 正法寺 明治11年(1878)
番外六 広野村川嶋 鬼神社
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:球九個,立方体,3次元
#Julia, #Julia, #SymPy, #算額, #和算, #数学

立方体の下面に中球 4 個,その上に大球 1 個,上の隅に小球 4 個を容れる。大球の直径が与えられたときに小球の直径を得る術を述べよ。

注:問には明記されていないが,大球は立方体の上面に接している。

立方体の一辺の長さを a
大球の半径と中心座標を r1, (x1, x1, z1); x1 = 2r2
中球の半径と中心座標を r2, (r2, r2, r2); a = 4r2
小球の半径と中心座標を r3, (r3, r3, a - r3)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms a::positive, r1::positive, x1::positive, z1::positive,
      r2::positive, r3::positive
x1 = 2r2
a = 4r2
eq1 = 2(x1 - r2)^2 + (z1 - r2)^2 - (r1 + r2)^2 |> expand
eq2 = 2(x1 - r3)^2 + (a - r3 - z1)^2 - (r1 + r3)^2 |> expand
eq3 = z1 + r1 - a;  # 大球は立方体の上面に接する

res = solve([eq1, eq2, eq3], (z1, r2, r3))[1]  # 1 of 2

    (11*r1/5, 4*r1/5, 2*r1*(13/10 - sqrt(105)/10))

res[3] |> simplify |> println

    r1*(13 - sqrt(105))/5

小球の半径 r3 は,大球の半径 r1 の (13 - √105)/5 倍である。
大球の直径が 1 寸のとき,小球の直径は 0.5506098468080804 である。

術は (65 - sqrt(2625))/25 であるが,5 で約分すると同じである(なぜ約分しなかったのだろうか)。

ちなみに,中球の半径は大球の半径の 4/5 倍である。

function draw(r1, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (z1, r2, r3) = (11*r1/5, 4*r1/5, 2*r1*(13/10 - sqrt(105)/10))

    x1 = 2r2
    a = 4r2
    p1 = plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:magenta, lw=0.5)
    circle(r2, r2, r2)
    circle(3r2, r2, r2)
    circle(r2, 3r2, r2)
    circle(3r2, 3r2, r2)
    circle(2r2, 2r2, r1, :blue)
    circle(r3, r3, r3, :green)
    circle(a - r3, r3, r3, :green)
    circle(r3, a - r3, r3, :green)
    circle(a - r3, a - r3, r3, :green)
    point(a/2, a, "平面図", :black, :center, :bottom, delta=a/40, mark=false)
    p2 = plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:magenta, lw=0.5)
    circle(r2, r2, r2)
    circle(3r2, r2, r2)
    circle(2r2, 2r2, r1, :blue)
    circle(r3, a - r3, r3, :green)
    circle(a - r3, a - r3, r3, :green)
    point(a/2, a, "正面図・側面図", :black, :center, :bottom, delta=a/40, mark=false)
    plot!(p1, p2)
end;

draw(1/2, true)

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

算額(その1633)

2025年02月23日 | Julia

算額(その1633)

番外九 武州 慈恩寺
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:球5個,外球,正四面体,外接球,3次元
#Julia, #Julia, #SymPy, #算額, #和算, #数学

外球の中に正四面体と 4 個の小球を容れる。外球の直径が 3 寸のとき,小球の直径はいかほどか。

小球の半径を r,正四面体の一辺の長さを a,外球の半径と中心座標を R, (0, 0, 0) とする。
R = √6a/4 である。また,正四面体の高さ AB は AB = √6a/3 である。
AC = 2R = AB + 2r なので,r = R - √6a/6 である。
ここで r と R の比をとると r/R = 1/3 である。

小球の半径 r は 外球の半径 R の 1/3 倍である。
外球の直径が 3 寸のとき,小球の直径は 1 寸である。

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

算額(その1632)

2025年02月22日 | Julia

算額(その1632)は,3月1日に公開しました。

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

手打ちうどん むぎ屋

2025年02月21日 | さぬきうどん

高松市香川町川東下 手打うどん むぎ屋
かなりの細麺,冬季限定メニューのしっぽくうどん

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

算額(その1631)

2025年02月21日 | Julia

算額(その1631)

~落書き帳「○△□」~ 940. 『算法天生指南』巻之二(その12)
http://streetwasan.web.fc2.com/math20.05.03.html
キーワード:円3個,長方形
#Julia, #Julia, #SymPy, #算額, #和算, #数学

長方形の中に甲円,乙円,丙円を容れる。甲円の直径が 12 寸,乙円の直径が 9 寸のとき,丙円の直径はいかほどか。

算額(その1630)で半円だったものが円になっただけで,本質的には同じ問題である。

甲円の半径と中心座標を r1, (x1, r1)
乙円の半径と中心座標を r2, (r2, r2)
丙円の半径と中心座標を r3, (x3, 2r1 - r3)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms r1::positive, x1::positive, r2::positive,
      r3::positive, x3::positive
eq1 = (x1 - r2)^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = (x1 - x3)^2 + (r1 - r3)^2 - (r1 + r3)^2
eq3 = (x3 - r2)^2 + (2r1 - r3 - r2)^2 - (r2 + r3)^2;

res = solve([eq1, eq2, eq3], (x1, r3, x3))[2];  # 2 of 2

# r3
res[2] |> println

    r1^2/(4*r2)

乙円の半径 r3 は,甲円と乙円の半径 r1, r2 の関数 r1^2/(4*r2) で表される。

甲円の直径が 12 寸,乙円の直径が 9 寸のとき,丙円の直径は 4 寸である。

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

draw(12/2, 9/2, true)

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

算額(その1630)

2025年02月21日 | Julia

算額(その1630)

福島県三春町大字七草木字松山(旧七草木村)若草木神社 明治11年(1878)
~落書き帳「○△□」~ 927. 『算法天生法指南』巻之二(その5)
http://streetwasan.web.fc2.com/math20.04.25.2.html
キーワード:円2個,半円,長方形
#Julia, #Julia, #SymPy, #算額, #和算, #数学

長方形の中に大半円,中円,小円を容れる。長方形の短辺の長さが与えられたとき,中円と小円の直径を(単に数値として)かけ合わせた数を求める術を述べよ。

大円の半径と中心座標を r1, (x1, r1)
中円の半径と中心座標を r2, (r2, r2)
小円の半径と中心座標を r3, (x3, 2r1 - r3)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms r1::positive, x1::positive, r2::positive,
      r3::positive, x3::positive, 直平::positive,
      直長::positive
eq1 = (x1 - r2)^2 + (r1 - r2)^2 - (r1 + r2)^2
eq2 = (x1 - x3)^2 + (r1 - r3)^2 - (r1 + r3)^2
eq3 = (x3 - r2)^2 + (2r1 - r3 - r2)^2 - (r2 + r3)^2
res = solve([eq1, eq2, eq3], (x1, r3, x3))[2]  # 2 of 2

    ((2*r1^(3/2)*sqrt(r2) - 4*sqrt(r1)*r2^(3/2) + r1*r2 - 2*r2^2)/(r1 - 2*r2), r1^2/(4*r2), -sqrt(r1)*(r1 - 2*r2)/sqrt(r2) + r2)

res[2] |> println

    r1^2/(4*r2)

r3 = r1^2/4r2 ゆえ,2r2 * 2r3 = r1^2 である。
つまり,中円の直径と小円の直径の積は大円の半径の 2 乗に等しい。

大円の直径(長方形の短辺)だけが与えられたのでは図は確定しない。
中円の直径も与えられると,小円の直径が確定する。

function draw(直平, r2, more)
    r1 = 直平/2
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (x1, r3, x3) = ((2*r1^(3/2)*sqrt(r2) - 4*sqrt(r1)*r2^(3/2) + r1*r2 - 2*r2^2)/(r1 - 2*r2), r1^2/(4*r2), -sqrt(r1)*(r1 - 2*r2)/sqrt(r2) + r2)
    直長 = x1
    str = @sprintf("大円径=%g,中円径=%g\n小円径=%g", 直平, 2r2, 2r3)
    p = plot([0, 直長, 直長, 0, 0], [0, 0, 直平, 直平, 0], color=:green, lw=0.5)
    circle(x1, r1, r1, beginangle=90, endangle=270)
    circle(r2, r2, r2, :blue)
    circle(x3, 2r1 - r3, r3, :magenta)
    point(0, 直平, str, :black, :left, :bottom, delta=0.1, deltax=1, mark=false)
    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, :right, :vcenter, deltax=-delta)
        point(r2, r2, "中円:r2,(r2,r2)", :blue, :center, delta=-delta)
        point(x3, 2r1 - r3, "小円:r3,(x3,2r1-r3)", :magenta, :center, delta=-delta)
    else
        plot!(xlims=(0, 16), ylims=(0, 12.5))
    end
    return p
end;

draw(12, 3.1, true)

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

算額(その1629)

2025年02月21日 | Julia

算額(その1629)

~落書き帳「○△□」~ 9.三円の縁
http://streetwasan.web.fc2.com/math15.5.16.html
キーワード:円3個,直線上
#Julia, #Julia, #SymPy, #算額, #和算, #数学

甲円の平行な2接線の隙間に,乙,丙二円を図のように容れる。三円は互いに外接し,乙円と丙円は,甲円の2接線の1本ずつにそれぞれ接している。
甲円,乙円の直径が 12 寸,9 寸のとき,丙円の直径はいかほどか。

甲円の半径と中心座標を r1, (x1, r1)
乙円の半径と中心座標を r2, (0, r2)
丙円の半径と中心座標を r3, (x3, 3r1 - r3)
とおき,以下の連立方程式を解く。

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

using SymPy
@syms r1::positive, x1::positive, r2::positive,
      r3::positive, x3::positive, y3::positive,
      h::positive
y3 = 2r1 - r3
eq1 = (x1 - x3)^2 + (y3 - r1)^2 - (r1 + r3)^2
eq2 = x1^2 + (r1 - r2)^2 - (r1 + r2)^2
eq3 = x3^2 + (y3 - r2)^2 - (r2 + r3)^2;
res = solve([eq1, eq2, eq3], (x1, r3, x3))[1]

    (2*sqrt(r1)*sqrt(r2), r1^2/(4*r2), -sqrt(r1)*(r1 - 2*r2)/sqrt(r2))

res[2] |> simplify |> println

    r1^2/(4*r2)

丙円の半径は r1^2/4r2 である。
甲円,乙円の直径が 12 寸,9 寸のとき,丙円の直径は 4 寸である。

r1 = 12/2; r2=9/2
2(r1^2/4r2)

    4.0

function draw(r1, r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (x1, r3, x3) = (2*sqrt(r1)*sqrt(r2), r1^2/(4*r2), -sqrt(r1)*(r1 - 2*r2)/sqrt(r2))
    y3 = 2r1 - r3
    @printf("甲円の直径が %g,乙円の直径が %g のとき,丙円の直径は %g である。\n", 2r1, 2r2, 2r3)
    plot()
    circle(x1, r1, r1)
    circle(0, r2, r2, :blue)
    circle(x3, y3, r3, :green)
    segment(-r2, 0, x1 + r1, 0, lw=1)
    segment(-r2, 2r1, x1 + r1, 2r1, lw=1)
    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, :center, delta=-delta/2)
        point(0, r2, "乙円:r2,(0,r2)", :blue, :center, delta=-delta/2)
        point(x3, 2r1 - r3, "丙円:r3,(x3,2r1-r3)", :green, :center, delta=-delta/2)
    end
end;

draw(12/2, 9/2, true)

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

算額(その1628)

2025年02月20日 | Julia

算額(その1628)

~落書き帳「○△□」~ 923. 『算法天生法指南』巻之二(その1)
http://streetwasan.web.fc2.com/math20.04.22.2.html
キーワード:円3個,直線上,高さ
#Julia, #Julia, #SymPy, #算額, #和算, #数学

直線上に甲円,乙円,その上に丙円が載っている。甲円,乙円の直径が 18 寸,15 寸,高さが 30 寸のとき,丙円の直径はいかほどか。

甲円の半径と中心座標を r1, (x1, r1)
乙円の半径と中心座標を r2, (0, r2)
丙円の半径と中心座標を r3, (x3, y3)
高さを h; h = y3 + r3
とおき,以下の連立方程式を解く。

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

using SymPy
@syms r1::positive, x1::positive, r2::positive,
      r3::positive, x3::positive, y3::positive,
      h::positive
y3 = h - r3
eq1 = (x1 - x3)^2 + (y3 - r1)^2 - (r1 + r3)^2
eq2 = x1^2 + (r1 - r2)^2 - (r1 + r2)^2
eq3 = x3^2 + (y3 - r2)^2 - (r2 + r3)^2;
res = solve([eq1, eq2, eq3], (x1, r3, x3))[1]

    (2*sqrt(r1)*sqrt(r2), (-h*r1 - h*r2 + 2*r1*r2)^2/(8*h*r1*r2), (-h*r1 + h*r2 + 2*r1*r2)/(2*sqrt(r1)*sqrt(r2)))

res[2] |> simplify |> println

    (h*r1 + h*r2 - 2*r1*r2)^2/(8*h*r1*r2)

丙円の半径は (h*(r1 + r2) - 2r1*r2)^2/(8h*r1*r2) である。
甲円,乙円の直径が 18 寸,15 寸,高さが 30 寸のとき,丙円の直径は 16 寸である。

r1 = 18/2; r2=15/2; h=30
2(h*(r1 + r2) - 2r1*r2)^2/(8h*r1*r2)

    16.0

function draw(r1, r2, h, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (x1, r3, x3) = (2*sqrt(r1)*sqrt(r2), (-h*r1 - h*r2 + 2*r1*r2)^2/(8*h*r1*r2), (-h*r1 + h*r2 + 2*r1*r2)/(2*sqrt(r1)*sqrt(r2)))
    y3 = h - r3
    plot()
    circle(x1, r1, r1)
    circle(0, r2, r2, :blue)
    circle(x3, y3, r3, :green)
    segment(-r2, 0, x1 + r1, 0, lw=1)
    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, :center, delta=-delta/2)
        point(0, r2, "乙円:r2,(0,r2)", :blue, :center, delta=-delta/2)
        point(x3, y3, "丙円:r3,(x3,y3)", :green, :center, delta=-delta/2)
        point(x3, h, "高", :green, :center, :bottom, delta=delta/2)
    end
end;

draw(18/2, 15/2, 30, true)

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

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

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