裏 RjpWiki

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

神秘の夜空が語る物語──Wolf Moon の美しさに魅了されて

2025年01月14日 | 写真

新年最初の満月,「Wolf Moon(ウルフムーン)」は,まるで大自然が秘める静かな力を感じさせるような神秘的な輝きを放っています。

 

 

冷たい冬の夜空に浮かぶ満月。その光は凍てついた地表をやさしく照らし,まるで狼の遠吠えを待ち望んでいるかのようです。写真の中の月の輪郭が鮮明に浮かび上がり,そのクレーターの影が物語るのは,地球からどれだけ遠い距離を旅しているかということ…

 

Wolf Moon の由来と伝説

 

Wolf Moon の名前は,ネイティブアメリカンの伝承に由来します。厳しい冬の間,食糧を求めて遠吠えする狼の姿を見て,人々はこの満月に特別な名前を与えたといわれています。そのため,この満月は「絆」や「忍耐」の象徴ともされています。

 

Wolf Moon を楽しむためのヒント

• 月明かりの下で散歩を楽しむ

• ホットドリンクを片手に,夜空を見上げる

• 詩や音楽でこの幻想的な瞬間を心に刻む

 

今夜,あなたもこの特別な満月を見上げてみませんか?

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

算額(その1540)

2025年01月14日 | Julia

算額(その1540)

竹束(ちくそく)問題
源為憲:口遊(くちずさみ),天禄元年(970)
中村信弥:和算家 北明 寺島宗伴
http://www.wasan.jp/terasima/terasima.html

図のような竹の束がある。周員(外側の赤い竹の本数)が 21 本のとき,総本数はいかほどか。

SymPy では,以下の 2 つの関数を使う

実際の数列 a を作る
a = sympy.sequence(第 n 項の式, (n, 最初の項, 最後の項))

部分列の和の一般項
summation(a.formula, (n, 最初の項, 最後の項))

竹の本数は,3, 9, 15, ... の等差級数なので,「第n項の式」は 6n - 3

using SymPy
@syms n, m
b = sympy.sequence(6n - 3, (n, 1, 10))

    [3, 9, 15, 21, ...]

1 から m までの部分列の和の式は以下で求まる。

Sm = summation(b.formula, (n, 1, m))
Sm |> println

    3*m^2

外側の竹が 21 本は,何項目かは (21 + 初項)/公差で求まる。

(21 + 3)/6 |> println

    4.0

Sm の m に代入すると,総和が求まる。

Sm(m => 4) |> println

    48

まだるっこしいので,ブルートフォースで計算する方が簡単である。

target = 74067
s = 0
for n = 1:999999 # 適当な数
    a = 6n - 3
    s += a
    a == target && (println(s); break)
end

    457197075

 

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

算額(その1539)

2025年01月14日 | Julia

算額(その1539)

(三)兵庫県 (5) 兵庫県伊丹市寺本堂山 昆陽寺 嘉永7年(1854),昭和43年(1968)復元奉納
近畿数学史学会:近畿の算額「数学の絵馬を訪ねて」,平成4年5月16日 初版第一刷,大阪教育図書株式会社,大阪市.
キーワード:直角三角形,菱形
#Julia, #SymPy, #算額, #和算

直角三角形内に菱形を入れる。鈎,股(,弦)の長さが与えられたとき,菱形の一辺の長さはいかほどか。

算額(その924)で,鈎・股を入れ替えただけのものである。

鈎,股,弦の長さをそのまま変数名として使う。
菱形の下側の一辺が鈎,股と交差する座標を (0, b), (a, 0)
菱形の一辺の長さを diamond
とおき,以下の連立方程式を解く。

include("julia-source.txt");

using SymPy
@syms 鈎::positive, 股::positive, 弦::positive,
      a::positive, b::positive, diamond::positive
eq1 = a^2 + b^2 - diamond^2
eq2 = diamond/(股 - a) - 鈎/股
eq3 = b/a - 鈎/股
(a, b, diamond) = solve([eq1, eq2, eq3], (a, b, diamond))[1];

# diamond: 菱形の一辺の長さ
diamond |> println

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

菱形の一辺の長さは 鈎*(股^2 + 鈎^2 - 鈎*sqrt(股^2 + 鈎^2))/股^2 である。
鈎,股の長さがそれぞれ 3 寸,4 寸のとき,菱形の一辺の長さは 15/8 = 1.875 寸である。

diamond |> println
diamond(鈎 => 3, 股 => 4) |> println
diamond(鈎 => 3, 股 => 4).evalf() |> println

    鈎*(股^2 + 鈎^2 - 鈎*sqrt(股^2 + 鈎^2))/股^2
    15/8
    1.87500000000000

# a
a |> println
a(鈎 => 3, 股 => 4) |> println
a(鈎 => 3, 股 => 4).evalf() |> println

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

# b
b |> println
b(鈎 => 3, 股 => 4) |> println
b(鈎 => 3, 股 => 4).evalf() |> println

    鈎^2*(-鈎 + sqrt(股^2 + 鈎^2))/股^2
    9/8
    1.12500000000000

考察:「問」において,鈎,股の他に冗長にも弦も与えたときとしているのは,術で「鈎*弦/(鈎 + 弦)」といいたいためである。

function draw(鈎, 股, more=false)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    弦 = sqrt(鈎^2 + 股^2)
    (a, b, diamond) = (鈎*(-鈎 + sqrt(股^2 + 鈎^2))/股, 鈎^2*(-鈎 + sqrt(股^2 + 鈎^2))/股^2, 鈎*(股^2 + 鈎^2 - 鈎*sqrt(股^2 + 鈎^2))/股^2)
    @printf("鈎 %g;  股 = %g;  弦 = %g のとき, 菱形の一辺の長さ = %g\n", 鈎, 股, 弦, diamond)
    @printf("a = %g;  b = %g;  diamond = %g\n", a, b, diamond)
    plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:blue, lw=0.5)
    plot!([0, a, a, 0, 0], [b, 0, diamond, 鈎, b], color=:red, 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(股, 0, " 股", :blue, :left, :bottom, delta=delta/2)
        point(a, 0, "  a", :blue, :left, :bottom, delta=delta/2)
        point(0, 鈎, " 鈎", :blue, :left, :bottom, delta=delta/2)
        point(0, b, "  b", :blue, :left, :vcenter)
        plot!(xlims=(-3delta, 股+5delta))
    end
end;

draw(3, 4, true)

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

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

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