「tanh」を含む日記 RSS

はてなキーワード: tanhとは

2024-10-08

anond:20241007235856

 

光の速さは一定

マイケルンモーレーという実験がある

地球宇宙空間を動いているのだから地球の進行方向と垂直方向では光の速さが変わるだろう。そう考えて実験してみたところ、どちらの速さも変わらなかった。つまり、どんな系でも光の速さは一定であるらしい。

 

これを式にするとこうなる。

光の速さをc, 時刻 t の間に光の進む距離を x として

x/t = c

式変形すると

(ct)^2 - x^2 = const = 0

おや、なんだか見たことある形になったね

 

空間回転を考えよう

ここで一旦休憩。座標系を回転させても'棒の長さは一定'という式を考えてみよう

x^2 + y^2 = const

かんたんのため z 方向は考えない

この時座系を回転させる式を行列で書くと

 

x' = | cos  -sin | x

y'    | sin  cos | y

こうなる。(心の目で読んで欲しい)

cos^2 + sin^2 = 1

という式を思い出すと

x'^2 + y'^2 = x^2 + y^2 = const

であることが確かめられると思う

 

戻って光の速さが一定の式

(ct)^2 - x^2 = const = 0

上の'棒の式'とは符号が逆だね。こんなときsin cos ではなく sinh cosh を使う。

 

cosθ = ((exp iθ) + (exp -iθ))/2

sinθ = ((exp iθ) - (exp -iθ))/2

 

sin cos は↑の定義だったのに対して

sinh cosh は↓の定義

 

coshθ = ((exp θ) + (exp -θ))/2

sinhθ = ((exp θ) - (exp -θ))/2

 

計算すると

cosh^2 - sinh^2 = 1 になるのがわかると思う。

cos^2 + sin^2 = 1 とは符号が逆になってるね

 

光の速さが系を変換しても変わらないという式を行列で書くと

ct' = | cosh  -sinh | ct

x'   | -sinh  cosh | x

こうなる。 これがローレンツ変換

 

(ct')^x - x'^2 = (ct)^2 - x^2

であることが確かめられると思う。

 

棒の長さが一定、つまり空間回転は空間方向 (x,y,z)しか混ぜないけれど、

光のはやさが一定、つまりローレンツ変換時間空間 (t, x ) を混ぜているでしょ?

 

時間が遅れる

速さ v で進むロケットを考えてみよう。

地上では昇くんがロケット観測している。

t 時間後に到達した距離を x として

v=x/t  

だ。

一方、ロケットには美加子さんが乗っていてその携帯電話の表示では地球を発ってから T時間である

Tを計算してみよう。

 

先程のローレンツ変換の式に代入すると

 

cT = ct cosh - x sinh = ct ( cosh - v/c sinh)

ここで x = ct を使ったよ。最後cosh で全体を纏める

= ct cosh ( 1 - tanh^2)

= ct (1/cosh)

になる。

ここまで誤魔化していたけど、cosh はロケットの速さ v で決まるパラメータ

1/cosh = \sqrt{1-(v/c)^2}

なんだ。天下り申し訳ないけど、増田では式も図も書けないので導出は勘弁して欲しい

とにかくまとめると

T = t \sqrt{1-(v/c)^2}

だね。ロケットの速度 v は光速度以下なので T < t になる。

地上で待つ昇くんが大学生になっても美加子さんが中学生のままなのはこんなワケだね

v が大きくなるほど時間の遅れは大きくなるよ




 

2024-08-05

意識数理モデルの具体化

1. 抽象状態空間

Ωを仮に100次元の実ベクトル空間R^100とする。各次元特定の神経活動パターン対応する。

Ω = {ω ∈ R^100 | ||ω||₂ ≤ 1}

ここで||・||₂はユークリッドノルムである。τは標準的ユークリッド位相とする。

2. 一般観測作用素

観測Oを10100の実行列として定義する。

O : Ω → Ω

O(ω) = Aω / ||Aω||₂

ここでAは10100の実行列で、||Aω||₂ ≠ 0とする。

3. 一般エントロピー汎関数

シャノンエントロピー連続版を使用して定義する:

S[ω] = -∫Ω p(x) log p(x) dx

ここでp(x)はωに対応する確率密度関数である

4. 観測によるエントロピー減少の公理

任意観測Oに対して以下が成立する:

S[O(ω)] ≤ S[ω] + log(det(AA^T))

5. 抽象力学系

非線形常微分方程式系として定式化する:

dω/dt = F(ω) + G(ω, O)

F(ω) = -αω + β tanh(Wω)

G(ω, O) = γ(O(ω) - ω)

ここでα, β, γは正の定数、Wは10100の重み行列tanhは要素ごとの双曲線正接関数である

6. 一般情報幾何

フィッシャー情報行列を導入する:

g_ij(ω) = E[(∂log p(x|ω)/∂ω_i)(∂log p(x|ω)/∂ω_j)]

ここでE[・]は期待値、p(x|ω)は状態ωでの条件付き確率密度関数である

7. 抽象量子化

状態ωに対応する波動関数ψ(x)を定義する:

ψ(x) = √(p(x)) exp(iθ(x))

ここでθ(x)は位相関数である

8. 一般統合情報理論

統合情報量Φを以下のように定義する:

Φ[ω] = min_π (I(X;Y) - I(X_π;Y_π))

ここでI(X;Y)は相互情報量、πは可能な分割、X_πとY_πは分割後の変数である

9. 普遍的学習

勾配降下法を用いて定式化する:

ω_new = ω_old - η ∇L(ω_old, O)

L(ω, O) = ||O(ω) - ω_target||₂²

ここでηは学習率、ω_targetは目標状態である

10. 抽象因果構造

有向非巡回グラフ(DAG)として表現する:

G = (V, E)

V = {v_1, ..., v_100}

E ⊆ V × V

各頂点v_iはω_iに対応し、辺(v_i, v_j)はω_iからω_jへの因果関係を表す。

実装例:

このモデルPythonとNumPyを用いて以下のように実装できる:

import numpy as np
from scipy.stats import entropy
from scipy.integrate import odeint
import matplotlib.pyplot as plt

class ConsciousnessModel:
    def __init__(self, dim=100):
        self.dim = dim
        self.omega = np.random.rand(dim)
        self.omega /= np.linalg.norm(self.omega)
        self.A = np.random.rand(dim, dim)
        self.W = np.random.rand(dim, dim)
        self.alpha = 0.1
        self.beta = 1.0
        self.gamma = 0.5
        self.eta = 0.01

    def observe(self, omega):
        result = self.A @ omega
        return result / np.linalg.norm(result)

    def entropy(self, omega):
        p = np.abs(omega) / np.sum(np.abs(omega))
        return entropy(p)

    def dynamics(self, omega, t):
        F = -self.alpha * omega + self.beta * np.tanh(self.W @ omega)
        G = self.gamma * (self.observe(omega) - omega)
        return F + G

    def update(self, target):
        def loss(o):
            return np.linalg.norm(self.observe(o) - target)**2
        
        grad = np.zeros_like(self.omega)
        epsilon = 1e-8
        for i in range(self.dim):
            e = np.zeros(self.dim)
            e[i] = epsilon
            grad[i] = (loss(self.omega + e) - loss(self.omega - e)) / (2 * epsilon)
        
        self.omega -= self.eta * grad
        self.omega /= np.linalg.norm(self.omega)

    def integrated_information(self, omega):
        def mutual_info(x, y):
            p_x = np.abs(x) / np.sum(np.abs(x))
            p_y = np.abs(y) / np.sum(np.abs(y))
            p_xy = np.abs(np.concatenate([x, y])) / np.sum(np.abs(np.concatenate([x, y])))
            return entropy(p_x) + entropy(p_y) - entropy(p_xy)
        
        total_info = mutual_info(omega[:self.dim//2], omega[self.dim//2:])
        min_info = float('inf')
        for i in range(1, self.dim):
            partition_info = mutual_info(omega[:i], omega[i:])
            min_info = min(min_info, partition_info)
        
        return total_info - min_info

    def causal_structure(self):
        threshold = 0.1
        return (np.abs(self.W) > threshold).astype(int)

    def run_simulation(self, steps=1000, dt=0.01):
        t = np.linspace(0, steps*dt, steps)
        solution = odeint(self.dynamics, self.omega, t)
        self.omega = solution[-1]
        self.omega /= np.linalg.norm(self.omega)
        return solution

    def quantum_state(self):
        phase = np.random.rand(self.dim) * 2 * np.pi
        return np.sqrt(np.abs(self.omega)) * np.exp(1j * phase)

# モデル使用model = ConsciousnessModel(dim=100)

# シミュレーション実行
trajectory = model.run_simulation(steps=10000, dt=0.01)

# 最終状態の表示
print("Final state:", model.omega)

# エントロピー計算
print("Entropy:", model.entropy(model.omega))

# 統合情報量の計算
phi = model.integrated_information(model.omega)
print("Integrated Information:", phi)

# 因果構造の取得
causal_matrix = model.causal_structure()
print("Causal Structure:")
print(causal_matrix)

# 観測の実行
observed_state = model.observe(model.omega)
print("Observed state:", observed_state)

# 学習の実行
target_state = np.random.rand(model.dim)
target_state /= np.linalg.norm(target_state)
model.update(target_state)
print("Updated state:", model.omega)

# 量子状態の生成
quantum_state = model.quantum_state()
print("Quantum state:", quantum_state)

# 時間発展の可視化
plt.figure(figsize=(12, 6))
plt.plot(trajectory[:, :5])  # 最初の5次元のみプロット
plt.title("Time Evolution of Consciousness State")
plt.xlabel("Time Step")
plt.ylabel("State Value")
plt.legend([f"Dim {i+1}" for i in range(5)])
plt.show()

anond:20240804172334

 
ログイン ユーザー登録
ようこそ ゲスト さん