script dump
This commit is contained in:
76
extrapolation_blow-up_v2.py
Normal file
76
extrapolation_blow-up_v2.py
Normal file
@@ -0,0 +1,76 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# -----------------------------
|
||||
# Generate realistic fake SFs
|
||||
# -----------------------------
|
||||
np.random.seed(2)
|
||||
|
||||
n_ref = 2000
|
||||
|
||||
# Apo SFs
|
||||
Fa_amp = np.random.uniform(50, 200, n_ref)
|
||||
Fa_phi = np.random.uniform(-np.pi, np.pi, n_ref)
|
||||
Fa = Fa_amp * np.exp(1j * Fa_phi)
|
||||
|
||||
# Difference signal (correlated phases!)
|
||||
dF_amp = np.random.uniform(5, 25, n_ref)
|
||||
dF_phi = Fa_phi + np.random.normal(0, 0.3, n_ref)
|
||||
dF = dF_amp * np.exp(1j * dF_phi)
|
||||
|
||||
# Mixed SFs
|
||||
Fab = Fa + dF
|
||||
|
||||
# -----------------------------
|
||||
# Occupancies to test
|
||||
# -----------------------------
|
||||
b_values = [1.0, 0.5, 0.2, 0.1, 0.05]
|
||||
|
||||
# -----------------------------
|
||||
# Compute resultants
|
||||
# -----------------------------
|
||||
R_Fa = np.sum(Fa)
|
||||
R_Fab = np.sum(Fab)
|
||||
R_dF = np.sum(Fab - Fa)
|
||||
|
||||
R_Fb = []
|
||||
R_dF_scaled = []
|
||||
|
||||
for b in b_values:
|
||||
Fb = Fa + (Fab - Fa) / b
|
||||
R_Fb.append(np.sum(Fb))
|
||||
R_dF_scaled.append(R_dF / b)
|
||||
|
||||
# -----------------------------
|
||||
# Plot resultants
|
||||
# -----------------------------
|
||||
plt.figure(figsize=(6, 6))
|
||||
|
||||
# Reference resultants
|
||||
plt.arrow(0, 0, R_Fa.real, R_Fa.imag,
|
||||
head_width=200, length_includes_head=True,
|
||||
label="R(Fa)", color="black")
|
||||
|
||||
plt.arrow(0, 0, R_Fab.real, R_Fab.imag,
|
||||
head_width=200, length_includes_head=True,
|
||||
label="R(Fab)", color="blue")
|
||||
|
||||
# Extrapolated vs difference resultants
|
||||
for b, Rb, Rd in zip(b_values, R_Fb, R_dF_scaled):
|
||||
plt.arrow(0, 0, Rb.real, Rb.imag,
|
||||
head_width=200, length_includes_head=True,
|
||||
alpha=0.7, label=f"R(Fb), b={b}")
|
||||
plt.arrow(0, 0, Rd.real, Rd.imag,
|
||||
head_width=200, length_includes_head=True,
|
||||
linestyle="dashed", alpha=0.7)
|
||||
|
||||
plt.axhline(0, color="grey", lw=0.5)
|
||||
plt.axvline(0, color="grey", lw=0.5)
|
||||
plt.gca().set_aspect("equal")
|
||||
|
||||
plt.xlabel("Real")
|
||||
plt.ylabel("Imag")
|
||||
plt.title("Resultant vectors: extrapolation vs difference")
|
||||
plt.legend(fontsize=8)
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
Reference in New Issue
Block a user