裏 RjpWiki

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

算額(その1416)

2024年11月22日 | Julia

算額(その1416)

八四 加須市不動岡 総願寺 明治12年(1879)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:正三角形,正方形
#Julia, #SymPy, #算額, #和算

正方形の中に正三角形が入っている。正三角形は,正方形と一つの頂点を共有し,他の 2 つの頂点が正方形の辺の上にある。

問題は判読不能ということであるが,算額(その1413)にも書いたように,どのような問題であるかは何通りか考えることができる。

一案として,「正方形の中に正三角形が入っている。正三角形は,正方形と一つの頂点を共有し,他の 2 つの頂点が正方形の辺の上にある。正方形の一辺の長さが与えられたとき,正三角形の一辺の長さを求める術(すべ)を述べよ。」を吟味しよう。

正方形の一辺の長さを a,正方形の辺の上にある頂点の座標を (b, 0), (a, a - b) とする。
左下の直角三角形の斜辺と右下の直角三角形の斜辺は正三角形の 2 辺なので等しい。よって,a^2 + b^2 = 2(a - b)^2 を b について解けばよい。

また,b が求まった後に正三角形の一辺の長さを自分で計算しなければならないので,それも連立方程式に組み入れておけば手間が省ける。

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

using SymPy
@syms a::positive, b::positive, 辺::positive
eq1 = (a^2 + b^2) - 2(a - b)^2
eq2 = sqrt((a^2 + b^2)) - 辺  # a, b から辺を計算する
res = solve([eq1, eq2], (辺, b))[1]
res |> println

    (2*a*sqrt(2 - sqrt(3)), a*(2 - sqrt(3)))

b = a*(2 - √3)である。
正三角形の一辺の長さは sqrt(a^2 + b^2) = sqrt(a^2 + (a*(2 - √3))^2) = 2a*sqrt(2 - √3) である。

正方形の一辺の長さが 652 のとき,正三角形の一辺の長さは 675.0000 有奇である。
なお,b = 174.702873465092 である。

res[1](a => 652).evalf() |>  println
res[2](a => 652).evalf() |>  println

    675.000069627374
    174.702873465092

function draw(a, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho") 
    b = a*(2 - √3)
    println("b = $b")
    @printf("正方形の一辺の長さが %.7g のとき,正三角形の一辺の長さは %.7g である。\n", a, 2*a*sqrt(2 - sqrt(3)))
    plot([0, a, a, 0, 0], [0, 0, a, a, 0], color=:green, lw=0.5)
    plot!([0, b, a, 0], [a, 0, a - b, a], 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(a, 0, "a", :green, :center, delta=-delta/2)
        point(0, a, "a ", :green, :right, :vcenter)
        point(b, 0, "b", :blue, :center, delta=-delta/2)
        point(a, a - b, "(a,a-b) ", :green, :right, :vcenter)
        plot!(xlims=(-5delta, a + 5delta), ylims=(-5delta, a + 5delta))
    end
end;

draw(652, true)

 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1415) | トップ | さぬきうどん こがね製麺所 ... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Julia」カテゴリの最新記事