見出し画像

小林秀雄と科学⑦ーPythonで実装する「物」から「波(場)」へのコペルニクス的な転換ー

19世紀末、ニュートン力学は絶頂を迎えながらも、崩壊をも始めていました。
世界を「物」の集まりとして処理する古典物理学の公式は、ファラデーとマクスウェルが提唱し、ヘルツが火花の中に証明した「電磁波」という目に見えない波動の前に沈黙することになります。
光は衝突する「粒子」ではなく、空間を伝わる「波(場)」であるという知の転換は、プログラミングにおける「静的な数値(Object)」から「空間全体に影響を及ぼす動的な波形データ(Function)」への移行とも重なります。
物質の究極要素というドグマを解体し、関係性の「場」を立ち上げた物理学のドラマを、Pythonのリスト操作と波形生成ロジックで再現してみたいと思います。

小林秀雄は、『感想』の第49回で、このことについて、「物質が究極に於いて、たった二種類のアトムに還元出来た以上、残るたった一つの問題、これらのアトムの運動を支配する厳密な法則さえ発見できるなら、アトミズムの勝利は確実なものとなる筈であった。一歩を踏み出せばよい。原子が太陽系の模型を示したのが夢ではないなら、天体の運動のみならず、私達周辺のあらゆる物体の運動を、あれほど見事に説明した力学の法則が、この小宇宙にも適用できない筈はない。だが自然は顔をそむけたのである。」と書いています。

自然は顔を背けたのは、電子と原子核という2つのアトムが物質の究極の単位ではなかったから、そして物質の構造を原子論的な要素から説明しようとする考え方それ事態にも無理があったからです。

量子論、または量子力学と呼ばれる現代物理学は、このような原子論的、要素論的な物質の分析を経て現れました。

量子論は物質の究極要素を探り当てるのではなく、物質の究極要素としての素粒子の存在は否定しませんが、素粒子を「物」というよりは、ある種の状態、つまり「場」のようなものだと考えたのです。

そう、「物」的な物理学から「場」的な物理学への転換が起こったのです。

ニュートン流の古典物理学は19世紀末にその絶頂を迎えますが、その絶対はその崩壊期でもありました。

「物」を中心とする思考、世界は「物」の集まりであり、「物」の移動や変化から成り立っているという古典物理学的思考は、19世紀末から次第に行き詰まりを見せます。

古典物理学的思考は物の関係性を説明する力学によって説明されていましたが、19世紀になるとファラデー、マックスウェルによる電磁波の問題など、力学で説明し切れない問題が出現し、実際に電気火花の振動により、目に見えない光である電波を作り出すことに成功したヘルツによる実験により力学によって説明できない問題が明らかになりました。

これ以降、「光は空間を伝わる電磁気力の波動である」と考えるファラデーとマックスウェルの「光の波動説」がニュートンの「光の粒子説」に取って代わられました。

光は「粒子」であるという古典物理学的な「物」中心の考え方から、光は「波」であるという「場」の考え方へと転換しました。

ニュートンの「光の粒子説(物)」が崩壊し、ファラデー、マクスウェル、そしてヘルツの実験によって「光の波動説(場)」へと世界観が180度反転した歴史的瞬間。
それは、目に見える固形物の衝突で世界を説明しようとする古典力学(ドグマ)の完全な行き止まりを意味していました。
小林秀雄が捉えた「『物』的物理学から『場』的物理学への転換」という認識論の革命を、Pythonの「データ型(数値データから波動関数を模した動的処理へ)」と、古典から近代へのパラダイムシフトの数理的写像として構造化してみたいと思います。

import math

# 1. ニュートン流の「物(粒子)」中心の世界観:静的な位置と質量だけで処理する
class NewtonParticle:
    def __init__(self, position: float, mass: float):
        self.position = position  # 物質の固定的な位置
        self.mass = mass          # 物質の固有の属性(実体)
    
    def get_status(self):
        return f"【粒子(物)】位置: {self.position}, 質量: {self.mass} (固定的な実体として存在)"

# 2. ファラデー・マクスウェル流の「場(波動)」の世界観:空間全体に広がる状態
class ElectromagneticField:
    def __init__(self, frequency: float):
        self.frequency = frequency  # 振動数(波の性質)

    # 空間の特定の場所(x)と時間(t)における「波の状態」を動的に計算するメソッド
    def get_wave_amplitude(self, x: float, t: float) -> float:
        # サイン関数(正弦波)を使って、空間を伝わる電磁波の「場」を表現する
        # 固有の「物」ではなく、位置と時間によって変化する「状態」そのもの
        amplitude = math.sin(self.frequency * x - t)
        return round(amplitude, 4)

# --- 3. 19世紀末のパラダイムシフト(ヘルツの実験による証明) ---
print("--- 19世紀末:古典物理学の絶頂と『場』への大転換 ---")

# 古典:光を「粒子(物)」として扱っていた世界
light_as_particle = NewtonParticle(position=5.0, mass=0.001)
print(light_as_particle.get_status())
print("➔ 困難の発生:電気火花の振動(ヘルツの実験)により、力学では説明できない波動が観測された。")
print("-" * 70)

# 近代:光を「波動(場)」として再定義する世界
hertz_experiment = ElectromagneticField(frequency=1.5)
print("【波動(場)への転換】光は固定された『物』ではなく、空間を伝わる電磁気力の波動である。")

# 空間(x=1.0〜3.0)に広がっていく電磁波の「場」の状態をシミュレート
for space_x in [1.0, 2.0, 3.0]:
    wave_state = hertz_experiment.get_wave_amplitude(x=space_x, t=0.5)
    print(f"  空間座標 x={space_x} の状態(電磁界の強さ): {wave_state}")

print("-" * 70)
print("【小林秀雄の洞察】究極の『要素』を探すのをやめ、世界を『状態の重なり(場)』として捉え直す。")
print("  これこそが、要素論的なドグマから認識論を解放する、現代物理学(量子論)への架け橋となった。")

このプログラムは、光を「特定の場所に個々に在する粒(NewtonParticle)」として扱っていた古い世界から、ヘルツの実験を経て、空間全体が数式によって揺れ動く「波のプール(ElectromagneticField)」として扱う世界への変化を描いています。
特定の「物」のデータを追いかけるのをやめて、空間全体の「状態」を計算する形へとプログラムの仕組みが変わっています。

ここで用いた数学的ギミックの核心は、「静的変数(データの保持)」から「動的関数(マッピング)」へのパラダイムシフトです。
ニュートン的な粒子クラスは、positionやmassという固定された数値を箱(変数)に入れているだけです。
しかし、マクスウェル的な電磁界クラスは、空間の座標(x)と時間(t)を入力(引数)として与えるたびに、math.sin(正弦波)によってその瞬間の空間の状態を動的に弾き出します。
これは「オブジェクトの状態(State)を固定せず、環境変数に対する関数(Function)として定義する」という設計思想です。
小林秀雄が「世界は物の集まりではなく、主客物心の対立の消えた生活の『場』である」と見抜いた瞬間は、数理の世界で言えば、固定された「静的データ(アトム)」を捨て、システム全体が相互作用し合う「動的フィールド(波動関数)」へと記述言語をアップデートした瞬間に重なるのではないでしょうか。

 数理的ギミックへ

math.sin(三角関数)による波動の実装 ⇄ 光の波動説
ヘルツが実験で証明した「目に見えない電磁気力の波」を、Pythonの数学モジュール(math.sin)で再現しています。
1箇所に留まる「物」ではなく、媒介なしに空間を伝播していくエネルギーの性質を、周期的に変化する浮動小数点数(Float)の連続として数理的に担保しています。

for ループによる空間の連続評価 ⇄ 「場(フィールド)」の概念
粒子クラスのように「1つのオブジェクト」を狙い撃つのではなく、for space_x in [1.0, 2.0, 3.0]: によって空間の各地点の状態を網羅的にスキャンしています。これこそが「物質(要素)が存在するかどうか」ではなく、「空間(場)がどのような状態にあるか」を重視する近代物理学の視点(フィールド・ビュー)のコード化です。

属性(mass)の消滅 ⇄ 実体主義から関係主義への認識論革命
ElectromagneticField クラスからは、物質の重さや実体を表す mass という変数が完全に消え去っています。あるのは frequency(どれだけ振動しているか)という関係性の情報だけです。ギリシャ以来の原子論的思考(要素への還元)が、純粋な「状態の記述」へと変換を迫られた歴史的パラダイムシフトを、データ構造の軽量化(抽象化)によって表現しています。

ニュートンの「粒子(物)」の行き詰まりが、マクスウェルとヘルツの「波動(場)」によってブレイクスルーされ、それが後の量子論(究極の単位の否定)へと繋がっていく知のロードマップが、Pythonの関数構造としてみえてきましたね。

Python歴の浅い私の今回の学び

今回のコードは、科学の歴史が「固形物(物)」を追いかけるのをやめて、「空間全体の揺れ動き(波・場)」に目を向けた、コペルニクス的転換を再現しています。

物から場への転換の文法

1. 「波の計算」をするための数学の道具

まず、コードの1番上でこの道具を呼び出しました。

import math
  • import math

    • Pythonに最初から入っている「高度な数学の計算ができる電卓(数学モジュール)」を取り出す命令です。

    • 今回は、海の波や光の波をきれいに表現するために、高校の数学で習う「サイン(正弦波)」の計算機能を使いたかったので呼び出しました。

2. 古い世界観:「物(粒子)」を表す箱

ニュートンが考えた「光は小さな粒(物)の集まりだ」という世界観を、シンプルなクラス(設計図)で表現します。

class NewtonParticle:
    def __init__(self, position: float, mass: float):
        self.position = position  # 物質の固定的な位置
        self.mass = mass          # 物質の重さ(固有の属性)
  • self.position と self.mass

    • 古い物理学(古典力学)では、世界は「決まった場所(position)」にある「決まった重さの物(mass)」の組み合わせでできていました。

    • プログラミングで言えば、「変数の中に、決まった数字をポツンと固定して保存している状態」です。これが「物」中心の思考です。

3. 新しい世界観:「場(波動)」を表す動的な仕組み
19世紀末、ファラデーやマクスウェルが提唱し、ヘルツが実験で証明した「光は空間を伝わる波(場)である」という世界観を作ります。

class ElectromagneticField:
    def __init__(self, frequency: float):
        self.frequency = frequency  # 振動数(波の細かさ)

この新しい設計図には、先ほどあった「重さ(mass)」や「固定された場所(position)」という変数がどこにもありません。あるのは波の細かさを表す frequency(振動数)という情報だけです。

4. 空間全体をリアルタイムに計算する

この新しい設計図の中に、空間の状態を計算する関数(メソッド)を作ります。

    def get_wave_amplitude(self, x: float, t: float) -> float:
        amplitude = math.sin(self.frequency * x - t)
        return round(amplitude, 4)
  • get_wave_amplitude(self, x, t)

    • カッコの中にある x は「空間の場所(座標)」、t は「時間」です。

    • この新しいシステムは、特定の場所にデータが固定されているのではなく、「『場所 x』と『時間 t』を教えてくれたら、その瞬間の空間の揺れ具合(amplitude)をその都度リアルタイムに計算しますよ」という仕組みになっています。

  • math.sin(...)

    • 先ほど呼び出した数学電卓を使って、綺麗な「波のカタチ」を計算しています。

  • round(amplitude, 4)

    • 小数点がズラズラと長くならないように、四捨五入してすっきり「小数第4位まで」に丸めるPythonの技術です。

5. for ループで空間をスキャンする

最後に、ヘルツの実験のように、空間のいろいろな場所の「場」の状態を順番に覗き見ます。

for space_x in [1.0, 2.0, 3.0]:
    wave_state = hertz_experiment.get_wave_amplitude(x=space_x, t=0.5)
    print(f"  空間座標 x={space_x} の状態: {wave_state}")
  • for space_x in [1.0, 2.0, 3.0]:

    • for(フォー)ループは、「リストの中身を1つずつ取り出して、順番に処理を繰り返せ」という命令です。

    • ここでは「場所が 1.0 のとき」「2.0 のとき」「3.0 のとき」の3回、順番に波の計算を繰り返しています。

  • これによって、「そこに物があるかないか」ではなく、「空間全体が今、どんな風に揺れ動いているか」という『場』の状態が画面に出力されます。

 Python歴の浅い私の今回のさらなる学び

今回は、Pythonの「データ(変数)」の扱い方が、古い物理学から新しい物理学へ変わるステップと重なるところがありました。

  1. 「静的なデータ」から「動的な関数」へ
    古いコード(ニュートン)は「重さ=0.001」という動かないデータを大切に持っていました。しかし、新しいコード(マクスウェル)は、場所と時間を入力するたびに答えが変わる「計算の仕組み(関数)」そのものを空間に配置しています。

  2. for ループによる「場」の表現
    置かれた1つのデータをピンポイントで見るのではなく、for ループを使って「空間全体のあちこちの状態」を網羅して評価する。これこそが、物理学でいう「場の理論」のプログラミング的な表現です。

小林秀雄がドストエフスキーを論じる際、「人間の固定された属性(性格や身分=データ)を扱うのをやめて、主客の対立が消えた生活の『場(関係性)』に人間を立てた」と驚嘆した理由は、ここにあるのではないでしょうか。
そう、人間を「固まった物」として見るのをやめ、「周囲と影響し合って常に変化する波」として捉え直したのです。

この「データから関数へ、実体から関係性へ」という設計思想は、特に大規模なデータを処理するアルゴリズムやシミュレーションにおいて、コードを書くための土台となります。

この「固定されたデータから、リアルタイムに変化する波の計算へ」というパラダイムシフトについても、引き続き考えてゆきたいと思います。

ここまで、読んで下さり、ありがとうございます。

今日も、頑張り過ぎず、頑張りたいですね。

では、また、次回。

※見出し画像はカンディンスキーの「白の上にⅡ」からです😌

いいなと思ったら応援しよう!