裏 RjpWiki

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

算額(その1597)

2025年02月07日 | Julia

算額(その1597)

宮城県角田市小田字斗蔵 斗蔵寺 明治42年(1909)
https://tajin.shiriagari.com/framepage5000.htm
(リンク先の左のインデックスから選択)

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

キーワード:面積,最大値
#Julia, #SymPy, #算額, #和算, #数学

直角三角形において,鈎を一辺として,股の一部を共有する正方形を描く。弦と正方形の一辺の交点を一つの頂点とする直角三角形の面積(黒積と呼ぼう)を考える。股が 12 寸のとき,黒積が最大となるときの鈎はいかほどか。

鈎,股,黒積をそのまま変数名とする。
正方形の一辺と弦の交点座標を (鈎, y) とする。

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

using SymPy
@syms 股, 鈎, y, 黒積
eq1 = (股 - 鈎)*y/2 - 黒積
eq2 = y/(股 - 鈎) - 鈎/股
res = solve([eq1, eq2], (黒積, y));
res[黒積] |> println  # 黒積は鈎と股の関数

    (股^2*鈎 - 2*股*鈎^2 + 鈎^3)/(2*股)

股が 12 のときの,鈎と黒積の関係は下図のようになる。

pyplot(size=(300, 200), grid=false, aspectratio=:none, label="", fontfamily="IPAMincho")
plot(res[黒積](股 => 12), xlims=(0, 12), xlabel="鈎", ylabel="黒積")

g = diff(res[黒積], 鈎);  # 導関数
g |> println

    (股^2 - 4*股*鈎 + 3*鈎^2)/(2*股)

ans_g = solve(g, 鈎)[1];  # 1 of 2  # 導関数 = 0 (黒積が最大)になる 鈎 を求める
ans_g |> println

    股/3

鈎が股の 1/3 になるとき,黒積は最大となる。

股 = 12, 鈎 = 股/3 = 4 のとき,黒積は最大値 32/3 となる。

res[黒積](鈎 => 股/3, 股 => 12) |> println  # 黒積の最大値
res[黒積](鈎 => 股/3, 股 => 12).evalf() |> println

    股^3/648 - 股^2/9 + 2*股
    0.00154320987654321*股^3 - 0.111111111111111*股^2 + 2.0*股

function draw(股, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    鈎 = 股/3
    plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:green, lw=0.5)
    plot!([0, 鈎, 鈎, 0,  0], [0, 0, 鈎, 鈎, 0], color=:blue, lw=0.5)
    segment(0, 鈎, 股, 0, :black)
    y = (股*鈎 - 鈎^2)/股
    plot!([鈎, 股, 鈎, 鈎], [0, 0, y, 0], seriestype=:shape, color=:gray80, fillcolor=:gray80, 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(鈎, 鈎, " (鈎,鈎)", :red, :left, :vcenter)
        point(鈎, y, " (鈎,y)", :red, :left, :bottom, delta=delta/2)
        point(股, 0, "鈎", :red, :left, :bottom, delta=delta/2, deltax=0.7delta)
    end
end;

draw(12, true)


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« MacOS: RDatasets を使えるよ... | トップ | 算額(その1598) »
最新の画像もっと見る

コメントを投稿

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

Julia」カテゴリの最新記事