init: 验证robust算法
This commit is contained in:
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
__pypackages__/
|
||||
env/
|
||||
.venv/
|
||||
12170
capa_results.json
Normal file
12170
capa_results.json
Normal file
File diff suppressed because it is too large
Load Diff
0
core/__init__.py
Normal file
0
core/__init__.py
Normal file
191
core/robust.py
Normal file
191
core/robust.py
Normal file
@@ -0,0 +1,191 @@
|
||||
from models.basic import ModelBasic
|
||||
from typing import List,Literal,Dict
|
||||
import numpy as np
|
||||
import random
|
||||
from pydantic import BaseModel
|
||||
from skrf import Network
|
||||
from models.basic import ModelBasicDatasetUnit
|
||||
|
||||
class RobustParametricConfig(BaseModel):
|
||||
n_poles: int
|
||||
max_iter: int = 10
|
||||
parameter_type: Literal["s","y","z"]
|
||||
|
||||
class RobustParametricModel:
|
||||
def __init__(self,model:ModelBasic,config:RobustParametricConfig):
|
||||
self.model = model
|
||||
self.config = config
|
||||
|
||||
# 区分训练集和测试集
|
||||
def _train_test_split(self,train_ratio:float=0.8,random_state:int=42):
|
||||
random.seed(random_state)
|
||||
dataset = self.model.results
|
||||
random.shuffle(dataset)
|
||||
train_size = int(len(dataset)*train_ratio)
|
||||
self.train_set = dataset[:train_size]
|
||||
self.test_set = dataset[train_size:]
|
||||
return self.train_set, self.test_set
|
||||
|
||||
def first_iteration_step(self, datasets: List[ModelBasicDatasetUnit],
|
||||
param_degree: int = 1):
|
||||
'''
|
||||
SK 迭代的第一步 (t=0) – 对应论文公式 (3).
|
||||
|
||||
目标:
|
||||
最小化 sum_{样本 n, 频点 f} | N^{(0)}(s_f, g_n) - H(s_f, g_n) |^2
|
||||
在 t=0 阶段我们令 D^{(0)}(s,g)=1, 仅拟合分子:
|
||||
N^{(0)}(s,g) = Σ_{p∈P} Σ_{v∈V} c_{p,v} * φ_freq_p(s) * φ_param_v(g)
|
||||
|
||||
因此是一个纯线性最小二乘:
|
||||
H ≈ Σ_{p,v} c_{p,v} F[:,p] ⊗ G[n,v]
|
||||
|
||||
记:
|
||||
F: (Nf, P) 频率正交(或原始)基列
|
||||
G: (Ns, V) 参数多项式(含常数)基列
|
||||
设计矩阵 A 大小 (Ns*Nf, P*V), A[(n*Nf + f), (p*V + v)] = F[f,p] * G[n,v]
|
||||
|
||||
输出:
|
||||
self.first_iter_coeffs[(i,j)] = C_{p,v} (P × V) 每个端口对一套系数
|
||||
self.freq_basis_F = F
|
||||
self.param_basis_G = G
|
||||
self.poles 初始极点 (供后续构造有理正交基 / SK 加权使用)
|
||||
|
||||
参数:
|
||||
datasets: 训练用样本列表
|
||||
param_degree: 参数多项式最大总次数 (默认 1 → 常数 + 线性)
|
||||
|
||||
注意:
|
||||
这里使用简单频率基 [1, 1/(s-a_k)],未做 QR 正交化;
|
||||
后续 SK 迭代 / 正交化可在第二步再进行。
|
||||
'''
|
||||
assert len(datasets) > 0, "空数据集"
|
||||
# ---------------- 收集频率与端口信息 ----------------
|
||||
Ns = len(datasets)
|
||||
freqs = datasets[0].freqs # 频率需要对齐
|
||||
Nf = freqs.shape[0]
|
||||
nports = self.model.info.nports
|
||||
|
||||
# ---------------- 构造初始极点 (对数分布 + 阻尼) ----------------
|
||||
def _init_poles(n_poles: int):
|
||||
fmin, fmax = freqs[0], freqs[-1]
|
||||
if n_poles <= 0:
|
||||
return np.array([], dtype=complex)
|
||||
# 避免 0 Hz,用第二个点或微小偏移
|
||||
start_f = max(fmin if fmin > 0 else freqs[1] if Nf > 1 else 1.0e-3, 1e-12)
|
||||
f_samples = np.logspace(np.log10(start_f), np.log10(fmax), n_poles)
|
||||
sigma = 0.02 * 2 * np.pi * fmax # 固定阻尼,可放入 config
|
||||
return -sigma + 1j * 2 * np.pi * f_samples
|
||||
|
||||
self.poles = _init_poles(self.config.n_poles)
|
||||
s_vec = 1j * 2 * np.pi * freqs # (Nf,)
|
||||
|
||||
# ---------------- 频率基 F ----------------
|
||||
# 列0: 常数 1, 后续列: 1/(s - a_k)
|
||||
P = 1 + len(self.poles)
|
||||
F = np.zeros((Nf, P), dtype=complex)
|
||||
F[:, 0] = 1.0
|
||||
for k, a in enumerate(self.poles, start=1):
|
||||
F[:, k] = 1.0 / (s_vec - a)
|
||||
self.freq_basis_F = F # (Nf, P)
|
||||
|
||||
# ---------------- 参数基 G ----------------
|
||||
# 取出参数向量 g = [param1, param2, ...]
|
||||
# 假设 datasets[i].parameters 为 dict
|
||||
param_keys = list(datasets[0].parameters.keys())
|
||||
d = len(param_keys)
|
||||
# 构造参数矩阵 (Ns,d)
|
||||
Pmat = np.zeros((Ns, d), dtype=float)
|
||||
for i, unit in enumerate(datasets):
|
||||
for j, k in enumerate(param_keys):
|
||||
Pmat[i, j] = float(unit.parameters[k])
|
||||
# 标准化
|
||||
mean = Pmat.mean(axis=0)
|
||||
std = Pmat.std(axis=0) + 1e-15
|
||||
Xn = (Pmat - mean) / std
|
||||
|
||||
# 生成多项式指数 (总次数 <= param_degree)
|
||||
def _gen_param_exps(dim, D):
|
||||
exps = []
|
||||
def rec(cur, idx, rem):
|
||||
if idx == dim:
|
||||
exps.append(tuple(cur)); return
|
||||
for t in range(rem + 1):
|
||||
cur.append(t); rec(cur, idx + 1, rem - t); cur.pop()
|
||||
rec([], 0, D)
|
||||
return exps
|
||||
|
||||
exps = _gen_param_exps(d, param_degree) # V_exps
|
||||
V = len(exps)
|
||||
G = np.zeros((Ns, V), dtype=float)
|
||||
for vidx, e in enumerate(exps):
|
||||
val = np.ones(Ns)
|
||||
for j, p in enumerate(e):
|
||||
if p:
|
||||
val *= Xn[:, j] ** p
|
||||
G[:, vidx] = val
|
||||
self.param_basis_G = G # (Ns, V)
|
||||
self.param_basis_meta = {
|
||||
"keys": param_keys,
|
||||
"mean": mean.tolist(),
|
||||
"std": std.tolist(),
|
||||
"exponents": exps,
|
||||
"degree": param_degree
|
||||
}
|
||||
|
||||
# ---------------- 构造设计矩阵 A (Kronecker) ----------------
|
||||
# A shape: (Ns*Nf, P*V)
|
||||
# 利用广播:A_block[n,f,p,v] = F[f,p] * G[n,v]
|
||||
A4 = np.einsum('fp,nv->nfpv', F, G) # (Ns, Nf, P, V)
|
||||
A = A4.reshape(Ns * Nf, P * V)
|
||||
|
||||
# ---------------- 采集目标 H 数据 ----------------
|
||||
# 对每个端口对 (i,j) 分别解一个向量 c_{p,v}
|
||||
# 选择参数类型
|
||||
param_type = self.config.parameter_type.lower()
|
||||
valid_types = {"s", "y", "z"}
|
||||
if param_type not in valid_types:
|
||||
raise ValueError(f"parameter_type 必须在 {valid_types}")
|
||||
|
||||
# 预先载入全部 Network (避免重复 IO)
|
||||
# H_data[(i,j)] -> (Ns,Nf) 复数
|
||||
H_data = {}
|
||||
for i_port in range(nports):
|
||||
for j_port in range(nports):
|
||||
H_mat = np.zeros((Ns, Nf), dtype=complex)
|
||||
for n, unit in enumerate(datasets):
|
||||
net: Network = unit.network
|
||||
if param_type == "s":
|
||||
sij = net.s[:, i_port, j_port]
|
||||
elif param_type == "y":
|
||||
sij = net.y[:, i_port, j_port]
|
||||
else:
|
||||
sij = net.z[:, i_port, j_port]
|
||||
# 插值或对齐假设已完成
|
||||
H_mat[n, :] = sij
|
||||
H_data[(i_port, j_port)] = H_mat
|
||||
|
||||
# ---------------- 最小二乘求系数 ----------------
|
||||
self.first_iter_coeffs = {}
|
||||
# 可选: 预计算 A^+ (伪逆) 如果数据不巨大
|
||||
# pinv = np.linalg.pinv(A)
|
||||
for key, Hmat in H_data.items():
|
||||
b = Hmat.reshape(Ns * Nf) # (Ns*Nf,)
|
||||
# 解 x (长度 P*V)
|
||||
x, *_ = np.linalg.lstsq(A, b, rcond=None)
|
||||
C = x.reshape(P, V)
|
||||
self.first_iter_coeffs[key] = C
|
||||
|
||||
# ---------------- 存储便于后续 SK 迭代使用 ----------------
|
||||
self.meta_first_iter = {
|
||||
"A_shape": A.shape,
|
||||
"num_samples": Ns,
|
||||
"num_freqs": Nf,
|
||||
"freq_basis_dim": P,
|
||||
"param_basis_dim": V
|
||||
}
|
||||
if getattr(self.config, "verbose", True):
|
||||
print(f"[t=0] 线性最小二乘完成: A={A.shape}, 频率基P={P}, 参数基V={V}, 端口对={nports*nports}")
|
||||
|
||||
return self.first_iter_coeffs
|
||||
|
||||
|
||||
250
core/sk_iter.py
Normal file
250
core/sk_iter.py
Normal file
@@ -0,0 +1,250 @@
|
||||
import numpy as np
|
||||
from dataclasses import dataclass
|
||||
from typing import List, Sequence, Tuple, Optional
|
||||
|
||||
@dataclass
|
||||
class OPVFConfig:
|
||||
n_poles: int
|
||||
max_iter: int = 5
|
||||
tol: float = 1e-3
|
||||
add_constraint: bool = True
|
||||
real_split: bool = True
|
||||
lambda_reg: float = 0.0
|
||||
verbose: bool = True
|
||||
|
||||
# ---------- 参数正交基 ----------
|
||||
class ParamOrthoBasis:
|
||||
def __init__(self, params: np.ndarray, total_degree: int):
|
||||
# params: (Ns, d)
|
||||
self.mean = params.mean(0)
|
||||
self.std = params.std(0) + 1e-15
|
||||
self.exps = self._gen_exps(params.shape[1], total_degree)
|
||||
M = self._build_monomial_matrix(params) # (Ns,M)
|
||||
Q,R = np.linalg.qr(M)
|
||||
self.Q = Q
|
||||
self.R = R
|
||||
def _gen_exps(self, dim, D):
|
||||
exps=[]
|
||||
def rec(cur, i, rem):
|
||||
if i==dim:
|
||||
exps.append(tuple(cur)); return
|
||||
for k in range(rem+1):
|
||||
cur.append(k); rec(cur, i+1, rem-k); cur.pop()
|
||||
rec([],0,D)
|
||||
return exps
|
||||
def _build_monomial_matrix(self, params):
|
||||
X = (params - self.mean)/self.std
|
||||
Ns = X.shape[0]
|
||||
M = np.zeros((Ns, len(self.exps)))
|
||||
for idx,e in enumerate(self.exps):
|
||||
v = np.ones(Ns)
|
||||
for j,p in enumerate(e):
|
||||
if p: v *= X[:,j]**p
|
||||
M[:,idx]=v
|
||||
return M
|
||||
def eval(self, g: np.ndarray) -> np.ndarray:
|
||||
x = (g - self.mean)/self.std
|
||||
mono=[]
|
||||
for e in self.exps:
|
||||
val=1.0
|
||||
for j,p in enumerate(e):
|
||||
if p: val*= x[j]**p
|
||||
mono.append(val)
|
||||
mono=np.array(mono)
|
||||
# φ = mono @ R^{-1}
|
||||
return mono @ np.linalg.inv(self.R)
|
||||
|
||||
# ---------- 频率正交(有理)基 ----------
|
||||
class RationalFreqBasis:
|
||||
def __init__(self, freqs: np.ndarray, poles: np.ndarray):
|
||||
# 构造原始矩阵 G: 列0 常数 1, 后面 1/(s-a_k)
|
||||
s = 1j*2*np.pi*freqs
|
||||
cols=[np.ones_like(s)]
|
||||
for a in poles:
|
||||
cols.append(1.0/(s - a))
|
||||
G = np.vstack(cols).T # (Nf, K+1)
|
||||
# 加权可加 w_f,这里统一 1
|
||||
Q, R = np.linalg.qr(G)
|
||||
self.Q = Q # Φ(f) (Nf, K+1) 频率正交基取样
|
||||
self.R = R # 变换: G = Q R
|
||||
self.freqs = freqs
|
||||
def eval(self) -> np.ndarray:
|
||||
return self.Q # 直接返回已正交基取样 (Nf, K+1)
|
||||
|
||||
# ---------- 主模型 ----------
|
||||
class OrthonormalParametricVF:
|
||||
"""
|
||||
H(s, μ) = N(s,μ)/D(s,μ)
|
||||
N(s,μ)= Σ_k c_k(μ) φ_k(s); D(s,μ)= Σ_k ĉ_k(μ) φ_k(s)
|
||||
其中 φ_k(s) 是频率正交有理基; c_k(μ), ĉ_k(μ) 在参数正交基上展开:
|
||||
c_k(μ)= Σ_q C[k,q] ψ_q(μ); ĉ_k(μ)= Σ_q Ctilde[k,q] ψ_q(μ)
|
||||
"""
|
||||
def __init__(self, cfg: OPVFConfig, freq_basis: RationalFreqBasis, param_basis: ParamOrthoBasis):
|
||||
self.cfg = cfg
|
||||
self.fb = freq_basis
|
||||
self.pb = param_basis
|
||||
Kp1 = self.fb.Q.shape[1]
|
||||
Qp = self.pb.Q.shape[1]
|
||||
self.C = np.zeros((Kp1, Qp), dtype=complex) # 分子
|
||||
self.Ct = np.zeros((Kp1, Qp), dtype=complex) # 分母
|
||||
# 初始化分母:ĉ_0 ≈ 1,其余 0
|
||||
self.Ct[0,0] = 1.0
|
||||
|
||||
def _assemble_phi_param(self, params: np.ndarray) -> np.ndarray:
|
||||
# 返回 (Ns, Qp)
|
||||
return self.pb.Q
|
||||
|
||||
def fit(self, H_samples: List[np.ndarray], params: np.ndarray):
|
||||
"""
|
||||
H_samples: list 长度 Ns, 每个 (Nf,) 复
|
||||
params: (Ns,d)
|
||||
"""
|
||||
Φf = self.fb.eval() # (Nf, K+1)
|
||||
Ns = len(H_samples)
|
||||
Nf, Kp1 = Φf.shape
|
||||
Φμ = self._assemble_phi_param(params) # (Ns, Qp)
|
||||
Qp = Φμ.shape[1]
|
||||
|
||||
# t=0: 只解 C (式3, D=1)
|
||||
self._solve_t0(H_samples, Φf, Φμ)
|
||||
|
||||
D_prev = self._eval_D(Φf, Φμ) # (Nf, Ns)
|
||||
|
||||
for it in range(1, self.cfg.max_iter+1):
|
||||
A, b = self._build_iter_system(H_samples, Φf, Φμ, D_prev)
|
||||
if self.cfg.lambda_reg>0:
|
||||
lam = self.cfg.lambda_reg
|
||||
A = np.vstack([A, lam*np.eye(A.shape[1])])
|
||||
b = np.concatenate([b, np.zeros(A.shape[1])])
|
||||
x, *_ = np.linalg.lstsq(A, b, rcond=None)
|
||||
self._unpack_iter_solution(x, Kp1, Qp)
|
||||
D_new = self._eval_D(Φf, Φμ)
|
||||
rel = np.max(np.abs(D_new-D_prev)/(np.abs(D_prev)+1e-12))
|
||||
if self.cfg.verbose:
|
||||
print(f"[OPVF-Iter {it}] rel_change={rel:.3e}")
|
||||
D_prev = D_new
|
||||
if rel < self.cfg.tol:
|
||||
if self.cfg.verbose:
|
||||
print(f"[OPVF] converged at {it}")
|
||||
break
|
||||
return self
|
||||
|
||||
def _solve_t0(self, H_samples, Φf, Φμ):
|
||||
Ns = len(H_samples); Nf,Kp1 = Φf.shape; Qp = Φμ.shape[1]
|
||||
# 设计矩阵行数 Ns*Nf;未知数 Kp1*Qp
|
||||
cols = Kp1*Qp
|
||||
A = np.zeros((Ns*Nf, cols), dtype=complex)
|
||||
b = np.zeros(Ns*Nf, dtype=complex)
|
||||
r = 0
|
||||
for n,Hn in enumerate(H_samples):
|
||||
phiμ = Φμ[n] # (Qp,)
|
||||
# Φf (Nf,Kp1) 外积 phiμ -> (Nf, Kp1*Qp)
|
||||
blk = np.einsum('fk,q->fkq', Φf, phiμ).reshape(Nf, cols)
|
||||
A[r:r+Nf,:] = blk
|
||||
b[r:r+Nf] = Hn
|
||||
r += Nf
|
||||
x, *_ = np.linalg.lstsq(A, b, rcond=None)
|
||||
self.C = x.reshape(Kp1, Qp)
|
||||
# 分母保持初始 (ĉ_0=1)
|
||||
|
||||
def _build_iter_system(self, H_samples, Φf, Φμ, D_prev):
|
||||
Ns = len(H_samples); Nf,Kp1 = Φf.shape; Qp=Φμ.shape[1]
|
||||
# 未知:C (Kp1*Qp) + Ct (Kp1*Qp) 但固定 Ct[0,0]=1,可去掉该变量
|
||||
mask_fix = np.zeros((Kp1,Qp), dtype=bool)
|
||||
mask_fix[0,0]=True
|
||||
idx_map={}
|
||||
col=0
|
||||
for i in range(Kp1):
|
||||
for j in range(Qp):
|
||||
idx_map[('C',i,j)] = col; col+=1
|
||||
for i in range(Kp1):
|
||||
for j in range(Qp):
|
||||
if mask_fix[i,j]: continue
|
||||
idx_map[('Ct',i,j)] = col; col+=1
|
||||
cols = col
|
||||
rows = Ns*Nf
|
||||
A = np.zeros((rows, cols), dtype=complex)
|
||||
b = np.zeros(rows, dtype=complex)
|
||||
r=0
|
||||
for n,Hn in enumerate(H_samples):
|
||||
phiμ = Φμ[n]
|
||||
Dp = D_prev[:,n] # (Nf,)
|
||||
invDp = 1.0/(Dp + 1e-12)
|
||||
# 分子块: (Φf φμ^T) / D_prev
|
||||
Num_blk = np.einsum('fk,q->fkq', Φf, phiμ).reshape(Nf, Kp1*Qp)
|
||||
Num_blk = (Num_blk.T * invDp).T
|
||||
# 填 C 部分
|
||||
for i in range(Kp1):
|
||||
for j in range(Qp):
|
||||
A[r:r+Nf, idx_map[('C',i,j)]] = Num_blk[:, i*Qp + j]
|
||||
# 分母块: -(H * Φf φμ^T)/D_prev
|
||||
Den_blk = (Num_blk.T * Hn).T * (-1.0)
|
||||
for i in range(Kp1):
|
||||
for j in range(Qp):
|
||||
if mask_fix[i,j]: continue
|
||||
A[r:r+Nf, idx_map[('Ct',i,j)]] = Den_blk[:, i*Qp + j]
|
||||
# 右端 0
|
||||
r += Nf
|
||||
|
||||
# 约束行 (式5)(8) 可选:Re( Σ_k D^{(t)}/D^{(t-1)} ) = K+1
|
||||
if self.cfg.add_constraint:
|
||||
row_c = np.zeros(cols, dtype=complex)
|
||||
# D^{(t)} ≈ Σ Ct_k φ_k(s) ; 用代表样本 n=0, 对所有频率平均
|
||||
n0=0
|
||||
phiμ0=Φμ[n0]
|
||||
mean_phiμ = phiμ0 # 可换平均
|
||||
# φ_k(s) 平均
|
||||
mean_phif = Φf.mean(0) # (Kp1,)
|
||||
for i in range(Kp1):
|
||||
for j in range(Qp):
|
||||
if mask_fix[i,j]: continue
|
||||
row_c[idx_map[('Ct',i,j)]] = mean_phif[i]*mean_phiμ[j]
|
||||
rhs = (Kp1) # K+1
|
||||
A = np.vstack([A, np.real(row_c) if self.cfg.real_split else row_c])
|
||||
b = np.concatenate([b, [rhs]])
|
||||
|
||||
# 拆实虚
|
||||
if self.cfg.real_split:
|
||||
A_real = np.vstack([np.real(A), np.imag(A)])
|
||||
b_real = np.concatenate([np.real(b), np.imag(b)])
|
||||
else:
|
||||
A_real, b_real = A, b
|
||||
return A_real, b_real
|
||||
|
||||
def _unpack_iter_solution(self, x, Kp1, Qp):
|
||||
# 重新填回 C, Ct (保持 Ct[0,0]=1)
|
||||
# 构建与 _build_iter_system 相同的 idx_map
|
||||
mask_fix = np.zeros((Kp1,Qp), dtype=bool); mask_fix[0,0]=True
|
||||
idx_C = Kp1*Qp
|
||||
# 注意:我们当时 C 索引从 0..(Kp1*Qp-1)
|
||||
self.C = x[:idx_C].reshape(Kp1, Qp)
|
||||
Ct_new = self.Ct.copy()
|
||||
pos = idx_C
|
||||
for i in range(Kp1):
|
||||
for j in range(Qp):
|
||||
if mask_fix[i,j]: continue
|
||||
Ct_new[i,j]=x[pos]; pos+=1
|
||||
self.Ct = Ct_new
|
||||
|
||||
def _eval_C_mu(self, phiμ):
|
||||
# 返回 c_k(μ) (Kp1,)
|
||||
return self.C @ phiμ
|
||||
def _eval_Ct_mu(self, phiμ):
|
||||
return self.Ct @ phiμ
|
||||
def _eval_D(self, Φf, Φμ):
|
||||
# D(f, sample)= Σ_k ĉ_k(μ_n) φ_k(f)
|
||||
Kp1 = Φf.shape[1]
|
||||
Ns = Φμ.shape[0]
|
||||
D = np.zeros((Φf.shape[0], Ns), dtype=complex)
|
||||
for n in range(Ns):
|
||||
ct_mu = self._eval_Ct_mu(Φμ[n])
|
||||
D[:,n] = Φf @ ct_mu
|
||||
return D
|
||||
|
||||
def evaluate(self, freqs: np.ndarray, g: np.ndarray):
|
||||
assert np.allclose(freqs, self.fb.freqs), "频率需在训练网格上 (示例简化)"
|
||||
Φf = self.fb.Q # (Nf,K+1)
|
||||
phiμ = self.pb.eval(g) # (Qp,)
|
||||
num = Φf @ (self.C @ phiμ)
|
||||
den = Φf @ (self.Ct @ phiμ)
|
||||
return num / (den + 1e-15)
|
||||
15
main.py
Normal file
15
main.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from models.capa import Capa
|
||||
W = []
|
||||
L = []
|
||||
i = 15.52
|
||||
|
||||
while i <= 100:
|
||||
W.append(i)
|
||||
L.append(i)
|
||||
i = int(i*1.05*100 +0.5) / 100.0
|
||||
|
||||
capa = Capa()
|
||||
capa.sweep(W,L)
|
||||
print(capa.network(result_dir=capa.results[0].result_dir,id=capa.results[0].id))
|
||||
|
||||
|
||||
149
models/basic.py
Normal file
149
models/basic.py
Normal file
@@ -0,0 +1,149 @@
|
||||
from abc import abstractmethod
|
||||
from skrf import Network
|
||||
from schemas.paramer import SimulationRequestUnit, UuidResponseUnit, SimulationResponseUnit
|
||||
from typing import List, Literal, Union, Dict
|
||||
import requests
|
||||
import time
|
||||
from utils import send_get_request
|
||||
from pydantic import BaseModel, Field
|
||||
import itertools
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
class ModelBasicParametersUnit(BaseModel):
|
||||
name: str
|
||||
type: Literal["number","integer","string","boolean"]
|
||||
range: List[Union[float,int,str,bool]]
|
||||
|
||||
class ModelBasicInfo(BaseModel):
|
||||
base_url = "http://localhost:8105/api/v1"
|
||||
nports: int = Field(default=2)
|
||||
cell_name: str
|
||||
template_name: str
|
||||
user_id: int = Field(default=0)
|
||||
template_version: str = Field(default="")
|
||||
|
||||
class ModelBasicDatasetUnit(BaseModel):
|
||||
nports: int = Field(default=2)
|
||||
parameters: Dict[str, Union[float, int, str, bool]]
|
||||
id: int = Field(default=0)
|
||||
result_dir: str = Field(default="")
|
||||
|
||||
@property
|
||||
def network(self) -> Network:
|
||||
try:
|
||||
network = Network(f"{self.result_dir}/{self.id}.s{self.nports}p")
|
||||
return network
|
||||
except Exception as e:
|
||||
raise RuntimeError(f"Error loading network from {self.result_dir}: {e}")
|
||||
|
||||
@property
|
||||
def s_params(self) -> np.ndarray:
|
||||
return self.network.s
|
||||
|
||||
@property
|
||||
def y_params(self) -> np.ndarray:
|
||||
return self.network.y
|
||||
|
||||
@property
|
||||
def z_params(self) -> np.ndarray:
|
||||
return self.network.z
|
||||
|
||||
@property
|
||||
def freqs(self) -> np.ndarray:
|
||||
return self.network.f
|
||||
|
||||
|
||||
class ModelBasic:
|
||||
def __init__(self):
|
||||
self._dataset:List[ModelBasicDatasetUnit] = []
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def info(self)->ModelBasicInfo:
|
||||
pass
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def parameters(self)->List[ModelBasicParametersUnit]:
|
||||
pass
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def settings(self)->dict:
|
||||
pass
|
||||
|
||||
def sweep(self):
|
||||
parameters_list = []
|
||||
lst = [res.range for res in self.parameters]
|
||||
parameters_name = [res.name for res in self.parameters]
|
||||
result = [list(item) for item in itertools.product(*lst)]
|
||||
for res in result:
|
||||
parameters_list.append({parameters_name[i]:res[i] for i in range(len(res))})
|
||||
|
||||
for res in parameters_list:
|
||||
request_unit = SimulationRequestUnit(
|
||||
user_id=self.info.user_id,
|
||||
template_name=self.info.template_name,
|
||||
template_version=self.info.template_version,
|
||||
cell_name=self.info.cell_name,
|
||||
parameters=res,
|
||||
settings=self.settings
|
||||
)
|
||||
response = self.simulate(request_unit)
|
||||
|
||||
self._dataset.append(ModelBasicDatasetUnit(nports=self.info.nports,parameters=res, id=response.id, result_dir=response.result_path))
|
||||
|
||||
@property
|
||||
def results(self)->List[ModelBasicDatasetUnit]:
|
||||
return self._dataset
|
||||
|
||||
def export(self, path:str|None):
|
||||
if path is None:
|
||||
path = f"{self.info.cell_name}_dataset.json"
|
||||
with open(path,"w") as f:
|
||||
json.dump([dict(item) for item in self.results],f,indent=4)
|
||||
|
||||
def load(self, path:str|None):
|
||||
if path is None:
|
||||
path = f"{self.info.cell_name}_dataset.json"
|
||||
with open(path,"r") as f:
|
||||
data = json.load(f)
|
||||
self._dataset += [ModelBasicDatasetUnit(**item) for item in data]
|
||||
|
||||
def clear(self):
|
||||
self._dataset = []
|
||||
|
||||
def simulate(self,simulation_request:SimulationRequestUnit)->UuidResponseUnit:
|
||||
def send_simulate_request(url, data:list)->list[dict]:
|
||||
response = requests.post(url, json = data)
|
||||
if response.status_code not in [200,201,202]:
|
||||
raise RuntimeError(f"send_simulate_request: {response.status_code}, {response.text}")
|
||||
return response.json()
|
||||
|
||||
response = send_simulate_request(f"{self.info.base_url}/simulations/create", [dict(simulation_request)])
|
||||
|
||||
simulation_response_model:SimulationResponseUnit = SimulationResponseUnit(**(response[0]))
|
||||
|
||||
time.sleep(0.01)
|
||||
|
||||
response = send_get_request(f"{self.info.base_url}/simulations/input_hash/{simulation_response_model.input_hash}")
|
||||
assert isinstance(response, dict), "Response is not a dictionary."
|
||||
uuid_model = UuidResponseUnit(**response)
|
||||
|
||||
|
||||
time.sleep(0.01) # Wait for 2 seconds before checking the status again
|
||||
|
||||
status = uuid_model.status
|
||||
while status != "completed" and status != "failed":
|
||||
time.sleep(0.01) # Wait for 2 seconds before checking again
|
||||
response = send_get_request(f"{self.info.base_url}/simulations/input_hash/{simulation_response_model.input_hash}")
|
||||
assert isinstance(response, dict), "Response is not a dictionary."
|
||||
uuid_model = UuidResponseUnit(**response)
|
||||
assert response is not None, "No response received from the server."
|
||||
status = uuid_model.status
|
||||
|
||||
if status == "failed":
|
||||
raise RuntimeError(f"Simulation failed: {uuid_model.error_message}")
|
||||
else:
|
||||
return uuid_model
|
||||
45
models/capa.py
Normal file
45
models/capa.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from typing import List,Optional
|
||||
from pydantic import BaseModel, Field
|
||||
from schemas.paramer import SimulationRequestUnit
|
||||
from skrf import Network
|
||||
import re
|
||||
from models.basic import ModelBasic, ModelBasicParametersUnit, ModelBasicInfo, ModelBasicDatasetUnit
|
||||
|
||||
W = []
|
||||
L = []
|
||||
i = 15.52
|
||||
while i <= 100:
|
||||
W.append(i)
|
||||
L.append(i)
|
||||
i = int(i*1.05*100 + 0.5) / 100.0
|
||||
|
||||
class Capa(ModelBasic):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@property
|
||||
def info(self) -> ModelBasicInfo:
|
||||
return ModelBasicInfo(
|
||||
nports=2,
|
||||
cell_name="capa",
|
||||
template_name="em_interface_compound",
|
||||
user_id=0,
|
||||
template_version=""
|
||||
)
|
||||
|
||||
@property
|
||||
def settings(self) -> dict:
|
||||
return {}
|
||||
|
||||
@property
|
||||
def parameters(self) -> List[ModelBasicParametersUnit]:
|
||||
return [
|
||||
ModelBasicParametersUnit(name="W",type="number",range=W),
|
||||
ModelBasicParametersUnit(name="L",type="number",range=L)
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
309
outputs/capa_parametric.s2p
Normal file
309
outputs/capa_parametric.s2p
Normal file
@@ -0,0 +1,309 @@
|
||||
! Created with skrf 1.8.0 (http://scikit-rf.org).
|
||||
# Hz S RI R 50.0
|
||||
!freq ReS11 ImS11 ReS21 ImS21 ReS12 ImS12 ReS22 ImS22
|
||||
0.0 0.5169316987261682 -0.14305278198989352 0.4988694955145437 0.12530267192181432 0.4988694955145437 0.12530267192181432 0.5263854174928203 -0.14417829506357768
|
||||
1000.0 0.5169316947040424 -0.14305278151191225 0.4988694984093659 0.12530266799393616 0.4988694984093659 0.12530266799393616 0.5263854133767084 -0.14417829453782283
|
||||
10000.0 0.5169316585049104 -0.14305277721008075 0.4988695244627657 0.12530263264303276 0.4988695244627657 0.12530263264303276 0.5263853763317018 -0.14417828980602918
|
||||
12589.0 0.5169316480916267 -0.14305277597258723 0.4988695319574604 0.12530262247375623 0.4988695319574604 0.12530262247375623 0.5263853656750881 -0.14417828844484987
|
||||
15849.0 0.5169316349794967 -0.14305277441436826 0.4988695413945808 0.12530260966887344 0.4988695413945808 0.12530260966887344 0.5263853522565635 -0.14417828673088906
|
||||
19953.0 0.5169316184726925 -0.1430527724527331 0.4988695532749311 0.12530259354886147 0.4988695532749311 0.12530259354886147 0.5263853353640404 -0.14417828457319115
|
||||
25119.0 0.5169315976943908 -0.14305276998348182 0.4988695682295826 0.12530257325744293 0.4988695682295826 0.12530257325744293 0.5263853141002066 -0.14417828185714157
|
||||
31623.0 0.5169315715344848 -0.1430527668746916 0.4988695870575062 0.1253025477105234 0.4988695870575062 0.1253025477105234 0.526385287329015 -0.14417827843763203
|
||||
39811.0 0.5169315386013189 -0.14305276296098088 0.4988696107603104 0.12530251554905705 0.4988696107603104 0.12530251554905705 0.5263852536262912 -0.1441782741327513
|
||||
50119.0 0.5169314971412463 -0.14305275803394987 0.49886964060013766 0.12530247506048903 0.49886964060013766 0.12530247506048903 0.5263852111974101 -0.1441782687132703
|
||||
63096.0 0.5169314449461201 -0.14305275183118685 0.4988696781662454 0.1253024240884142 0.4988696781662454 0.1253024240884142 0.5263851577826266 -0.1441782618905496
|
||||
79433.0 0.5169313792366513 -0.14305274402240672 0.49886972545895575 0.12530235991866878 0.49886972545895575 0.12530235991866878 0.5263850905377072 -0.1441782533012926
|
||||
100000.0 0.5169312965135905 -0.14305273419176578 0.498869784996764 0.12530227913399875 0.498869784996764 0.12530227913399875 0.5263850058816346 -0.14417824248809258
|
||||
125893.0 0.5169311923686877 -0.14305272181539658 0.4988698599523953 0.12530217742944966 0.4988698599523953 0.12530217742944966 0.5263848993031504 -0.1441782288747222
|
||||
158489.0 0.5169310612634759 -0.14305270623511884 0.4988699543120198 0.12530204939633327 0.4988699543120198 0.12530204939633327 0.5263847651343683 -0.1441782117372171
|
||||
199526.0 0.5169308962075003 -0.14305268662020118 0.49887007310683856 0.1253018882079974 0.49887007310683856 0.1253018882079974 0.5263845962214859 -0.14417819016181527
|
||||
251189.0 0.5169306884124163 -0.14305266192625446 0.49887022266203807 0.12530168528202823 0.49887022266203807 0.12530168528202823 0.5263843835707991 -0.1441781629997424
|
||||
316228.0 0.5169304268173779 -0.14305263083883016 0.4988704109383793 0.12530142981676085 0.4988704109383793 0.12530142981676085 0.526384115863 -0.14417812880517264
|
||||
398107.0 0.5169300974897413 -0.14305259170220114 0.4988706479635265 0.12530110820602533 0.4988706479635265 0.12530110820602533 0.5263837788398773 -0.14417808575689117
|
||||
501187.0 0.5169296828890162 -0.14305254243189108 0.4988709463617992 0.125300703320345 0.4988709463617992 0.125300703320345 0.5263833545510671 -0.14417803156208114
|
||||
630957.0 0.5169291609377541 -0.14305248040426072 0.4988713220228765 0.12530019359959674 0.4988713220228765 0.12530019359959674 0.5263828204032315 -0.1441779633348741
|
||||
794328.0 0.5169285038390437 -0.14305240231598146 0.4988717949528746 0.12529955189821454 0.4988717949528746 0.12529955189821454 0.5263821479499213 -0.14417787744177832
|
||||
1000000.0 0.5169276766003909 -0.14305230400861618 0.49887239033674674 0.12529874404365846 0.49887239033674674 0.12529874404365846 0.5263813013809635 -0.14417776930872658
|
||||
1258925.0 0.5169266351714739 -0.14305218024731395 0.49887313987858567 0.12529772701780695 0.49887313987858567 0.12529772701780695 0.526380235616701 -0.14417763317765178
|
||||
1584893.0 0.5169253240871785 -0.14305202444071294 0.49887408349798956 0.12529644665522024 0.49887408349798956 0.12529644665522024 0.5263788938959513 -0.14417746179839447
|
||||
1995262.0 0.5169236735314454 -0.14305182829201415 0.4988752714432822 0.12529483477578932 0.4988752714432822 0.12529483477578932 0.5263772047712447 -0.144177246044902
|
||||
2511886.0 0.5169215956047378 -0.14305158135541474 0.49887676697790806 0.1252928055396649 0.49887676697790806 0.1252928055396649 0.5263750782890728 -0.1441769744273278
|
||||
3162278.0 0.5169189796463092 -0.14305127048021582 0.4988786497471103 0.12529025087913537 0.4988786497471103 0.12529025087913537 0.5263724012028501 -0.14417663248057871
|
||||
3981072.0 0.5169156863538554 -0.1430508791120138 0.49888102001016127 0.12528703475606862 0.49888102001016127 0.12528703475606862 0.5263690309551585 -0.14417620199566117
|
||||
5011872.0 0.5169115403466041 -0.14305038640891315 0.4988840039928882 0.12528298589926556 0.4988840039928882 0.12528298589926556 0.5263647880670566 -0.14417566004756066
|
||||
6309573.0 0.5169063208299607 -0.14304976613213158 0.49888776060655593 0.12527788868785483 0.49888776060655593 0.12527788868785483 0.5263594465845839 -0.14417497777496466
|
||||
7943282.0 0.5168997498468791 -0.14304898524981696 0.4988924899036425 0.12527147167796068 0.4988924899036425 0.12527147167796068 0.5263527220555985 -0.14417411884453263
|
||||
10000000.0 0.5168914774683946 -0.14304800217712021 0.4988984437365743 0.12526339314025572 0.4988984437365743 0.12526339314025572 0.5263442563742526 -0.14417303751506683
|
||||
12589254.0 0.516881063163137 -0.14304676456218599 0.49890593916654286 0.12525322286602916 0.49890593916654286 0.12525322286602916 0.526333598715163 -0.14417167620221563
|
||||
15848932.0 0.5168679523282272 -0.14304520649713184 0.498915375354792 0.12524041924801782 0.498915375354792 0.12524041924801782 0.5263201815158981 -0.14416996241069416
|
||||
19952623.0 0.5168514467668739 -0.14304324500966592 0.49892725481061334 0.12522430044978053 0.49892725481061334 0.12522430044978053 0.5263032902647165 -0.14416780487524355
|
||||
25118864.0 0.5168306674957757 -0.14304077564319373 0.49894221015976653 0.12520400808460874 0.49894221015976653 0.12520400808460874 0.5262820254388815 -0.14416508869897593
|
||||
31622777.0 0.5168045079396447 -0.14303766689455033 0.49896103783152573 0.12517846150680842 0.49896103783152573 0.12517846150680842 0.5262552546054668 -0.14416166923516513
|
||||
39810717.0 0.5167715750151072 -0.14303375321253045 0.49898474046203506 0.12514630027614093 0.49898474046203506 0.12514630027614093 0.5262215521285504 -0.14415736438598972
|
||||
50118723.0 0.5167301149184613 -0.14302882617865584 0.49901458030667317 0.12510581168454307 0.49901458030667317 0.12510581168454307 0.5261791232228341 -0.1441519449018302
|
||||
63095734.0 0.5166779197480051 -0.14302262341036215 0.49905214644624535 0.12505483956650784 0.49905214644624535 0.12505483956650784 0.5261257083939916 -0.14414512217534436
|
||||
79432823.0 0.5166122099212112 -0.1430148145876941 0.4990994394142159 0.12499066947149441 0.4990994394142159 0.12499066947149441 0.5260584631082538 -0.14413653287154995
|
||||
100000000.0 0.5165294861484319 -0.1430049838621606 0.49915897773484985 0.12490988410622846 0.49915897773484985 0.12490988410622846 0.525973806307144 -0.14412571957846906
|
||||
125892541.0 0.5164253430918343 -0.1429926077123401 0.4992339320374304 0.12480818136003487 0.4992339320374304 0.12480818136003487 0.5258672297121321 -0.1441121064494314
|
||||
158489319.0 0.5162942347507815 -0.14297702706275484 0.499328293914133 0.12468014518777729 0.499328293914133 0.12468014518777729 0.525733057727714 -0.14409496853526813
|
||||
199526231.0 0.516129179129203 -0.14295741218713942 0.4994470884781358 0.12451895719754857 0.4994470884781358 0.12451895719754857 0.5255641452076658 -0.14407339317971052
|
||||
251188643.0 0.5159213864101769 -0.14293271852146178 0.4995966419754571 0.1243160335379748 0.4995966419754571 0.1243160335379748 0.5253514969410836 -0.14404623141598272
|
||||
316227766.0 0.5156597908770215 -0.14290163103837383 0.49978491867278524 0.1240605677874669 0.49978491867278524 0.1240605677874669 0.5250837886357498 -0.14401203678155508
|
||||
398107171.0 0.5153304616115358 -0.14286249421578498 0.5000219449923526 0.12373895546115266 0.5000219449923526 0.12373895546115266 0.5247467638460045 -0.1439689882871723
|
||||
501187234.0 0.5149158606330113 -0.14281322387560505 0.5003203434474182 0.12333406953339042 0.5003203434474182 0.12333406953339042 0.5243224747764942 -0.1439147934439998
|
||||
630957344.0 0.514393908928449 -0.1427511961926681 0.50069600484314 0.12282434835303803 0.50069600484314 0.12282434835303803 0.5237883264880697 -0.14384656617914132
|
||||
794328235.0 0.5137368106564871 -0.14267310796550947 0.5011689345257409 0.12218264739897594 0.5011689345257409 0.12218264739897594 0.5231158736265745 -0.1437606731406718
|
||||
800000996.0 0.5137139940982403 -0.14267039649196073 0.5011853561602363 0.12216036548496063 0.5011853561602363 0.12216036548496063 0.5230925239077618 -0.14375769065905702
|
||||
1000000000.0 0.5129095729488049 -0.14257480071256423 0.5017643177176059 0.1213747937659555 0.5017643177176059 0.1213747937659555 0.5222693056360564 -0.14365254021249166
|
||||
1600000990.0 0.5104962935004823 -0.1422880114729652 0.5035012139053171 0.11901806298384085 0.5035012139053171 0.11901806298384085 0.5197996344470474 -0.14333708678134274
|
||||
2400000990.0 0.5072785928785918 -0.14190562645110177 0.505817071667767 0.11587576045915382 0.505817071667767 0.11587576045915382 0.5165067449616364 -0.14291648290047396
|
||||
3200000980.0 0.5040608922969224 -0.14152324143401826 0.5081329294012686 0.11273345797374554 0.5081329294012686 0.11273345797374554 0.5132138555173865 -0.14249587902486277
|
||||
4000000980.0 0.5008431916750319 -0.14114085641215496 0.5104487871637186 0.10959115544905842 0.5104487871637186 0.10959115544905842 0.5099209660319755 -0.1420752751439941
|
||||
4800000980.0 0.49762549105314136 -0.14075847139029166 0.5127646449261685 0.10644885292437128 0.5127646449261685 0.10644885292437128 0.5066280765465645 -0.14165467126312542
|
||||
5600000970.0 0.4944077904714721 -0.1403760863732082 0.5150805026596701 0.10330655043896295 0.5150805026596701 0.10330655043896295 0.5033351871023147 -0.1412340673875143
|
||||
6400000970.0 0.49119008984958146 -0.13999370135134492 0.51739636042212 0.10016424791427578 0.51739636042212 0.10016424791427578 0.5000422976169037 -0.14081346350664567
|
||||
7200000960.0 0.48797238926791214 -0.1396113163342615 0.5197122181556217 0.0970219454288674 0.5197122181556217 0.0970219454288674 0.4967494081726538 -0.14039285963103457
|
||||
8000000960.0 0.4847546886460215 -0.13922893131239825 0.5220280759180717 0.09387964290418022 0.5220280759180717 0.09387964290418022 0.49345651868724266 -0.13997225575016592
|
||||
8800000960.0 0.48153698802413086 -0.138846546290535 0.5243439336805215 0.09073734037949305 0.5243439336805215 0.09073734037949305 0.4901636292018316 -0.1395516518692973
|
||||
9600000950.0 0.47831928744246155 -0.13846416127345157 0.5266597914140232 0.08759503789408464 0.5266597914140232 0.08759503789408464 0.48687073975758166 -0.13913104799368622
|
||||
10400000900.0 0.4751015870216772 -0.1380817762754874 0.5289756490317319 0.08445273556579136 0.5289756490317319 0.08445273556579136 0.48357785047797625 -0.13871044413910533
|
||||
11200000900.0 0.47188388639978657 -0.13769939125362413 0.5312915067941818 0.08131043304110418 0.5312915067941818 0.08131043304110418 0.4802849609925652 -0.1382898402582367
|
||||
12000000900.0 0.4686661857778959 -0.13731700623176088 0.5336073645566316 0.078168130516417 0.5336073645566316 0.078168130516417 0.4769920715071541 -0.13786923637736806
|
||||
12800000900.0 0.4654484851560053 -0.13693462120989763 0.5359232223190815 0.07502582799172978 0.5359232223190815 0.07502582799172978 0.473699182021743 -0.13744863249649944
|
||||
13600000900.0 0.4622307845341146 -0.1365522361880344 0.5382390800815314 0.0718835254670426 0.5382390800815314 0.0718835254670426 0.4704062925363319 -0.13702802861563082
|
||||
14400000900.0 0.45901308391222395 -0.13616985116617114 0.5405549378439812 0.0687412229423554 0.5405549378439812 0.0687412229423554 0.46711340305092086 -0.13660742473476217
|
||||
15200000900.0 0.4557953832903334 -0.13578746614430787 0.5428707956064311 0.06559892041766822 0.5428707956064311 0.06559892041766822 0.4638205135655099 -0.13618682085389353
|
||||
16000000900.0 0.4525776826684428 -0.13540508112244465 0.545186653368881 0.06245661789298104 0.545186653368881 0.06245661789298104 0.46052762408009884 -0.1357662169730249
|
||||
16800000900.0 0.44935998204655214 -0.1350226961005814 0.5475025111313307 0.059314315368293846 0.5475025111313307 0.059314315368293846 0.4572347345946877 -0.13534561309215629
|
||||
17600000900.0 0.4461422814246615 -0.13464031107871813 0.5498183688937807 0.056172012843606664 0.5498183688937807 0.056172012843606664 0.45394184510927665 -0.13492500921128764
|
||||
18400000900.0 0.44292458080277086 -0.13425792605685488 0.5521342266562306 0.05302971031891947 0.5521342266562306 0.05302971031891947 0.4506489556238656 -0.134504405330419
|
||||
19200000900.0 0.4397068801808802 -0.13387554103499164 0.5544500844186804 0.049887407794232286 0.5544500844186804 0.049887407794232286 0.44735606613845447 -0.13408380144955034
|
||||
20000000900.0 0.4364891795589896 -0.1334931560131284 0.5567659421811303 0.04674510526954509 0.5567659421811303 0.04674510526954509 0.4440631766530434 -0.13366319756868175
|
||||
20800000900.0 0.43327147893709894 -0.13311077099126514 0.5590817999435801 0.04360280274485791 0.5590817999435801 0.04360280274485791 0.44077028716763234 -0.1332425936878131
|
||||
21600000900.0 0.43005377831520825 -0.13272838596940187 0.56139765770603 0.040460500220170684 0.56139765770603 0.040460500220170684 0.43747739768222127 -0.13282198980694446
|
||||
22400000900.0 0.4268360776933176 -0.13234600094753862 0.5637135154684798 0.03731819769548349 0.5637135154684798 0.03731819769548349 0.43418450819681015 -0.1324013859260758
|
||||
23200000900.0 0.42361837707142697 -0.13196361592567538 0.5660293732309296 0.03417589517079632 0.5660293732309296 0.03417589517079632 0.4308916187113991 -0.1319807820452072
|
||||
24000000900.0 0.4204006764495363 -0.1315812309038121 0.5683452309933795 0.031033592646109123 0.5683452309933795 0.031033592646109123 0.427598729225988 -0.13156017816433854
|
||||
24800000900.0 0.4171829758276457 -0.13119884588194886 0.5706610887558294 0.02789129012142194 0.5706610887558294 0.02789129012142194 0.42430583974057695 -0.1311395742834699
|
||||
25600000900.0 0.413965275205755 -0.13081646086008564 0.5729769465182792 0.024748987596734745 0.5729769465182792 0.024748987596734745 0.42101295025516583 -0.13071897040260128
|
||||
26400000900.0 0.41074757458386435 -0.13043407583822236 0.5752928042807292 0.02160668507204755 0.5752928042807292 0.02160668507204755 0.41772006076975476 -0.13029836652173266
|
||||
27200000900.0 0.4075298739619737 -0.13005169081635912 0.577608662043179 0.018464382547360367 0.577608662043179 0.018464382547360367 0.4144271712843437 -0.129877762640864
|
||||
28000000900.0 0.40431217334008307 -0.12966930579449584 0.5799245198056288 0.01532208002267317 0.5799245198056288 0.01532208002267317 0.41113428179893263 -0.12945715875999536
|
||||
28800000900.0 0.40109447271819243 -0.1292869207726326 0.5822403775680787 0.012179777497985989 0.5822403775680787 0.012179777497985989 0.40784139231352157 -0.1290365548791267
|
||||
29600000900.0 0.3978767720963018 -0.12890453575076935 0.5845562353305285 0.009037474973298792 0.5845562353305285 0.009037474973298792 0.40454850282811045 -0.1286159509982581
|
||||
30400000800.0 0.3946590718766237 -0.1285221507767042 0.5868720928034962 0.0058951728413994126 0.5868720928034962 0.0058951728413994126 0.4012556137543105 -0.12819534716996492
|
||||
31200000800.0 0.39144137125473305 -0.12813976575484096 0.589187950565946 0.0027528703167122442 0.589187950565946 0.0027528703167122442 0.39796272426889945 -0.1277747432890963
|
||||
32000000800.0 0.3882236706328424 -0.1277573807329777 0.5915038083283959 -0.0003894322079749657 0.5915038083283959 -0.0003894322079749657 0.3946698347834884 -0.12735413940822765
|
||||
32800000800.0 0.38500597001095177 -0.12737499571111444 0.5938196660908457 -0.003531734732662134 0.5938196660908457 -0.003531734732662134 0.3913769452980773 -0.126933535527359
|
||||
33333334200.0 0.38286083599488296 -0.1271200723313402 0.5953635714588004 -0.005626603344312142 0.5953635714588004 -0.005626603344312142 0.38918168536672915 -0.12665313290506292
|
||||
33600000800.0 0.3817882693890611 -0.12699261068925122 0.5961355238532955 -0.00667403725734933 0.5961355238532955 -0.00667403725734933 0.38808405581266625 -0.12651293164649038
|
||||
34400000800.0 0.37857056876717043 -0.12661022566738794 0.5984513816157454 -0.009816339782036526 0.5984513816157454 -0.009816339782036526 0.3847911663272552 -0.12609232776562176
|
||||
35200000800.0 0.3753528681452798 -0.1262278406455247 0.6007672393781952 -0.012958642306723722 0.6007672393781952 -0.012958642306723722 0.38149827684184406 -0.12567172388475312
|
||||
36000000800.0 0.37213516752338927 -0.12584545562366145 0.6030830971406451 -0.01610094483141089 0.6030830971406451 -0.01610094483141089 0.378205387356433 -0.12525112000388447
|
||||
36800000800.0 0.3689174669014986 -0.12546307060179818 0.6053989549030949 -0.019243247356098087 0.6053989549030949 -0.019243247356098087 0.374912497871022 -0.12483051612301584
|
||||
37600000800.0 0.365699766279608 -0.12508068557993493 0.6077148126655447 -0.022385549880785283 0.6077148126655447 -0.022385549880785283 0.3716196083856109 -0.12440991224214719
|
||||
38400000800.0 0.36248206565771734 -0.12469830055807167 0.6100306704279946 -0.02552785240547245 0.6100306704279946 -0.02552785240547245 0.36832671890019986 -0.12398930836127856
|
||||
39200000800.0 0.3592643650358267 -0.12431591553620841 0.6123465281904446 -0.028670154930159675 0.6123465281904446 -0.028670154930159675 0.3650338294147888 -0.12356870448040991
|
||||
40000000800.0 0.35604666441393606 -0.12393353051434516 0.6146623859528944 -0.03181245745484684 0.6146623859528944 -0.03181245745484684 0.3617409399293777 -0.12314810059954127
|
||||
40800000800.0 0.3528289637920454 -0.1235511454924819 0.6169782437153443 -0.03495475997953404 0.6169782437153443 -0.03495475997953404 0.35844805044396666 -0.12272749671867263
|
||||
41600000800.0 0.3496112631701548 -0.12316876047061864 0.6192941014777941 -0.03809706250422121 0.6192941014777941 -0.03809706250422121 0.3551551609585556 -0.122306892837804
|
||||
42400000800.0 0.3463935625482641 -0.12278637544875538 0.621609959240244 -0.041239365028908403 0.621609959240244 -0.041239365028908403 0.3518622714731445 -0.12188628895693535
|
||||
43200000800.0 0.34317586192637345 -0.12240399042689212 0.6239258170026938 -0.0443816675535956 0.6239258170026938 -0.0443816675535956 0.3485693819877334 -0.12146568507606671
|
||||
44000000800.0 0.3399581613044828 -0.12202160540502888 0.6262416747651436 -0.047523970078282796 0.6262416747651436 -0.047523970078282796 0.3452764925023223 -0.12104508119519806
|
||||
44800000800.0 0.3367404606825921 -0.12163922038316562 0.6285575325275935 -0.05066627260297002 0.6285575325275935 -0.05066627260297002 0.3419836030169112 -0.12062447731432943
|
||||
45600000800.0 0.3335227600607015 -0.12125683536130236 0.6308733902900433 -0.05380857512765719 0.6308733902900433 -0.05380857512765719 0.33869071353150015 -0.12020387343346078
|
||||
46400000800.0 0.33030505943881083 -0.12087445033943911 0.6331892480524932 -0.056950877652344384 0.6331892480524932 -0.056950877652344384 0.3353978240460891 -0.11978326955259215
|
||||
47200000800.0 0.3270873588169202 -0.12049206531757584 0.635505105814943 -0.06009318017703158 0.635505105814943 -0.06009318017703158 0.33210493456067797 -0.1193626656717235
|
||||
48000000800.0 0.32386965819502955 -0.12010968029571262 0.6378209635773928 -0.06323548270171878 0.6378209635773928 -0.06323548270171878 0.3288120450752669 -0.11894206179085487
|
||||
48800000800.0 0.3206519575731389 -0.11972729527384936 0.6401368213398427 -0.06637778522640594 0.6401368213398427 -0.06637778522640594 0.32551915558985584 -0.11852145790998625
|
||||
49600000800.0 0.3174342569512483 -0.1193449102519861 0.6424526791022925 -0.06952008775109311 0.6424526791022925 -0.06952008775109311 0.32222626610444477 -0.11810085402911762
|
||||
50400000700.0 0.31421655673157023 -0.11896252527792098 0.6447685365752602 -0.0726623898829925 0.6447685365752602 -0.0726623898829925 0.31893337703064484 -0.11768025020082445
|
||||
51200000700.0 0.3109988561096796 -0.11858014025605772 0.64708439433771 -0.0758046924076797 0.64708439433771 -0.0758046924076797 0.31564048754523377 -0.11725964631995581
|
||||
52000000700.0 0.30778115548778895 -0.11819775523419446 0.6494002521001598 -0.07894699493236687 0.6494002521001598 -0.07894699493236687 0.3123475980598227 -0.11683904243908717
|
||||
52800000700.0 0.3045634548658982 -0.11781537021233121 0.6517161098626097 -0.0820892974570541 0.6517161098626097 -0.0820892974570541 0.30905470857441164 -0.11641843855821853
|
||||
53600000700.0 0.3013457542440076 -0.11743298519046795 0.6540319676250597 -0.08523159998174126 0.6540319676250597 -0.08523159998174126 0.3057618190890005 -0.11599783467734989
|
||||
54400000700.0 0.298128053622117 -0.11705060016860469 0.6563478253875095 -0.08837390250642846 0.6563478253875095 -0.08837390250642846 0.30246892960358945 -0.11557723079648125
|
||||
55200000700.0 0.29491035300022633 -0.11666821514674144 0.6586636831499593 -0.09151620503111563 0.6586636831499593 -0.09151620503111563 0.2991760401181784 -0.11515662691561261
|
||||
56000000700.0 0.29169265237833564 -0.11628583012487817 0.6609795409124092 -0.09465850755580285 0.6609795409124092 -0.09465850755580285 0.29588315063276727 -0.11473602303474396
|
||||
56800000700.0 0.288474951756445 -0.11590344510301492 0.663295398674859 -0.09780081008049002 0.663295398674859 -0.09780081008049002 0.2925902611473562 -0.11431541915387533
|
||||
57600000700.0 0.28525725113455436 -0.11552106008115166 0.6656112564373089 -0.10094311260517722 0.6656112564373089 -0.10094311260517722 0.28929737166194514 -0.11389481527300668
|
||||
58400000700.0 0.2820395505126637 -0.1151386750592884 0.6679271141997587 -0.10408541512986441 0.6679271141997587 -0.10408541512986441 0.28600448217653407 -0.11347421139213805
|
||||
59200000700.0 0.2788218498907731 -0.11475629003742516 0.6702429719622085 -0.10722771765455161 0.6702429719622085 -0.10722771765455161 0.282711592691123 -0.1130536075112694
|
||||
60000000700.0 0.27560414926888244 -0.1143739050155619 0.6725588297246584 -0.11037002017923878 0.6725588297246584 -0.11037002017923878 0.27941870320571194 -0.11263300363040077
|
||||
60800000700.0 0.2723864486469918 -0.11399151999369864 0.6748746874871082 -0.11351232270392594 0.6748746874871082 -0.11351232270392594 0.2761258137203008 -0.11221239974953212
|
||||
61600000700.0 0.2691687480251011 -0.11360913497183538 0.6771905452495581 -0.11665462522861317 0.6771905452495581 -0.11665462522861317 0.2728329242348897 -0.11179179586866347
|
||||
62400000700.0 0.26595104740321046 -0.11322674994997212 0.6795064030120079 -0.11979692775330034 0.6795064030120079 -0.11979692775330034 0.26954003474947863 -0.11137119198779484
|
||||
63200000700.0 0.2627333467813198 -0.11284436492810887 0.6818222607744578 -0.12293923027798753 0.6818222607744578 -0.12293923027798753 0.26624714526406756 -0.1109505881069262
|
||||
64000000700.0 0.2595156461594292 -0.11246197990624561 0.6841381185369076 -0.1260815328026747 0.6841381185369076 -0.1260815328026747 0.2629542557786565 -0.11052998422605756
|
||||
64800000700.0 0.25629794553753854 -0.11207959488438235 0.6864539762993576 -0.12922383532736192 0.6864539762993576 -0.12922383532736192 0.2596613662932454 -0.11010938034518891
|
||||
65600000700.0 0.2530802449156479 -0.1116972098625191 0.6887698340618074 -0.1323661378520491 0.6887698340618074 -0.1323661378520491 0.2563684768078343 -0.10968877646432028
|
||||
66400000700.0 0.24986254429375726 -0.11131482484065584 0.6910856918242572 -0.13550844037673626 0.6910856918242572 -0.13550844037673626 0.25307558732242325 -0.10926817258345164
|
||||
66666667300.0 0.24878997768793537 -0.11118736319856684 0.6918576442187524 -0.1365558742897735 0.6918576442187524 -0.1365558742897735 0.25197795776836035 -0.10912797132487909
|
||||
67200000700.0 0.24664484367186656 -0.11093243981879258 0.6934015495867071 -0.13865074290142348 0.6934015495867071 -0.13865074290142348 0.24978269783701218 -0.108847568702583
|
||||
68000000700.0 0.24342714304997592 -0.11055005479692932 0.6957174073491569 -0.14179304542611065 0.6957174073491569 -0.14179304542611065 0.24648980835160106 -0.10842696482171435
|
||||
68800000700.0 0.24020944242808528 -0.11016766977506606 0.6980332651116068 -0.14493534795079788 0.6980332651116068 -0.14493534795079788 0.24319691886619 -0.10800636094084572
|
||||
69600000700.0 0.23699174180619464 -0.10978528475320282 0.7003491228740566 -0.14807765047548505 0.7003491228740566 -0.14807765047548505 0.23990402938077893 -0.10758575705997708
|
||||
70400000600.0 0.23377404158651655 -0.10940289977913768 0.7026649803470242 -0.1512199526073844 0.7026649803470242 -0.1512199526073844 0.23661114030697905 -0.10716515323168392
|
||||
71200000600.0 0.2305563409646259 -0.10902051475727442 0.7049808381094741 -0.15436225513207158 0.7049808381094741 -0.15436225513207158 0.23331825082156799 -0.10674454935081529
|
||||
72000000600.0 0.22733864034273527 -0.10863812973541118 0.7072966958719239 -0.1575045576567588 0.7072966958719239 -0.1575045576567588 0.23002536133615692 -0.10632394546994664
|
||||
72800000600.0 0.22412093972084463 -0.1082557447135479 0.7096125536343738 -0.16064686018144603 0.7096125536343738 -0.16064686018144603 0.2267324718507458 -0.10590334158907799
|
||||
73600000600.0 0.22090323909895399 -0.10787335969168466 0.7119284113968236 -0.1637891627061332 0.7119284113968236 -0.1637891627061332 0.22343958236533473 -0.10548273770820936
|
||||
74400000600.0 0.21768553847706335 -0.10749097466982141 0.7142442691592734 -0.16693146523082036 0.7142442691592734 -0.16693146523082036 0.22014669287992367 -0.10506213382734073
|
||||
75200000600.0 0.2144678378551727 -0.10710858964795814 0.7165601269217233 -0.17007376775550753 0.7165601269217233 -0.17007376775550753 0.2168538033945126 -0.10464152994647208
|
||||
76000000600.0 0.211250137233282 -0.10672620462609489 0.7188759846841732 -0.17321607028019476 0.7188759846841732 -0.17321607028019476 0.21356091390910148 -0.10422092606560343
|
||||
76800000600.0 0.20803243661139137 -0.10634381960423163 0.721191842446623 -0.17635837280488192 0.721191842446623 -0.17635837280488192 0.21026802442369041 -0.1038003221847348
|
||||
77600000600.0 0.20481473598950073 -0.10596143458236837 0.7235077002090728 -0.1795006753295691 0.7235077002090728 -0.1795006753295691 0.20697513493827935 -0.10337971830386616
|
||||
78400000600.0 0.2015970353676101 -0.10557904956050512 0.7258235579715228 -0.18264297785425632 0.7258235579715228 -0.18264297785425632 0.20368224545286823 -0.10295911442299752
|
||||
79200000600.0 0.19837933474571945 -0.10519666453864185 0.7281394157339726 -0.18578528037894348 0.7281394157339726 -0.18578528037894348 0.20038935596745716 -0.10253851054212887
|
||||
80000000600.0 0.1951616341238288 -0.1048142795167786 0.7304552734964225 -0.1889275829036307 0.7304552734964225 -0.1889275829036307 0.1970964664820461 -0.10211790666126024
|
||||
80800000600.0 0.19194393350193817 -0.10443189449491538 0.7327711312588723 -0.19206988542831788 0.7327711312588723 -0.19206988542831788 0.19380357699663503 -0.1016973027803916
|
||||
81600000600.0 0.18872623288004747 -0.10404950947305211 0.7350869890213221 -0.1952121879530051 0.7350869890213221 -0.1952121879530051 0.1905106875112239 -0.10127669889952295
|
||||
82400000600.0 0.18550853225815683 -0.10366712445118886 0.737402846783772 -0.19835449047769227 0.737402846783772 -0.19835449047769227 0.18721779802581284 -0.10085609501865433
|
||||
83200000600.0 0.1822908316362662 -0.1032847394293256 0.7397187045462218 -0.20149679300237944 0.7397187045462218 -0.20149679300237944 0.18392490854040178 -0.1004354911377857
|
||||
84000000600.0 0.17907313101437555 -0.10290235440746234 0.7420345623086717 -0.2046390955270666 0.7420345623086717 -0.2046390955270666 0.1806320190549907 -0.10001488725691707
|
||||
84800000600.0 0.1758554303924849 -0.1025199693855991 0.7443504200711215 -0.20778139805175383 0.7443504200711215 -0.20778139805175383 0.1773391295695796 -0.09959428337604842
|
||||
85600000600.0 0.17263772977059427 -0.10213758436373582 0.7466662778335714 -0.210923700576441 0.7466662778335714 -0.210923700576441 0.17404624008416852 -0.09917367949517977
|
||||
86400000600.0 0.16942002914870363 -0.10175519934187258 0.7489821355960212 -0.21406600310112817 0.7489821355960212 -0.21406600310112817 0.17075335059875746 -0.09875307561431114
|
||||
87200000600.0 0.16620232852681294 -0.10137281432000932 0.7512979933584711 -0.2172083056258154 0.7512979933584711 -0.2172083056258154 0.16746046111334634 -0.09833247173344249
|
||||
88000000600.0 0.16298462790492235 -0.10099042929814606 0.7536138511209209 -0.22035060815050256 0.7536138511209209 -0.22035060815050256 0.16416757162793533 -0.09791186785257386
|
||||
88800000600.0 0.15976692728303166 -0.10060804427628281 0.7559297088833707 -0.22349291067518978 0.7559297088833707 -0.22349291067518978 0.16087468214252415 -0.09749126397170521
|
||||
89600000600.0 0.15654922666114102 -0.10022565925441954 0.7582455666458207 -0.226635213199877 0.7582455666458207 -0.226635213199877 0.15758179265711308 -0.09707066009083656
|
||||
90400000500.0 0.15333152644146297 -0.09984327428035442 0.7605614241187882 -0.22977751533177632 0.7605614241187882 -0.22977751533177632 0.15428890358331326 -0.09665005626254342
|
||||
91200000500.0 0.15011382581957228 -0.09946088925849116 0.7628772818812382 -0.23291981785646354 0.7628772818812382 -0.23291981785646354 0.1509960140979021 -0.09622945238167477
|
||||
92000000500.0 0.14689612519768164 -0.0990785042366279 0.765193139643688 -0.2360621203811507 0.765193139643688 -0.2360621203811507 0.14770312461249102 -0.09580884850080613
|
||||
92800000500.0 0.143678424575791 -0.09869611921476465 0.7675089974061378 -0.23920442290583793 0.7675089974061378 -0.23920442290583793 0.14441023512707996 -0.0953882446199375
|
||||
93600000500.0 0.14046072395390036 -0.09831373419290139 0.7698248551685877 -0.2423467254305251 0.7698248551685877 -0.2423467254305251 0.1411173456416689 -0.09496764073906885
|
||||
94400000500.0 0.13724302333200972 -0.09793134917103813 0.7721407129310376 -0.24548902795521227 0.7721407129310376 -0.24548902795521227 0.13782445615625782 -0.0945470368582002
|
||||
95200000500.0 0.13402532271011908 -0.09754896414917488 0.7744565706934874 -0.24863133047989944 0.7744565706934874 -0.24863133047989944 0.13453156667084676 -0.09412643297733159
|
||||
96000000500.0 0.13080762208822844 -0.09716657912731162 0.7767724284559372 -0.2517736330045866 0.7767724284559372 -0.2517736330045866 0.1312386771854357 -0.09370582909646294
|
||||
96800000500.0 0.12758992146633774 -0.09678419410544836 0.7790882862183871 -0.2549159355292739 0.7790882862183871 -0.2549159355292739 0.12794578770002457 -0.09328522521559429
|
||||
97600000500.0 0.1243722208444471 -0.0964018090835851 0.781404143980837 -0.25805823805396105 0.781404143980837 -0.25805823805396105 0.12465289821461345 -0.09286462133472564
|
||||
98400000500.0 0.12115452022255646 -0.09601942406172184 0.7837200017432868 -0.2612005405786482 0.7837200017432868 -0.2612005405786482 0.12136000872920238 -0.09244401745385701
|
||||
99200000500.0 0.11793681960066582 -0.0956370390398586 0.7860358595057366 -0.2643428431033354 0.7860358595057366 -0.2643428431033354 0.11806711924379132 -0.09202341357298838
|
||||
100000000000.0 0.11471912098983805 -0.09525465425698598 0.7883517158207753 -0.2674851436640835 0.7883517158207753 -0.2674851436640835 0.1147742318164362 -0.09160280995499716
|
||||
100800000000.0 0.11150142036794741 -0.09487226923512272 0.7906675735832251 -0.2706274461887707 0.7906675735832251 -0.2706274461887707 0.11148134233102514 -0.09118220607412852
|
||||
101600000000.0 0.10828371974605677 -0.09448988421325946 0.7929834313456751 -0.2737697487134579 0.7929834313456751 -0.2737697487134579 0.10818845284561407 -0.09076160219325988
|
||||
102400000000.0 0.10506601912416613 -0.09410749919139622 0.7952992891081249 -0.27691205123814505 0.7952992891081249 -0.27691205123814505 0.104895563360203 -0.09034099831239123
|
||||
103200000000.0 0.10184831850227544 -0.09372511416953294 0.7976151468705748 -0.28005435376283233 0.7976151468705748 -0.28005435376283233 0.10160267387479183 -0.08992039443152258
|
||||
104000000000.0 0.0986306178803848 -0.0933427291476697 0.7999310046330246 -0.2831966562875195 0.7999310046330246 -0.2831966562875195 0.09830978438938076 -0.08949979055065395
|
||||
104800000000.0 0.09541291725849416 -0.09296034412580644 0.8022468623954745 -0.28633895881220667 0.8022468623954745 -0.28633895881220667 0.0950168949039697 -0.08907918666978532
|
||||
105600000000.0 0.09219521663660352 -0.09257795910394317 0.8045627201579243 -0.28948126133689384 0.8045627201579243 -0.28948126133689384 0.09172400541855863 -0.08865858278891667
|
||||
106400000000.0 0.08897751601471288 -0.09219557408207993 0.8068785779203742 -0.292623563861581 0.8068785779203742 -0.292623563861581 0.08843111593314756 -0.08823797890804803
|
||||
107200000000.0 0.08575981539282224 -0.09181318906021667 0.809194435682824 -0.2957658663862682 0.809194435682824 -0.2957658663862682 0.0851382264477365 -0.0878173750271794
|
||||
108000000000.0 0.0825421147709316 -0.09143080403835341 0.8115102934452738 -0.2989081689109554 0.8115102934452738 -0.2989081689109554 0.08184533696232543 -0.08739677114631075
|
||||
108800000000.0 0.0793244141490409 -0.09104841901649015 0.8138261512077237 -0.3020504714356426 0.8138261512077237 -0.3020504714356426 0.07855244747691426 -0.0869761672654421
|
||||
109600000000.0 0.07610671352715026 -0.09066603399462689 0.8161420089701736 -0.3051927739603298 0.8161420089701736 -0.3051927739603298 0.07525955799150319 -0.08655556338457346
|
||||
110400000000.0 0.07288901290525962 -0.09028364897276364 0.8184578667326234 -0.308335076485017 0.8184578667326234 -0.308335076485017 0.07196666850609212 -0.08613495950370482
|
||||
111200000000.0 0.06967131228336898 -0.08990126395090038 0.8207737244950732 -0.3114773790097042 0.8207737244950732 -0.3114773790097042 0.06867377902068106 -0.08571435562283619
|
||||
112000000000.0 0.06645361166147834 -0.08951887892903712 0.8230895822575232 -0.31461968153439135 0.8230895822575232 -0.31461968153439135 0.06538088953526999 -0.08529375174196754
|
||||
112800000000.0 0.0632359110395877 -0.08913649390717387 0.8254054400199731 -0.3177619840590785 0.8254054400199731 -0.3177619840590785 0.06208800004985893 -0.08487314786109891
|
||||
113600000000.0 0.06001821041769706 -0.08875410888531061 0.8277212977824229 -0.3209042865837657 0.8277212977824229 -0.3209042865837657 0.05879511056444786 -0.08445254398023028
|
||||
114400000000.0 0.05680050979580642 -0.08837172386344735 0.8300371555448727 -0.3240465891084529 0.8300371555448727 -0.3240465891084529 0.055502221079036795 -0.08403194009936163
|
||||
115200000000.0 0.053582809173915724 -0.0879893388415841 0.8323530133073226 -0.32718889163314013 0.8323530133073226 -0.32718889163314013 0.05220933159362562 -0.08361133621849298
|
||||
116000000000.0 0.050365108552025084 -0.08760695381972083 0.8346688710697725 -0.3303311941578273 0.8346688710697725 -0.3303311941578273 0.04891644210821455 -0.08319073233762433
|
||||
116800000000.0 0.047147407930134444 -0.08722456879785759 0.8369847288322223 -0.33347349668251447 0.8369847288322223 -0.33347349668251447 0.04562355262280349 -0.0827701284567557
|
||||
117600000000.0 0.043929707308243804 -0.08684218377599433 0.8393005865946721 -0.3366157992072017 0.8393005865946721 -0.3366157992072017 0.04233066313739242 -0.08234952457588707
|
||||
118400000000.0 0.040712006686353164 -0.08645979875413107 0.8416164443571219 -0.33975810173188886 0.8416164443571219 -0.33975810173188886 0.039037773651981356 -0.08192892069501842
|
||||
119200000000.0 0.037494306064462524 -0.08607741373226782 0.8439323021195718 -0.34290040425657603 0.8439323021195718 -0.34290040425657603 0.03574488416657029 -0.08150831681414979
|
||||
120000000000.0 0.034276605442571884 -0.08569502871040456 0.8462481598820216 -0.3460427067812632 0.8462481598820216 -0.3460427067812632 0.032451994681159224 -0.08108771293328114
|
||||
120800000000.0 0.031058904820681188 -0.0853126436885413 0.8485640176444715 -0.3491850093059505 0.8485640176444715 -0.3491850093059505 0.029159105195748103 -0.08066710905241249
|
||||
121600000000.0 0.027841204198790548 -0.08493025866667804 0.8508798754069213 -0.35232731183063765 0.8508798754069213 -0.35232731183063765 0.02586621571033698 -0.08024650517154386
|
||||
122400000000.0 0.024623503576899908 -0.08454787364481478 0.8531957331693713 -0.3554696143553248 0.8531957331693713 -0.3554696143553248 0.022573326224925916 -0.07982590129067521
|
||||
123200000000.0 0.021405802955009268 -0.08416548862295153 0.855511590931821 -0.358611916880012 0.855511590931821 -0.358611916880012 0.01928043673951485 -0.07940529740980658
|
||||
124000000000.0 0.018188102333118628 -0.08378310360108827 0.857827448694271 -0.36175421940469915 0.857827448694271 -0.36175421940469915 0.015987547254103784 -0.07898469352893794
|
||||
124800000000.0 0.014970401711227987 -0.08340071857922501 0.8601433064567208 -0.3648965219293864 0.8601433064567208 -0.3648965219293864 0.012694657768692719 -0.0785640896480693
|
||||
125600000000.0 0.011752701089337347 -0.08301833355736177 0.8624591642191706 -0.36803882445407354 0.8624591642191706 -0.36803882445407354 0.009401768283281653 -0.07814348576720066
|
||||
126400000000.0 0.008535000467446596 -0.0826359485354985 0.8647750219816205 -0.37118112697876077 0.8647750219816205 -0.37118112697876077 0.006108878797870476 -0.07772288188633202
|
||||
127200000000.0 0.005317299845555956 -0.08225356351363525 0.8670908797440704 -0.374323429503448 0.8670908797440704 -0.374323429503448 0.0028159893124594104 -0.07730227800546337
|
||||
128000000000.0 0.002099599223665316 -0.08187117849177199 0.8694067375065202 -0.37746573202813516 0.8694067375065202 -0.37746573202813516 -0.0004769001729516553 -0.07688167412459473
|
||||
128800000000.0 -0.001118101398225324 -0.08148879346990873 0.87172259526897 -0.3806080345528223 0.87172259526897 -0.3806080345528223 -0.003769789658362721 -0.07646107024372609
|
||||
129600000000.0 -0.004335802020115853 -0.08110640844804548 0.8740384530314198 -0.3837503370775095 0.8740384530314198 -0.3837503370775095 -0.007062679143773787 -0.07604046636285745
|
||||
130400000000.0 -0.007553502642006493 -0.08072402342618222 0.8763543107938697 -0.38689263960219666 0.8763543107938697 -0.38689263960219666 -0.010355568629184853 -0.07561986248198882
|
||||
131200000000.0 -0.010771203263897133 -0.08034163840431896 0.8786701685563195 -0.39003494212688383 0.8786701685563195 -0.39003494212688383 -0.013648458114595918 -0.07519925860112017
|
||||
132000000000.0 -0.013988903885787773 -0.07995925338245571 0.8809860263187694 -0.393177244651571 0.8809860263187694 -0.393177244651571 -0.016941347600006984 -0.07477865472025154
|
||||
132800000000.0 -0.017206604507678525 -0.07957686836059244 0.8833018840812192 -0.3963195471762583 0.8833018840812192 -0.3963195471762583 -0.02023423708541816 -0.07435805083938289
|
||||
133333334000.0 -0.019351740937022743 -0.07932194469402942 0.8848457911860673 -0.3984144181446352 0.8848457911860673 -0.3984144181446352 -0.022429499486433357 -0.07407764790163389
|
||||
133600000000.0 -0.020424305129569165 -0.0791944833387292 0.8856177418436691 -0.39946184970094545 0.8856177418436691 -0.39946184970094545 -0.023527126570829227 -0.07393744695851424
|
||||
134400000000.0 -0.023642005751459805 -0.07881209831686593 0.887933599606119 -0.4026041522256326 0.887933599606119 -0.4026041522256326 -0.026820016056240292 -0.07351684307764561
|
||||
135200000000.0 -0.026859706373350445 -0.07842971329500267 0.8902494573685689 -0.4057464547503198 0.8902494573685689 -0.4057464547503198 -0.030112905541651358 -0.07309623919677696
|
||||
136000000000.0 -0.030077406995241085 -0.07804732827313943 0.8925653151310187 -0.40888875727500695 0.8925653151310187 -0.40888875727500695 -0.033405795027062424 -0.07267563531590833
|
||||
136800000000.0 -0.033295107617131725 -0.07766494325127617 0.8948811728934685 -0.41203105979969423 0.8948811728934685 -0.41203105979969423 -0.03669868451247349 -0.0722550314350397
|
||||
137600000000.0 -0.036512808239022365 -0.0772825582294129 0.8971970306559183 -0.4151733623243814 0.8971970306559183 -0.4151733623243814 -0.039991573997884555 -0.07183442755417105
|
||||
138400000000.0 -0.039730508860913116 -0.07690017320754965 0.8995128884183683 -0.41831566484906857 0.8995128884183683 -0.41831566484906857 -0.04328446348329573 -0.0714138236733024
|
||||
139200000000.0 -0.042948209482803756 -0.07651778818568639 0.9018287461808181 -0.42145796737375585 0.9018287461808181 -0.42145796737375585 -0.0465773529687068 -0.07099321979243377
|
||||
140000000000.0 -0.046165910104694396 -0.07613540316382314 0.9041446039432679 -0.424600269898443 0.9041446039432679 -0.424600269898443 -0.049870242454117863 -0.07057261591156512
|
||||
140800000000.0 -0.04938361072658504 -0.07575301814195988 0.9064604617057177 -0.4277425724231302 0.9064604617057177 -0.4277425724231302 -0.05316313193952893 -0.07015201203069649
|
||||
141600000000.0 -0.05260131134847568 -0.07537063312009662 0.9087763194681676 -0.43088487494781735 0.9087763194681676 -0.43088487494781735 -0.056456021424939995 -0.06973140814982784
|
||||
142400000000.0 -0.05581901197036632 -0.07498824809823337 0.9110921772306175 -0.4340271774725045 0.9110921772306175 -0.4340271774725045 -0.05974891091035106 -0.0693108042689592
|
||||
143200000000.0 -0.059036712592256846 -0.07460586307637011 0.9134080349930673 -0.4371694799971917 0.9134080349930673 -0.4371694799971917 -0.06304180039576213 -0.06889020038809056
|
||||
144000000000.0 -0.0622544132141476 -0.07422347805450685 0.9157238927555171 -0.44031178252187897 0.9157238927555171 -0.44031178252187897 -0.06633468988117319 -0.06846959650722191
|
||||
144800000000.0 -0.06547211383603824 -0.07384109303264359 0.918039750517967 -0.44345408504656614 0.918039750517967 -0.44345408504656614 -0.06962757936658437 -0.06804899262635328
|
||||
145600000000.0 -0.06868981445792888 -0.07345870801078033 0.9203556082804168 -0.4465963875712533 0.9203556082804168 -0.4465963875712533 -0.07292046885199543 -0.06762838874548464
|
||||
146400000000.0 -0.07190751507981952 -0.07307632298891709 0.9226714660428668 -0.4497386900959405 0.9226714660428668 -0.4497386900959405 -0.0762133583374065 -0.067207784864616
|
||||
147200000000.0 -0.07512521570171016 -0.07269393796705383 0.9249873238053166 -0.45288099262062764 0.9249873238053166 -0.45288099262062764 -0.07950624782281757 -0.06678718098374736
|
||||
148000000000.0 -0.0783429163236008 -0.07231155294519057 0.9273031815677664 -0.4560232951453148 0.9273031815677664 -0.4560232951453148 -0.08279913730822863 -0.06636657710287872
|
||||
148800000000.0 -0.08156061694549144 -0.07192916792332732 0.9296190393302162 -0.459165597670002 0.9296190393302162 -0.459165597670002 -0.0860920267936397 -0.06594597322201008
|
||||
149600000000.0 -0.08477831756738208 -0.07154678290146406 0.9319348970926661 -0.46230790019468915 0.9319348970926661 -0.46230790019468915 -0.08938491627905076 -0.06552536934114143
|
||||
150400000000.0 -0.08799601818927283 -0.0711643978796008 0.934250754855116 -0.4654502027193764 0.934250754855116 -0.4654502027193764 -0.09267780576446183 -0.06510476546027279
|
||||
151200000000.0 -0.09121371881116347 -0.07078201285773754 0.9365666126175658 -0.4685925052440636 0.9365666126175658 -0.4685925052440636 -0.0959706952498729 -0.06468416157940415
|
||||
152000000000.0 -0.09443141943305411 -0.07039962783587428 0.9388824703800156 -0.47173480776875076 0.9388824703800156 -0.47173480776875076 -0.09926358473528407 -0.0642635576985355
|
||||
152800000000.0 -0.09764912005494475 -0.07001724281401103 0.9411983281424655 -0.47487711029343793 0.9411983281424655 -0.47487711029343793 -0.10255647422069514 -0.06384295381766687
|
||||
153600000000.0 -0.10086682067683539 -0.06963485779214777 0.9435141859049154 -0.4780194128181252 0.9435141859049154 -0.4780194128181252 -0.1058493637061062 -0.06342234993679824
|
||||
154400000000.0 -0.10408452129872603 -0.06925247277028451 0.9458300436673652 -0.4811617153428124 0.9458300436673652 -0.4811617153428124 -0.10914225319151727 -0.06300174605592959
|
||||
155200000000.0 -0.10730222192061667 -0.06887008774842127 0.948145901429815 -0.48430401786749955 0.948145901429815 -0.48430401786749955 -0.11243514267692833 -0.06258114217506096
|
||||
156000000000.0 -0.11051992254250731 -0.06848770272655799 0.9504617591922649 -0.4874463203921868 0.9504617591922649 -0.4874463203921868 -0.1157280321623394 -0.06216053829419231
|
||||
156800000000.0 -0.11373762316439795 -0.06810531770469475 0.9527776169547149 -0.490588622916874 0.9527776169547149 -0.490588622916874 -0.11902092164775047 -0.06173993441332366
|
||||
157600000000.0 -0.11695532378628859 -0.06772293268283149 0.9550934747171647 -0.49373092544156116 0.9550934747171647 -0.49373092544156116 -0.12231381113316153 -0.06131933053245503
|
||||
158400000000.0 -0.12017302440817923 -0.06734054766096823 0.9574093324796145 -0.49687322796624833 0.9574093324796145 -0.49687322796624833 -0.1256067006185726 -0.06089872665158638
|
||||
159200000000.0 -0.12339072503006987 -0.06695816263910498 0.9597251902420643 -0.5000155304909355 0.9597251902420643 -0.5000155304909355 -0.12889959010398377 -0.06047812277071775
|
||||
160000000000.0 -0.1266084256519605 -0.06657577761724172 0.9620410480045141 -0.5031578330156227 0.9620410480045141 -0.5031578330156227 -0.13219247958939484 -0.060057518889849115
|
||||
160800000000.0 -0.12982612627385115 -0.06619339259537846 0.964356905766964 -0.5063001355403098 0.964356905766964 -0.5063001355403098 -0.1354853690748059 -0.05963691500898047
|
||||
161600000000.0 -0.1330438268957419 -0.0658110075735152 0.9666727635294139 -0.5094424380649971 0.9666727635294139 -0.5094424380649971 -0.13877825856021697 -0.05921631112811182
|
||||
162400000000.0 -0.13626152751763254 -0.06542862255165194 0.9689886212918637 -0.5125847405896843 0.9689886212918637 -0.5125847405896843 -0.14207114804562804 -0.05879570724724319
|
||||
163200000000.0 -0.13947922813952318 -0.06504623752978869 0.9713044790543135 -0.5157270431143715 0.9713044790543135 -0.5157270431143715 -0.1453640375310391 -0.05837510336637454
|
||||
164000000000.0 -0.14269692876141382 -0.06466385250792543 0.9736203368167634 -0.5188693456390586 0.9736203368167634 -0.5188693456390586 -0.14865692701645017 -0.057954499485505906
|
||||
164800000000.0 -0.14591462938330446 -0.06428146748606217 0.9759361945792133 -0.5220116481637458 0.9759361945792133 -0.5220116481637458 -0.15194981650186123 -0.05753389560463726
|
||||
165600000000.0 -0.1491323300051951 -0.06389908246419893 0.9782520523416631 -0.525153950688433 0.9782520523416631 -0.525153950688433 -0.1552427059872723 -0.057113291723768625
|
||||
166400000000.0 -0.15235003062708574 -0.06351669744233567 0.9805679101041129 -0.5282962532131201 0.9805679101041129 -0.5282962532131201 -0.15853559547268348 -0.05669268784289999
|
||||
167200000000.0 -0.15556773124897638 -0.0631343124204724 0.9828837678665627 -0.5314385557378074 0.9828837678665627 -0.5314385557378074 -0.16182848495809454 -0.056272083962031344
|
||||
168000000000.0 -0.15878543187086702 -0.06275192739860914 0.9851996256290128 -0.5345808582624946 0.9851996256290128 -0.5345808582624946 -0.1651213744435056 -0.0558514800811627
|
||||
168800000000.0 -0.16200313249275766 -0.062369542376745885 0.9875154833914626 -0.5377231607871817 0.9875154833914626 -0.5377231607871817 -0.16841426392891667 -0.05543087620029406
|
||||
169600000000.0 -0.1652208331146483 -0.06198715735488264 0.9898313411539124 -0.5408654633118689 0.9898313411539124 -0.5408654633118689 -0.17170715341432774 -0.055010272319425416
|
||||
170400000000.0 -0.16843853373653894 -0.06160477233301938 0.9921471989163622 -0.5440077658365562 0.9921471989163622 -0.5440077658365562 -0.1750000428997388 -0.05458966843855678
|
||||
171200000000.0 -0.17165623435842958 -0.06122238731115612 0.9944630566788121 -0.5471500683612434 0.9944630566788121 -0.5471500683612434 -0.17829293238514987 -0.054169064557688135
|
||||
172000000000.0 -0.17487393498032022 -0.06084000228929287 0.9967789144412619 -0.5502923708859305 0.9967789144412619 -0.5502923708859305 -0.18158582187056094 -0.0537484606768195
|
||||
172800000000.0 -0.17809163560221086 -0.06045761726742961 0.9990947722037118 -0.5534346734106177 0.9990947722037118 -0.5534346734106177 -0.184878711355972 -0.05332785679595087
|
||||
173600000000.0 -0.1813093362241016 -0.06007523224556635 1.0014106299661616 -0.556576975935305 1.0014106299661616 -0.556576975935305 -0.18817160084138318 -0.052907252915082206
|
||||
174400000000.0 -0.18452703684599225 -0.05969284722370309 1.0037264877286116 -0.5597192784599921 1.0037264877286116 -0.5597192784599921 -0.19146449032679425 -0.05248664903421357
|
||||
175200000000.0 -0.1877447374678829 -0.05931046220183983 1.0060423454910614 -0.5628615809846793 1.0060423454910614 -0.5628615809846793 -0.1947573798122053 -0.05206604515334494
|
||||
176000000000.0 -0.19096243808977353 -0.058928077179976585 1.0083582032535112 -0.5660038835093665 1.0083582032535112 -0.5660038835093665 -0.19805026929761638 -0.05164544127247629
|
||||
176800000000.0 -0.19418013871166417 -0.058545692158113324 1.010674061015961 -0.5691461860340536 1.010674061015961 -0.5691461860340536 -0.20134315878302744 -0.05122483739160766
|
||||
177600000000.0 -0.19739783933355481 -0.058163307136250064 1.0129899187784108 -0.5722884885587408 1.0129899187784108 -0.5722884885587408 -0.2046360482684385 -0.05080423351073901
|
||||
178400000000.0 -0.20061553995544545 -0.05778092211438682 1.0153057765408606 -0.575430791083428 1.0153057765408606 -0.575430791083428 -0.20792893775384957 -0.05038362962987038
|
||||
179200000000.0 -0.2038332405773361 -0.05739853709252356 1.0176216343033104 -0.5785730936081152 1.0176216343033104 -0.5785730936081152 -0.21122182723926064 -0.049963025749001744
|
||||
180000000000.0 -0.20705094119922673 -0.0570161520706603 1.0199374920657602 -0.5817153961328023 1.0199374920657602 -0.5817153961328023 -0.2145147167246717 -0.049542421868133096
|
||||
180800000000.0 -0.21026864182111737 -0.05663376704879705 1.0222533498282103 -0.5848576986574895 1.0222533498282103 -0.5848576986574895 -0.21780760621008277 -0.04912181798726446
|
||||
181600000000.0 -0.21348634244300801 -0.05625138202693379 1.02456920759066 -0.5880000011821768 1.02456920759066 -0.5880000011821768 -0.22110049569549395 -0.048701214106395815
|
||||
182400000000.0 -0.21670404306489877 -0.05586899700507052 1.02688506535311 -0.591142303706864 1.02688506535311 -0.591142303706864 -0.22439338518090512 -0.048280610225527154
|
||||
183200000000.0 -0.2199217436867894 -0.05548661198320726 1.0292009231155599 -0.5942846062315512 1.0292009231155599 -0.5942846062315512 -0.2276862746663162 -0.04786000634465852
|
||||
184000000000.0 -0.22313944430868005 -0.05510422696134401 1.0315167808780097 -0.5974269087562384 1.0315167808780097 -0.5974269087562384 -0.23097916415172726 -0.04743940246378989
|
||||
184800000000.0 -0.2263571449305707 -0.05472184193948075 1.0338326386404595 -0.6005692112809256 1.0338326386404595 -0.6005692112809256 -0.23427205363713832 -0.04701879858292124
|
||||
185600000000.0 -0.22957484555246133 -0.05433945691761749 1.0361484964029093 -0.6037115138056127 1.0361484964029093 -0.6037115138056127 -0.2375649431225494 -0.046598194702052606
|
||||
186400000000.0 -0.23279254617435197 -0.053957071895754244 1.038464354165359 -0.6068538163302999 1.038464354165359 -0.6068538163302999 -0.24085783260796045 -0.04617759082118396
|
||||
187200000000.0 -0.2360102467962426 -0.053574686873890984 1.0407802119278091 -0.6099961188549872 1.0407802119278091 -0.6099961188549872 -0.24415072209337152 -0.045756986940315325
|
||||
188000000000.0 -0.23922794741813325 -0.053192301852027724 1.043096069690259 -0.6131384213796743 1.043096069690259 -0.6131384213796743 -0.24744361157878259 -0.04533638305944668
|
||||
188800000000.0 -0.2424456480400239 -0.05280991683016448 1.0454119274527087 -0.6162807239043615 1.0454119274527087 -0.6162807239043615 -0.25073650106419365 -0.044915779178578044
|
||||
189600000000.0 -0.24566334866191453 -0.05242753180830122 1.0477277852151587 -0.6194230264290487 1.0477277852151587 -0.6194230264290487 -0.2540293905496047 -0.04449517529770941
|
||||
190400000000.0 -0.24888104928380517 -0.05204514678643796 1.0500436429776085 -0.6225653289537358 1.0500436429776085 -0.6225653289537358 -0.2573222800350158 -0.04407457141684076
|
||||
191200000000.0 -0.2520987499056958 -0.05166276176457471 1.0523595007400584 -0.625707631478423 1.0523595007400584 -0.625707631478423 -0.26061516952042685 -0.04365396753597213
|
||||
192000000000.0 -0.25531645052758645 -0.05128037674271145 1.0546753585025082 -0.6288499340031102 1.0546753585025082 -0.6288499340031102 -0.2639080590058379 -0.04323336365510348
|
||||
192800000000.0 -0.2585341511494771 -0.05089799172084819 1.056991216264958 -0.6319922365277973 1.056991216264958 -0.6319922365277973 -0.267200948491249 -0.04281275977423485
|
||||
193600000000.0 -0.2617518517713677 -0.050515606698984944 1.0593070740274078 -0.6351345390524845 1.0593070740274078 -0.6351345390524845 -0.27049383797666005 -0.042392155893366215
|
||||
194400000000.0 -0.2649695523932585 -0.05013322167712167 1.0616229317898578 -0.6382768415771719 1.0616229317898578 -0.6382768415771719 -0.27378672746207133 -0.041971552012497554
|
||||
195200000000.0 -0.2681872530151491 -0.04975083665525841 1.0639387895523076 -0.6414191441018591 1.0639387895523076 -0.6414191441018591 -0.2770796169474824 -0.041550948131628906
|
||||
196000000000.0 -0.27140495363703976 -0.04936845163339515 1.0662546473147576 -0.6445614466265462 1.0662546473147576 -0.6445614466265462 -0.28037250643289346 -0.04113034425076027
|
||||
196800000000.0 -0.2746226542589304 -0.0489860666115319 1.0685705050772074 -0.6477037491512334 1.0685705050772074 -0.6477037491512334 -0.28366539591830453 -0.040709740369891625
|
||||
197600000000.0 -0.27784035488082104 -0.04860368158966864 1.0708863628396572 -0.6508460516759206 1.0708863628396572 -0.6508460516759206 -0.2869582854037156 -0.04028913648902299
|
||||
198400000000.0 -0.2810580555027117 -0.04822129656780538 1.073202220602107 -0.6539883542006077 1.073202220602107 -0.6539883542006077 -0.29025117488912666 -0.03986853260815436
|
||||
199200000000.0 -0.2842757561246023 -0.04783891154594214 1.0755180783645568 -0.6571306567252949 1.0755180783645568 -0.6571306567252949 -0.2935440643745377 -0.03944792872728571
|
||||
200000000000.0 -0.28749345674649296 -0.047456526524078876 1.0778339361270066 -0.6602729592499821 1.0778339361270066 -0.6602729592499821 -0.2968369538599488 -0.03902732484641708
|
||||
309
outputs/pvf_test_sample.s2p
Normal file
309
outputs/pvf_test_sample.s2p
Normal file
@@ -0,0 +1,309 @@
|
||||
! Created with skrf 1.8.0 (http://scikit-rf.org).
|
||||
# Hz S RI R 50.0
|
||||
!freq ReS11 ImS11 ReS21 ImS21 ReS12 ImS12 ReS22 ImS22
|
||||
0.0 0.54669299140207 -0.1662104177109195 0.46100154888068945 0.1530653599528759 0.46100154888068945 0.1530653599528759 0.5593473899566386 -0.16509997898188067
|
||||
1000.0 0.5466929861541492 -0.16621041680285528 0.46100155138238874 0.1530653541325667 0.46100155138238874 0.1530653541325667 0.559347384635358 -0.16509997772031268
|
||||
10000.0 0.5466929389228627 -0.16621040863027736 0.4610015738976825 0.15306530174978375 0.4610015738976825 0.15306530174978375 0.5593473367438332 -0.16509996636620083
|
||||
12589.0 0.546692925335996 -0.16621040627929912 0.46100158037458194 0.15306528668100317 0.46100158037458194 0.15306528668100317 0.5593473229670379 -0.16509996310000133
|
||||
15849.0 0.5466929082277745 -0.16621040331900977 0.4610015885301217 0.15306526770679513 0.4610015885301217 0.15306526770679513 0.5593473056196633 -0.1650999589872897
|
||||
19953.0 0.5466928866903079 -0.16621039959231423 0.4610015987970956 0.1530652438202461 0.4610015987970956 0.1530652438202461 0.559347283781128 -0.1650999538098147
|
||||
25119.0 0.5466928595795495 -0.1662103949012545 0.46100161172087417 0.15306521375252868 0.46100161172087417 0.15306521375252868 0.5593472562913927 -0.16509994729255453
|
||||
31623.0 0.5466928254470731 -0.16621038899520488 0.46100162799192645 0.15306517589723756 0.46100162799192645 0.15306517589723756 0.5593472216817841 -0.16509993908731635
|
||||
39811.0 0.5466927824770983 -0.16621038155997508 0.4610016484758403 0.1530651282405457 0.4610016484758403 0.1530651282405457 0.5593471781111391 -0.1650999287575977
|
||||
50119.0 0.5466927283815316 -0.16621037219964918 0.4610016742633567 0.1530650682447983 0.4610016742633567 0.1530650682447983 0.5593471232593793 -0.16509991575335498
|
||||
63096.0 0.5466926602792644 -0.16621036041569986 0.4610017067279085 0.15306499271464558 0.4610017067279085 0.15306499271464558 0.5593470542051218 -0.16509989938198727
|
||||
79433.0 0.5466925745439837 -0.1662103455806548 0.46100174759817003 0.15306489762825393 0.46100174759817003 0.15306489762825393 0.5593469672713616 -0.16509987877175114
|
||||
100000.0 0.5466924666099984 -0.16621032690449813 0.46100179905061955 0.15306477792195428 0.46100179905061955 0.15306477792195428 0.5593468578285848 -0.16509985282508244
|
||||
125893.0 0.5466923307255872 -0.16621030339199147 0.46100186382711955 0.15306462721668773 0.46100186382711955 0.15306462721668773 0.5593467200446678 -0.16509982015930266
|
||||
158489.0 0.5466921596643636 -0.16621027379273035 0.46100194537250994 0.1530644374978885 0.46100194537250994 0.1530644374978885 0.5593465465922074 -0.16509977903723272
|
||||
199526.0 0.5466919443054411 -0.16621023652849923 0.46100204803474415 0.1530641986498592 0.46100204803474415 0.1530641986498592 0.5593463282228179 -0.16509972726626743
|
||||
251189.0 0.5466916731821132 -0.16621018961517778 0.4610021772800351 0.15306389795522415 0.4610021772800351 0.15306389795522415 0.5593460533095016 -0.16509966208988075
|
||||
316228.0 0.5466913318625978 -0.1662101305555894 0.46100233998805595 0.15306351940813304 0.46100233998805595 0.15306351940813304 0.5593457072187367 -0.16509958003876077
|
||||
398107.0 0.5466909021680975 -0.16621005620419965 0.46100254482469305 0.1530630428470347 0.46100254482469305 0.1530630428470347 0.5593452715176075 -0.16509947674283593
|
||||
501187.0 0.54669036121243 -0.16620996260094054 0.46100280269985694 0.1530624428895607 0.46100280269985694 0.1530624428895607 0.5593447230000097 -0.16509934670040832
|
||||
630957.0 0.5466896801897587 -0.16620984476144754 0.46100312734537524 0.15306168758803368 0.46100312734537524 0.15306168758803368 0.5593440324574342 -0.16509918298673124
|
||||
794328.0 0.5466888228317034 -0.16620969641008893 0.4610035360504917 0.1530607367182967 0.4610035360504917 0.1530607367182967 0.5593431631145115 -0.1650989768831084
|
||||
1000000.0 0.5466877434813538 -0.166209509646706 0.46100405057999033 0.15305953964365956 0.46100405057999033 0.15305953964365956 0.5593420686761007 -0.16509871741389834
|
||||
1258925.0 0.5466863846634824 -0.16620927452617953 0.4610046983324818 0.15305803262009574 0.4610046983324818 0.15305803262009574 0.5593406908635374 -0.16509839076240854
|
||||
1584893.0 0.5466846740092625 -0.16620897852630398 0.46100551380639954 0.1530561353855411 0.46100551380639954 0.1530561353855411 0.5593389562963631 -0.16509797953161645
|
||||
1995262.0 0.5466825204252861 -0.16620860588490077 0.4610065404262399 0.1530537469110683 0.4610065404262399 0.1530537469110683 0.5593367726077901 -0.16509746182322513
|
||||
2511886.0 0.546679809223494 -0.16620813675713456 0.46100783286413954 0.15305073999963972 0.46100783286413954 0.15305073999963972 0.5593340235065535 -0.16509681006692783
|
||||
3162278.0 0.5466763960178437 -0.16620754615943462 0.4610094599493512 0.15304695451708789 0.4610094599493512 0.15304695451708789 0.559330562588262 -0.16509598955320468
|
||||
3981072.0 0.5466720990518489 -0.166206802641905 0.4610115083257286 0.1530421888828234 0.4610115083257286 0.1530421888828234 0.5593262055556852 -0.16509495658891016
|
||||
5011872.0 0.5466666894951747 -0.16620586660931375 0.46101408707736796 0.15303618930808321 0.46101408707736796 0.15303618930808321 0.5593207203797069 -0.16509365616463398
|
||||
6309573.0 0.5466598792632135 -0.16620468821347584 0.4610173335350524 0.15302863628699287 0.4610173335350524 0.15302863628699287 0.5593138149486316 -0.16509201902660173
|
||||
7943282.0 0.5466513056879083 -0.1662032047007977 0.46102142058371554 0.15301912759544334 0.46102142058371554 0.15301912759544334 0.5593051215247256 -0.1650899579916349
|
||||
10000000.0 0.546640512194909 -0.16620133706878468 0.4610265658736982 0.15300715686071253 0.4610265658736982 0.15300715686071253 0.5592941771512603 -0.16508736330205745
|
||||
12589254.0 0.5466269239952031 -0.16619898585988765 0.46103304340861984 0.15299208660179292 0.46103304340861984 0.15299208660179292 0.5592803990043426 -0.16508409678211294
|
||||
15848932.0 0.5466098174634991 -0.16619602586294838 0.46104119814279354 0.15297311426788723 0.46104119814279354 0.15297311426788723 0.5592630533432417 -0.16507998447671546
|
||||
19952623.0 0.5465882816184877 -0.1661922994480081 0.46105146434369926 0.1529492295173389 0.46105146434369926 0.1529492295173389 0.55924121645219 -0.1650748073915405
|
||||
25118864.0 0.5465611695953194 -0.16618760816943778 0.4610643887251971 0.1529191603972328 0.4610643887251971 0.1529191603972328 0.5592137254345031 -0.16506828982730595
|
||||
31622777.0 0.546527037575551 -0.16618170219879488 0.4610806595598022 0.15288130561245666 0.4610806595598022 0.15288130561245666 0.5591791162888364 -0.16506008469890535
|
||||
39810717.0 0.5464840679156028 -0.16617426702349875 0.4611011433235758 0.15283364926981186 0.4611011433235758 0.15283364926981186 0.5591355459630696 -0.16504975505596017
|
||||
50118723.0 0.5464299723173738 -0.1661649066921378 0.46112693085497947 0.152773653487488 0.46112693085497947 0.152773653487488 0.559080694171358 -0.16503675080562896
|
||||
63095734.0 0.5463618699925138 -0.1661531227328507 0.4611593954343257 0.15269812327076424 0.4611593954343257 0.15269812327076424 0.5590116398552845 -0.16502037942404513
|
||||
79432823.0 0.5462761342447099 -0.16613828760697735 0.46120026591845537 0.15260303636108943 0.46120026591845537 0.15260303636108943 0.5589247056215441 -0.16499976907563838
|
||||
100000000.0 0.5461681993304599 -0.1661196112895713 0.4612517188107773 0.15248332903124232 0.4612517188107773 0.15248332903124232 0.5588152619028559 -0.1649738221836484
|
||||
125892541.0 0.5460323173281535 -0.1660960991996931 0.46131649416249504 0.15233262643622567 0.46131649416249504 0.15233262643622567 0.5586774804283577 -0.16494115698294182
|
||||
158489319.0 0.5458612520216092 -0.16606649923211647 0.46139804149922853 0.1521429031088094 0.46139804149922853 0.1521429031088094 0.5585040238279905 -0.16490003393149014
|
||||
199526231.0 0.5456458935609996 -0.16602923508089748 0.46150070351328915 0.15190405559168585 0.46150070351328915 0.15190405559168585 0.5582856549068324 -0.16484826307721756
|
||||
251188643.0 0.545374773318821 -0.16598232229337812 0.46162994733327123 0.1516033643789841 0.46162994733327123 0.1516033643789841 0.5580107447193196 -0.1647830874323488
|
||||
316227766.0 0.5450334531578723 -0.1659232625933056 0.4617926556618101 0.1512248165719648 0.4617926556618101 0.1512248165719648 0.5576646532999023 -0.16470103615717366
|
||||
398107171.0 0.5446037565321509 -0.1658489108358039 0.46199749331205503 0.1507482531164152 0.46199749331205503 0.1507482531164152 0.5572289500156269 -0.164597739721414
|
||||
501187234.0 0.5440628005341162 -0.16575530751947015 0.4622553686335967 0.15014829527571583 0.4622553686335967 0.15014829527571583 0.556680432082547 -0.16446769721431742
|
||||
630957344.0 0.5433817772855165 -0.16563746792659956 0.46258001442705865 0.1493929931084779 0.46258001442705865 0.1493929931084779 0.5559898889218124 -0.16430398339847893
|
||||
794328235.0 0.5425244198022299 -0.16548911666695781 0.4629887192708573 0.14844212400590961 0.4629887192708573 0.14844212400590961 0.5551205465790867 -0.1640978799131498
|
||||
800000996.0 0.5424946496022605 -0.16548396543570207 0.46300291081308503 0.14840910678277924 0.46300291081308503 0.14840910678277924 0.5550903602263816 -0.16409072333950084
|
||||
1000000000.0 0.5414450706859694 -0.16530235349743766 0.4635032481815683 0.14724505073654004 0.4635032481815683 0.14724505073654004 0.5540261094188117 -0.163838410999558
|
||||
1600000990.0 0.5382963130608676 -0.16475751407036499 0.46500427023877794 0.1437528594446324 0.46500427023877794 0.1437528594446324 0.5508333358280478 -0.16308146896121212
|
||||
2400000990.0 0.5340979764879871 -0.16403106269957954 0.467005629679481 0.13909661207156374 0.467005629679481 0.13909661207156374 0.5465763113977863 -0.16207221457535398
|
||||
3200000980.0 0.5298996399675858 -0.16330461133787472 0.4690069890951671 0.13444036475669813 0.4690069890951671 0.13444036475669813 0.5423192870207375 -0.16106296020211155
|
||||
4000000980.0 0.5257013033947053 -0.16257815996708924 0.47100834853587015 0.12978411738362944 0.47100834853587015 0.12978411738362944 0.538062262590476 -0.16005370581625342
|
||||
4800000980.0 0.521502966821825 -0.16185170859630377 0.47300970797657327 0.12512787001056075 0.47300970797657327 0.12512787001056075 0.5338052381602144 -0.1590444514303953
|
||||
5600000970.0 0.5173046303014237 -0.16112525723459895 0.47501106739225935 0.12047162269569517 0.47501106739225935 0.12047162269569517 0.5295482137831657 -0.15803519705715285
|
||||
6400000970.0 0.5131062937285432 -0.1603988058638135 0.4770124268329624 0.11581537532262648 0.4770124268329624 0.11581537532262648 0.5252911893529042 -0.15702594267129472
|
||||
7200000960.0 0.508907957208142 -0.15967235450210868 0.47901378624864854 0.1111591280077609 0.47901378624864854 0.1111591280077609 0.5210341649758555 -0.1560166882980523
|
||||
8000000960.0 0.5047096206352615 -0.1589459031313232 0.4810151456893516 0.10650288063469221 0.4810151456893516 0.10650288063469221 0.516777140545594 -0.15500743391219415
|
||||
8800000960.0 0.5005112840623811 -0.15821945176053775 0.4830165051300547 0.10184663326162352 0.4830165051300547 0.10184663326162352 0.5125201161153324 -0.15399817952633604
|
||||
9600000950.0 0.4963129475419798 -0.15749300039883293 0.48501786454574075 0.09719038594675794 0.48501786454574075 0.09719038594675794 0.5082630917382837 -0.1529889251530936
|
||||
10400000900.0 0.49211461123149536 -0.15676654907345067 0.4870192238613589 0.09253413886470471 0.4870192238613589 0.09253413886470471 0.5040060675740862 -0.15197967083031386
|
||||
11200000900.0 0.4879162746586149 -0.15604009770266522 0.48902058330206194 0.08787789149163604 0.48902058330206194 0.08787789149163604 0.4997490431438247 -0.15097041644445575
|
||||
12000000900.0 0.4837179380857345 -0.15531364633187975 0.49102194274276506 0.08322164411856735 0.49102194274276506 0.08322164411856735 0.49549201871356313 -0.1499611620585976
|
||||
12800000900.0 0.479519601512854 -0.15458719496109427 0.4930233021834681 0.07856539674549864 0.4930233021834681 0.07856539674549864 0.4912349942833016 -0.1489519076727395
|
||||
13600000900.0 0.47532126493997356 -0.15386074359030882 0.4950246616241712 0.07390914937242997 0.4950246616241712 0.07390914937242997 0.4869779698530401 -0.14794265328688136
|
||||
14400000900.0 0.47112292836709313 -0.15313429221952335 0.4970260210648743 0.06925290199936128 0.4970260210648743 0.06925290199936128 0.48272094542277855 -0.14693339890102325
|
||||
15200000900.0 0.46692459179421264 -0.1524078408487379 0.4990273805055774 0.0645966546262926 0.4990273805055774 0.0645966546262926 0.478463920992517 -0.1459241445151651
|
||||
16000000900.0 0.4627262552213322 -0.15168138947795243 0.5010287399462805 0.059940407253223915 0.5010287399462805 0.059940407253223915 0.47420689656225545 -0.144914890129307
|
||||
16800000900.0 0.45852791864845177 -0.15095493810716698 0.5030300993869835 0.05528415988015524 0.5030300993869835 0.05528415988015524 0.4699498721319939 -0.14390563574344886
|
||||
17600000900.0 0.4543295820755713 -0.1502284867363815 0.5050314588276866 0.05062791250708655 0.5050314588276866 0.05062791250708655 0.4656928477017324 -0.14289638135759075
|
||||
18400000900.0 0.45013124550269085 -0.14950203536559603 0.5070328182683898 0.045971665134017875 0.5070328182683898 0.045971665134017875 0.46143582327147087 -0.1418871269717326
|
||||
19200000900.0 0.4459329089298104 -0.14877558399481058 0.5090341777090928 0.041315417760949186 0.5090341777090928 0.041315417760949186 0.4571787988412094 -0.1408778725858745
|
||||
20000000900.0 0.4417345723569299 -0.1480491326240251 0.5110355371497959 0.036659170387880496 0.5110355371497959 0.036659170387880496 0.45292177441094783 -0.13986861820001636
|
||||
20800000900.0 0.4375362357840495 -0.14732268125323966 0.5130368965904989 0.03200292301481182 0.5130368965904989 0.03200292301481182 0.4486647499806863 -0.13885936381415825
|
||||
21600000900.0 0.433337899211169 -0.1465962298824542 0.515038256031202 0.027346675641743118 0.515038256031202 0.027346675641743118 0.44440772555042474 -0.13785010942830012
|
||||
22400000900.0 0.42913956263828856 -0.1458697785116687 0.5170396154719051 0.02269042826867443 0.5170396154719051 0.02269042826867443 0.4401507011201632 -0.136840855042442
|
||||
23200000900.0 0.4249412260654081 -0.14514332714088327 0.5190409749126081 0.018034180895605767 0.5190409749126081 0.018034180895605767 0.4358936766899017 -0.13583160065658387
|
||||
24000000900.0 0.42074288949252764 -0.1444168757700978 0.5210423343533113 0.013377933522537078 0.5210423343533113 0.013377933522537078 0.43163665225964015 -0.13482234627072576
|
||||
24800000900.0 0.4165445529196472 -0.14369042439931234 0.5230436937940144 0.008721686149468444 0.5230436937940144 0.008721686149468444 0.42737962782937866 -0.13381309188486762
|
||||
25600000900.0 0.4123462163467667 -0.14296397302852687 0.5250450532347174 0.004065438776399727 0.5250450532347174 0.004065438776399727 0.4231226033991171 -0.13280383749900948
|
||||
26400000900.0 0.4081478797738862 -0.1422375216577414 0.5270464126754205 -0.0005908085966689625 0.5270464126754205 -0.0005908085966689625 0.41886557896885557 -0.13179458311315137
|
||||
27200000900.0 0.40394954320100585 -0.14151107028695595 0.5290477721161236 -0.005247055969737624 0.5290477721161236 -0.005247055969737624 0.414608554538594 -0.13078532872729326
|
||||
28000000900.0 0.39975120662812536 -0.14078461891617047 0.5310491315568266 -0.009903303342806341 0.5310491315568266 -0.009903303342806341 0.4103515301083325 -0.12977607434143512
|
||||
28800000900.0 0.3955528700552449 -0.14005816754538503 0.5330504909975298 -0.014559550715875003 0.5330504909975298 -0.014559550715875003 0.406094505678071 -0.128766819955577
|
||||
29600000900.0 0.3913545334823645 -0.13933171617459955 0.5350518504382329 -0.019215798088943692 0.5350518504382329 -0.019215798088943692 0.40183748124780944 -0.12775756556971887
|
||||
30400000800.0 0.3871561974342761 -0.1386052648946205 0.537053209628766 -0.023872044879981458 0.537053209628766 -0.023872044879981458 0.39758045734967595 -0.12674831131001754
|
||||
31200000800.0 0.3829578608613956 -0.13787881352383505 0.539054569069469 -0.02852829225305012 0.539054569069469 -0.02852829225305012 0.3933234329194144 -0.12573905692415943
|
||||
32000000800.0 0.3787595242885151 -0.13715236215304957 0.5410559285101721 -0.033184539626118836 0.5410559285101721 -0.033184539626118836 0.38906640848915286 -0.1247298025383013
|
||||
32800000800.0 0.37456118771563474 -0.13642591078226413 0.5430572879508753 -0.0378407869991875 0.5430572879508753 -0.0378407869991875 0.3848093840588914 -0.12372054815244318
|
||||
33333334200.0 0.3717622963171864 -0.13594160980786954 0.5443915277447906 -0.04094495230258724 0.5443915277447906 -0.04094495230258724 0.3819713674172983 -0.12304771181109989
|
||||
33600000800.0 0.37036285114275425 -0.13569945941147865 0.5450586473915783 -0.04249703437225619 0.5450586473915783 -0.04249703437225619 0.3805523596286299 -0.12271129376658504
|
||||
34400000800.0 0.3661645145698738 -0.1349730080406932 0.5470600068322814 -0.04715328174532485 0.5470600068322814 -0.04715328174532485 0.37629533519836833 -0.12170203938072693
|
||||
35200000800.0 0.3619661779969933 -0.13424655666990773 0.5490613662729845 -0.051809529118393566 0.5490613662729845 -0.051809529118393566 0.3720383107681068 -0.1206927849948688
|
||||
36000000800.0 0.3577678414241129 -0.13352010529912228 0.5510627257136875 -0.05646577649146223 0.5510627257136875 -0.05646577649146223 0.36778128633784524 -0.11968353060901069
|
||||
36800000800.0 0.3535695048512324 -0.1327936539283368 0.5530640851543906 -0.06112202386453092 0.5530640851543906 -0.06112202386453092 0.3635242619075837 -0.11867427622315255
|
||||
37600000800.0 0.34937116827835196 -0.13206720255755133 0.5550654445950938 -0.06577827123759963 0.5550654445950938 -0.06577827123759963 0.35926723747732214 -0.11766502183729442
|
||||
38400000800.0 0.34517283170547153 -0.13134075118676589 0.5570668040357968 -0.0704345186106683 0.5570668040357968 -0.0704345186106683 0.35501021304706065 -0.1166557674514363
|
||||
39200000800.0 0.34097449513259104 -0.1306142998159804 0.5590681634764999 -0.07509076598373698 0.5590681634764999 -0.07509076598373698 0.35075318861679916 -0.11564651306557817
|
||||
40000000800.0 0.3367761585597106 -0.12988784844519496 0.561069522917203 -0.07974701335680565 0.561069522917203 -0.07974701335680565 0.3464961641865376 -0.11463725867972002
|
||||
40800000800.0 0.33257782198683017 -0.12916139707440946 0.563070882357906 -0.08440326072987436 0.563070882357906 -0.08440326072987436 0.34223913975627607 -0.1136280042938619
|
||||
41600000800.0 0.3283794854139497 -0.128434945703624 0.5650722417986092 -0.08905950810294302 0.5650722417986092 -0.08905950810294302 0.3379821153260145 -0.11261874990800377
|
||||
42400000800.0 0.32418114884106924 -0.12770849433283854 0.5670736012393122 -0.09371575547601171 0.5670736012393122 -0.09371575547601171 0.333725090895753 -0.11160949552214565
|
||||
43200000800.0 0.3199828122681888 -0.12698204296205307 0.5690749606800153 -0.0983720028490804 0.5690749606800153 -0.0983720028490804 0.3294680664654915 -0.11060024113628752
|
||||
44000000800.0 0.3157844756953083 -0.12625559159126762 0.5710763201207183 -0.10302825022214904 0.5710763201207183 -0.10302825022214904 0.32521104203523 -0.10959098675042941
|
||||
44800000800.0 0.31158613912242783 -0.12552914022048214 0.5730776795614214 -0.10768449759521778 0.5730776795614214 -0.10768449759521778 0.3209540176049684 -0.10858173236457128
|
||||
45600000800.0 0.30738780254954745 -0.12480268884969667 0.5750790390021245 -0.11234074496828647 0.5750790390021245 -0.11234074496828647 0.3166969931747069 -0.10757247797871315
|
||||
46400000800.0 0.30318946597666696 -0.12407623747891122 0.5770803984428275 -0.1169969923413551 0.5770803984428275 -0.1169969923413551 0.31243996874444535 -0.10656322359285503
|
||||
47200000800.0 0.29899112940378647 -0.12334978610812575 0.5790817578835307 -0.12165323971442385 0.5790817578835307 -0.12165323971442385 0.3081829443141838 -0.10555396920699689
|
||||
48000000800.0 0.29479279283090604 -0.12262333473734029 0.5810831173242338 -0.12630948708749254 0.5810831173242338 -0.12630948708749254 0.30392591988392226 -0.10454471482113878
|
||||
48800000800.0 0.2905944562580256 -0.12189688336655483 0.5830844767649368 -0.13096573446056115 0.5830844767649368 -0.13096573446056115 0.29966889545366077 -0.10353546043528065
|
||||
49600000800.0 0.28639611968514517 -0.12117043199576934 0.5850858362056399 -0.13562198183362983 0.5850858362056399 -0.13562198183362983 0.2954118710233992 -0.1025262060494225
|
||||
50400000700.0 0.2821977836370567 -0.1204439807157903 0.587087195396173 -0.1402782286246676 0.587087195396173 -0.1402782286246676 0.29115484712526574 -0.10151695178972117
|
||||
51200000700.0 0.2779994470641763 -0.11971752934500482 0.5890885548368762 -0.1449344759977363 0.5890885548368762 -0.1449344759977363 0.28689782269500425 -0.10050769740386305
|
||||
52000000700.0 0.27380111049129585 -0.11899107797421937 0.5910899142775792 -0.14959072337080498 0.5910899142775792 -0.14959072337080498 0.2826407982647427 -0.09949844301800494
|
||||
52800000700.0 0.26960277391841536 -0.1182646266034339 0.5930912737182823 -0.15424697074387367 0.5930912737182823 -0.15424697074387367 0.27838377383448115 -0.0984891886321468
|
||||
53600000700.0 0.2654044373455349 -0.11753817523264844 0.5950926331589854 -0.15890321811694236 0.5950926331589854 -0.15890321811694236 0.2741267494042196 -0.09747993424628865
|
||||
54400000700.0 0.2612061007726545 -0.11681172386186295 0.5970939925996884 -0.16355946549001096 0.5970939925996884 -0.16355946549001096 0.2698697249739581 -0.09647067986043052
|
||||
55200000700.0 0.25700776419977406 -0.11608527249107749 0.5990953520403915 -0.16821571286307965 0.5990953520403915 -0.16821571286307965 0.26561270054369657 -0.09546142547457241
|
||||
56000000700.0 0.25280942762689357 -0.11535882112029203 0.6010967114810947 -0.1728719602361484 0.6010967114810947 -0.1728719602361484 0.261355676113435 -0.09445217108871427
|
||||
56800000700.0 0.24861109105401313 -0.11463236974950652 0.6030980709217977 -0.177528207609217 0.6030980709217977 -0.177528207609217 0.25709865168317353 -0.09344291670285612
|
||||
57600000700.0 0.24441275448113264 -0.11390591837872108 0.6050994303625008 -0.1821844549822857 0.6050994303625008 -0.1821844549822857 0.252841627252912 -0.092433662316998
|
||||
58400000700.0 0.24021441790825215 -0.1131794670079356 0.6071007898032039 -0.1868407023553544 0.6071007898032039 -0.1868407023553544 0.24858460282265044 -0.09142440793113984
|
||||
59200000700.0 0.23601608133537183 -0.1124530156371501 0.6091021492439069 -0.19149694972842304 0.6091021492439069 -0.19149694972842304 0.244327578392389 -0.09041515354528172
|
||||
60000000700.0 0.2318177447624914 -0.11172656426636465 0.61110350868461 -0.1961531971014917 0.61110350868461 -0.1961531971014917 0.2400705539621275 -0.0894058991594236
|
||||
60800000700.0 0.22761940818961096 -0.11100011289557918 0.6131048681253132 -0.2008094444745604 0.6131048681253132 -0.2008094444745604 0.23581352953186596 -0.08839664477356547
|
||||
61600000700.0 0.22342107161673058 -0.11027366152479372 0.6151062275660163 -0.20546569184762906 0.6151062275660163 -0.20546569184762906 0.23155650510160453 -0.08738739038770735
|
||||
62400000700.0 0.21922273504385015 -0.10954721015400828 0.6171075870067194 -0.21012193922069775 0.6171075870067194 -0.21012193922069775 0.22729948067134298 -0.08637813600184925
|
||||
63200000700.0 0.2150243984709697 -0.10882075878322288 0.6191089464474225 -0.2147781865937664 0.6191089464474225 -0.2147781865937664 0.2230424562410815 -0.08536888161599118
|
||||
64000000700.0 0.21082606189808928 -0.10809430741243745 0.6211103058881257 -0.21943443396683512 0.6211103058881257 -0.21943443396683512 0.21878543181082 -0.0843596272301331
|
||||
64800000700.0 0.2066277253252088 -0.10736785604165203 0.6231116653288288 -0.2240906813399039 0.6231116653288288 -0.2240906813399039 0.2145284073805584 -0.08335037284427502
|
||||
65600000700.0 0.2024293887523283 -0.10664140467086661 0.6251130247695318 -0.22874692871297256 0.6251130247695318 -0.22874692871297256 0.2102713829502969 -0.08234111845841692
|
||||
66400000700.0 0.19823105217944786 -0.10591495330008116 0.6271143842102349 -0.23340317608604128 0.6271143842102349 -0.23340317608604128 0.20601435852003536 -0.08133186407255882
|
||||
66666667300.0 0.19683160700501573 -0.10567280290369029 0.6277815038570227 -0.23495525815571028 0.6277815038570227 -0.23495525815571028 0.20459535073136687 -0.08099544602804397
|
||||
67200000700.0 0.19403271560656726 -0.10518850192929571 0.629115743650938 -0.23805942345911005 0.629115743650938 -0.23805942345911005 0.2017573340897737 -0.08032260968670073
|
||||
68000000700.0 0.18983437903368683 -0.10446205055851027 0.631117103091641 -0.24271567083217868 0.631117103091641 -0.24271567083217868 0.19750030965951215 -0.0793133553008426
|
||||
68800000700.0 0.1856360424608064 -0.10373559918772479 0.633118462532344 -0.2473719182052474 0.633118462532344 -0.2473719182052474 0.19324328522925066 -0.07830410091498448
|
||||
69600000700.0 0.18143770588792596 -0.10300914781693934 0.6351198219730472 -0.2520281655783161 0.6351198219730472 -0.2520281655783161 0.18898626079898911 -0.07729484652912635
|
||||
70400000600.0 0.17723936983983757 -0.10228269653696029 0.6371211811635804 -0.25668441236935385 0.6371211811635804 -0.25668441236935385 0.18472923690085563 -0.07628559226942502
|
||||
71200000600.0 0.17304103326695708 -0.10155624516617483 0.6391225406042834 -0.26134065974242254 0.6391225406042834 -0.26134065974242254 0.18047221247059414 -0.0752763378835669
|
||||
72000000600.0 0.16884269669407664 -0.10082979379538937 0.6411239000449864 -0.2659969071154912 0.6411239000449864 -0.2659969071154912 0.1762151880403326 -0.07426708349770879
|
||||
72800000600.0 0.16464436012119615 -0.1001033424246039 0.6431252594856895 -0.27065315448856 0.6431252594856895 -0.27065315448856 0.17195816361007105 -0.07325782911185065
|
||||
73600000600.0 0.16044602354831572 -0.09937689105381842 0.6451266189263927 -0.27530940186162867 0.6451266189263927 -0.27530940186162867 0.1677011391798095 -0.0722485747259925
|
||||
74400000600.0 0.15624768697543517 -0.09865043968303296 0.6471279783670957 -0.27996564923469724 0.6471279783670957 -0.27996564923469724 0.163444114749548 -0.07123932034013437
|
||||
75200000600.0 0.15204935040255474 -0.0979239883122475 0.6491293378077987 -0.28462189660776593 0.6491293378077987 -0.28462189660776593 0.15918709031928635 -0.07023006595427626
|
||||
76000000600.0 0.14785101382967425 -0.09719753694146202 0.6511306972485018 -0.28927814398083473 0.6511306972485018 -0.28927814398083473 0.1549300658890248 -0.06922081156841813
|
||||
76800000600.0 0.14365267725679381 -0.09647108557067656 0.6531320566892049 -0.2939343913539033 0.6531320566892049 -0.2939343913539033 0.15067304145876326 -0.06821155718256
|
||||
77600000600.0 0.13945434068391338 -0.0957446341998911 0.655133416129908 -0.298590638726972 0.655133416129908 -0.298590638726972 0.14641601702850177 -0.06720230279670188
|
||||
78400000600.0 0.1352560041110329 -0.09501818282910562 0.6571347755706112 -0.3032468861000407 0.6571347755706112 -0.3032468861000407 0.14215899259824022 -0.06619304841084375
|
||||
79200000600.0 0.1310576675381524 -0.09429173145832016 0.6591361350113142 -0.3079031334731094 0.6591361350113142 -0.3079031334731094 0.13790196816797867 -0.06518379402498563
|
||||
80000000600.0 0.12685933096527197 -0.0935652800875347 0.6611374944520172 -0.31255938084617807 0.6611374944520172 -0.31255938084617807 0.13364494373771718 -0.0641745396391275
|
||||
80800000600.0 0.12266099439239153 -0.09283882871674924 0.6631388538927203 -0.31721562821924676 0.6631388538927203 -0.31721562821924676 0.12938791930745563 -0.06316528525326938
|
||||
81600000600.0 0.11846265781951104 -0.09211237734596378 0.6651402133334234 -0.32187187559231545 0.6651402133334234 -0.32187187559231545 0.1251308948771941 -0.062156030867411255
|
||||
82400000600.0 0.1142643212466306 -0.09138592597517832 0.6671415727741266 -0.32652812296538414 0.6671415727741266 -0.32652812296538414 0.12087387044693254 -0.06114677648155313
|
||||
83200000600.0 0.11006598467375017 -0.09065947460439283 0.6691429322148296 -0.3311843703384528 0.6691429322148296 -0.3311843703384528 0.11661684601667105 -0.060137522095695006
|
||||
84000000600.0 0.10586764810086974 -0.08993302323360737 0.6711442916555327 -0.3358406177115215 0.6711442916555327 -0.3358406177115215 0.1123598215864095 -0.059128267709836854
|
||||
84800000600.0 0.10166931152798925 -0.0892065718628219 0.6731456510962357 -0.3404968650845902 0.6731456510962357 -0.3404968650845902 0.10810279715614796 -0.05811901332397873
|
||||
85600000600.0 0.09747097495510881 -0.08848012049203643 0.6751470105369388 -0.3451531124576589 0.6751470105369388 -0.3451531124576589 0.10384577272588646 -0.057109758938120606
|
||||
86400000600.0 0.09327263838222832 -0.08775366912125097 0.6771483699776419 -0.3498093598307276 0.6771483699776419 -0.3498093598307276 0.09958874829562492 -0.05610050455226248
|
||||
87200000600.0 0.08907430180934783 -0.0870272177504655 0.6791497294183451 -0.3544656072037963 0.6791497294183451 -0.3544656072037963 0.09533172386536337 -0.05509125016640436
|
||||
88000000600.0 0.08487596523646745 -0.08630076637968005 0.6811510888590481 -0.35912185457686496 0.6811510888590481 -0.35912185457686496 0.09107469943510188 -0.054081995780546246
|
||||
88800000600.0 0.08067762866358691 -0.08557431500889458 0.6831524482997512 -0.3637781019499336 0.6831524482997512 -0.3637781019499336 0.08681767500484028 -0.053072741394688094
|
||||
89600000600.0 0.07647929209070647 -0.08484786363810912 0.6851538077404542 -0.3684343493230023 0.6851538077404542 -0.3684343493230023 0.08256065057457873 -0.05206348700882997
|
||||
90400000500.0 0.0722809560426182 -0.08412141235813009 0.6871551669309873 -0.37309059611404 0.6871551669309873 -0.37309059611404 0.07830362667644536 -0.05105423274912867
|
||||
91200000500.0 0.06808261946973765 -0.0833949609873446 0.6891565263716904 -0.3777468434871088 0.6891565263716904 -0.3777468434871088 0.07404660224618376 -0.050044978363270515
|
||||
92000000500.0 0.06388428289685716 -0.08266850961655914 0.6911578858123935 -0.3824030908601775 0.6911578858123935 -0.3824030908601775 0.06978957781592221 -0.049035723977412404
|
||||
92800000500.0 0.059685946323976724 -0.08194205824577368 0.6931592452530966 -0.38705933823324606 0.6931592452530966 -0.38705933823324606 0.06553255338566072 -0.04802646959155428
|
||||
93600000500.0 0.05548760975109629 -0.08121560687498822 0.6951606046937997 -0.39171558560631475 0.6951606046937997 -0.39171558560631475 0.06127552895539917 -0.047017215205696156
|
||||
94400000500.0 0.051289273178215855 -0.08048915550420276 0.6971619641345027 -0.39637183297938344 0.6971619641345027 -0.39637183297938344 0.05701850452513768 -0.04600796081983803
|
||||
95200000500.0 0.04709093660533542 -0.0797627041334173 0.6991633235752058 -0.40102808035245213 0.6991633235752058 -0.40102808035245213 0.052761480094876134 -0.04499870643397992
|
||||
96000000500.0 0.042892600032454986 -0.07903625276263183 0.7011646830159088 -0.4056843277255208 0.7011646830159088 -0.4056843277255208 0.04850445566461459 -0.0439894520481218
|
||||
96800000500.0 0.038694263459574385 -0.07830980139184636 0.703166042456612 -0.4103405750985895 0.703166042456612 -0.4103405750985895 0.04424743123435304 -0.042980197662263644
|
||||
97600000500.0 0.034495926886694006 -0.0775833500210609 0.7051674018973151 -0.4149968224716582 0.7051674018973151 -0.4149968224716582 0.039990406804091494 -0.04197094327640552
|
||||
98400000500.0 0.030297590313813516 -0.07685689865027544 0.7071687613380182 -0.4196530698447269 0.7071687613380182 -0.4196530698447269 0.03573338237382995 -0.04096168889054741
|
||||
99200000500.0 0.026099253740933137 -0.07613044727948998 0.7091701207787212 -0.4243093172177956 0.7091701207787212 -0.4243093172177956 0.03147635794356851 -0.03995243450468927
|
||||
100000000000.0 0.02190091979201303 -0.07540399636273662 0.7111714789685747 -0.4289655616807096 0.7111714789685747 -0.4289655616807096 0.02721933617394723 -0.03894318074961514
|
||||
100800000000.0 0.01770258321913254 -0.07467754499195116 0.7131728384092777 -0.4336218090537783 0.7131728384092777 -0.4336218090537783 0.02296231174368568 -0.03793392636375703
|
||||
101600000000.0 0.01350424664625216 -0.0739510936211657 0.7151741978499808 -0.438278056426847 0.7151741978499808 -0.438278056426847 0.018705287313424135 -0.03692467197789892
|
||||
102400000000.0 0.00930591007337167 -0.07322464225038024 0.7171755572906839 -0.44293430379991566 0.7171755572906839 -0.44293430379991566 0.0144482628831627 -0.03591541759204078
|
||||
103200000000.0 0.00510757350049118 -0.07249819087959476 0.7191769167313871 -0.44759055117298446 0.7191769167313871 -0.44759055117298446 0.010191238452901041 -0.034906163206182644
|
||||
104000000000.0 0.0009092369276106904 -0.0717717395088093 0.7211782761720901 -0.45224679854605304 0.7211782761720901 -0.45224679854605304 0.005934214022639495 -0.033896908820324534
|
||||
104800000000.0 -0.0032890996452696886 -0.07104528813802384 0.7231796356127932 -0.45690304591912173 0.7231796356127932 -0.45690304591912173 0.0016771895923780589 -0.032887654434466396
|
||||
105600000000.0 -0.007487436218150179 -0.07031883676723838 0.7251809950534962 -0.4615592932921904 0.7251809950534962 -0.4615592932921904 -0.002579834837883488 -0.031878400048608285
|
||||
106400000000.0 -0.011685772791030558 -0.06959238539645292 0.7271823544941993 -0.4662155406652591 0.7271823544941993 -0.4662155406652591 -0.006836859268145035 -0.030869145662750147
|
||||
107200000000.0 -0.015884109363911048 -0.06886593402566746 0.7291837139349024 -0.4708717880383278 0.7291837139349024 -0.4708717880383278 -0.011093883698406581 -0.029859891276892037
|
||||
108000000000.0 -0.020082445936791538 -0.068139482654882 0.7311850733756055 -0.4755280354113965 0.7311850733756055 -0.4755280354113965 -0.015350908128668017 -0.028850636891033926
|
||||
108800000000.0 -0.024280782509672028 -0.06741303128409652 0.7331864328163086 -0.4801842827844652 0.7331864328163086 -0.4801842827844652 -0.019607932558929675 -0.02784138250517576
|
||||
109600000000.0 -0.028479119082552518 -0.06668657991331106 0.7351877922570116 -0.48484053015753387 0.7351877922570116 -0.48484053015753387 -0.02386495698919122 -0.02683212811931765
|
||||
110400000000.0 -0.0326774556554329 -0.0659601285425256 0.7371891516977147 -0.48949677753060256 0.7371891516977147 -0.48949677753060256 -0.028121981419452657 -0.02582287373345954
|
||||
111200000000.0 -0.03687579222831339 -0.06523367717174014 0.7391905111384178 -0.49415302490367125 0.7391905111384178 -0.49415302490367125 -0.032379005849714204 -0.0248136193476014
|
||||
112000000000.0 -0.041074128801193766 -0.06450722580095468 0.741191870579121 -0.49880927227673993 0.741191870579121 -0.49880927227673993 -0.03663603027997575 -0.02380436496174329
|
||||
112800000000.0 -0.045272465374074256 -0.0637807744301692 0.743193230019824 -0.5034655196498086 0.743193230019824 -0.5034655196498086 -0.0408930547102373 -0.022795110575885152
|
||||
113600000000.0 -0.049470801946954635 -0.06305432305938374 0.745194589460527 -0.5081217670228773 0.745194589460527 -0.5081217670228773 -0.04515007914049873 -0.021785856190027042
|
||||
114400000000.0 -0.053669138519835125 -0.06232787168859828 0.7471959489012301 -0.512778014395946 0.7471959489012301 -0.512778014395946 -0.04940710357076028 -0.02077660180416893
|
||||
115200000000.0 -0.057867475092715726 -0.06160142031781281 0.7491973083419332 -0.5174342617690146 0.7491973083419332 -0.5174342617690146 -0.05366412800102194 -0.019767347418310766
|
||||
116000000000.0 -0.062065811665596105 -0.06087496894702735 0.7511986677826363 -0.5220905091420833 0.7511986677826363 -0.5220905091420833 -0.057921152431283485 -0.018758093032452655
|
||||
116800000000.0 -0.0662641482384766 -0.060148517576241886 0.7532000272233395 -0.526746756515152 0.7532000272233395 -0.526746756515152 -0.06217817686154492 -0.017748838646594545
|
||||
117600000000.0 -0.07046248481135697 -0.059422066205456425 0.7552013866640425 -0.5314030038882207 0.7552013866640425 -0.5314030038882207 -0.06643520129180647 -0.016739584260736406
|
||||
118400000000.0 -0.07466082138423746 -0.058695614834670964 0.7572027461047455 -0.5360592512612894 0.7572027461047455 -0.5360592512612894 -0.07069222572206801 -0.015730329874878296
|
||||
119200000000.0 -0.07885915795711784 -0.057969163463885504 0.7592041055454486 -0.5407154986343581 0.7592041055454486 -0.5407154986343581 -0.07494925015232945 -0.014721075489020158
|
||||
120000000000.0 -0.08305749452999833 -0.05724271209310004 0.7612054649861517 -0.5453717460074268 0.7612054649861517 -0.5453717460074268 -0.079206274582591 -0.013711821103162047
|
||||
120800000000.0 -0.08725583110287882 -0.05651626072231457 0.7632068244268548 -0.5500279933804955 0.7632068244268548 -0.5500279933804955 -0.08346329901285265 -0.01270256671730391
|
||||
121600000000.0 -0.09145416767575931 -0.05578980935152911 0.765208183867558 -0.5546842407535642 0.765208183867558 -0.5546842407535642 -0.0877203234431142 -0.011693312331445771
|
||||
122400000000.0 -0.0956525042486398 -0.055063357980743646 0.767209543308261 -0.5593404881266328 0.767209543308261 -0.5593404881266328 -0.09197734787337564 -0.01068405794558766
|
||||
123200000000.0 -0.09985084082152018 -0.054336906609958185 0.769210902748964 -0.5639967354997015 0.769210902748964 -0.5639967354997015 -0.09623437230363718 -0.00967480355972955
|
||||
124000000000.0 -0.10404917739440067 -0.053610455239172725 0.7712122621896671 -0.5686529828727702 0.7712122621896671 -0.5686529828727702 -0.10049139673389873 -0.008665549173871412
|
||||
124800000000.0 -0.10824751396728105 -0.052884003868387264 0.7732136216303702 -0.5733092302458389 0.7732136216303702 -0.5733092302458389 -0.10474842116416028 -0.007656294788013301
|
||||
125600000000.0 -0.11244585054016154 -0.0521575524976018 0.7752149810710733 -0.5779654776189076 0.7752149810710733 -0.5779654776189076 -0.10900544559442171 -0.006647040402155163
|
||||
126400000000.0 -0.11664418711304203 -0.05143110112681633 0.7772163405117765 -0.5826217249919763 0.7772163405117765 -0.5826217249919763 -0.11326247002468337 -0.005637786016297025
|
||||
127200000000.0 -0.12084252368592252 -0.05070464975603087 0.7792176999524795 -0.587277972365045 0.7792176999524795 -0.587277972365045 -0.11751949445494492 -0.004628531630438915
|
||||
128000000000.0 -0.1250408602588029 -0.04997819838524539 0.7812190593931825 -0.5919342197381137 0.7812190593931825 -0.5919342197381137 -0.12177651888520635 -0.0036192772445807764
|
||||
128800000000.0 -0.1292391968316834 -0.049251747014459904 0.7832204188338856 -0.5965904671111824 0.7832204188338856 -0.5965904671111824 -0.1260335433154679 -0.002610022858722666
|
||||
129600000000.0 -0.13343753340456388 -0.04852529564367444 0.7852217782745887 -0.601246714484251 0.7852217782745887 -0.601246714484251 -0.13029056774572945 -0.0016007684728645277
|
||||
130400000000.0 -0.13763586997744426 -0.04779884427288898 0.7872231377152918 -0.6059029618573195 0.7872231377152918 -0.6059029618573195 -0.134547592175991 -0.0005915140870063895
|
||||
131200000000.0 -0.14183420655032475 -0.04707239290210352 0.7892244971559949 -0.6105592092303882 0.7892244971559949 -0.6105592092303882 -0.13880461660625243 0.0004177402988517209
|
||||
132000000000.0 -0.14603254312320513 -0.04634594153131806 0.7912258565966979 -0.6152154566034569 0.7912258565966979 -0.6152154566034569 -0.14306164103651398 0.0014269946847098591
|
||||
132800000000.0 -0.15023087969608573 -0.045619490160532586 0.793227216037401 -0.6198717039765258 0.793227216037401 -0.6198717039765258 -0.14731866546677563 0.0024362490705679973
|
||||
133333334000.0 -0.15302977424328645 -0.04513518864129948 0.794561457332336 -0.6229758727721109 0.794561457332336 -0.6229758727721109 -0.1501566853011369 0.0031090861688520544
|
||||
133600000000.0 -0.1544292162689661 -0.044893038789747125 0.7952285754781041 -0.6245279513495945 0.7952285754781041 -0.6245279513495945 -0.15157568989703707 0.0034455034564261078
|
||||
134400000000.0 -0.1586275528418466 -0.044166587418961664 0.7972299349188072 -0.6291841987226632 0.7972299349188072 -0.6291841987226632 -0.15583271432729862 0.004454757842284246
|
||||
135200000000.0 -0.16282588941472698 -0.0434401360481762 0.7992312943595102 -0.6338404460957316 0.7992312943595102 -0.6338404460957316 -0.16008973875756016 0.005464012228142356
|
||||
136000000000.0 -0.16702422598760747 -0.04271368467739074 0.8012326538002134 -0.6384966934688003 0.8012326538002134 -0.6384966934688003 -0.1643467631878217 0.006473266614000467
|
||||
136800000000.0 -0.17122256256048796 -0.04198723330660528 0.8032340132409164 -0.643152940841869 0.8032340132409164 -0.643152940841869 -0.16860378761808315 0.007482520999858605
|
||||
137600000000.0 -0.17542089913336834 -0.04126078193581982 0.8052353726816195 -0.6478091882149377 0.8052353726816195 -0.6478091882149377 -0.1728608120483447 0.008491775385716716
|
||||
138400000000.0 -0.17961923570624894 -0.04053433056503433 0.8072367321223226 -0.6524654355880066 0.8072367321223226 -0.6524654355880066 -0.17711783647860635 0.009501029771574854
|
||||
139200000000.0 -0.18381757227912932 -0.039807879194248885 0.8092380915630257 -0.6571216829610751 0.8092380915630257 -0.6571216829610751 -0.18137486090886779 0.010510284157432992
|
||||
140000000000.0 -0.1880159088520098 -0.03908142782346341 0.8112394510037287 -0.6617779303341438 0.8112394510037287 -0.6617779303341438 -0.18563188533912933 0.011519538543291102
|
||||
140800000000.0 -0.19221424542489018 -0.038354976452677964 0.8132408104444319 -0.6664341777072125 0.8132408104444319 -0.6664341777072125 -0.18988890976939088 0.01252879292914924
|
||||
141600000000.0 -0.19641258199777067 -0.03762852508189249 0.8152421698851349 -0.6710904250802812 0.8152421698851349 -0.6710904250802812 -0.19414593419965243 0.013538047315007351
|
||||
142400000000.0 -0.20061091857065105 -0.03690207371110704 0.817243529325838 -0.6757466724533499 0.817243529325838 -0.6757466724533499 -0.19840295862991386 0.014547301700865461
|
||||
143200000000.0 -0.20480925514353154 -0.03617562234032157 0.8192448887665411 -0.6804029198264185 0.8192448887665411 -0.6804029198264185 -0.2026599830601754 0.0155565560867236
|
||||
144000000000.0 -0.20900759171641203 -0.03544917096953609 0.8212462482072442 -0.6850591671994872 0.8212462482072442 -0.6850591671994872 -0.20691700749043707 0.016565810472581738
|
||||
144800000000.0 -0.21320592828929252 -0.034722719598750645 0.8232476076479472 -0.6897154145725559 0.8232476076479472 -0.6897154145725559 -0.2111740319206985 0.01757506485843985
|
||||
145600000000.0 -0.217404264862173 -0.03399626822796517 0.8252489670886504 -0.6943716619456246 0.8252489670886504 -0.6943716619456246 -0.21543105635096005 0.018584319244297987
|
||||
146400000000.0 -0.2216026014350534 -0.033269816857179724 0.8272503265293534 -0.6990279093186933 0.8272503265293534 -0.6990279093186933 -0.2196880807812216 0.019593573630156097
|
||||
147200000000.0 -0.22580093800793388 -0.03254336548639425 0.8292516859700565 -0.703684156691762 0.8292516859700565 -0.703684156691762 -0.22394510521148314 0.020602828016014235
|
||||
148000000000.0 -0.22999927458081426 -0.0318169141156088 0.8312530454107596 -0.7083404040648307 0.8312530454107596 -0.7083404040648307 -0.22820212964174458 0.021612082401872346
|
||||
148800000000.0 -0.23419761115369475 -0.031090462744823327 0.8332544048514626 -0.7129966514378994 0.8332544048514626 -0.7129966514378994 -0.23245915407200612 0.022621336787730456
|
||||
149600000000.0 -0.23839594772657513 -0.03036401137403788 0.8352557642921656 -0.717652898810968 0.8352557642921656 -0.717652898810968 -0.23671617850226767 0.023630591173588594
|
||||
150400000000.0 -0.24259428429945573 -0.029637560003252406 0.8372571237328688 -0.7223091461840367 0.8372571237328688 -0.7223091461840367 -0.24097320293252933 0.024639845559446732
|
||||
151200000000.0 -0.2467926208723361 -0.02891110863246693 0.8392584831735719 -0.7269653935571054 0.8392584831735719 -0.7269653935571054 -0.24523022736279076 0.025649099945304843
|
||||
152000000000.0 -0.2509909574452166 -0.028184657261681484 0.841259842614275 -0.7316216409301741 0.841259842614275 -0.7316216409301741 -0.2494872517930523 0.02665835433116298
|
||||
152800000000.0 -0.2551892940180971 -0.02745820589089601 0.8432612020549781 -0.7362778883032428 0.8432612020549781 -0.7362778883032428 -0.25374427622331386 0.02766760871702109
|
||||
153600000000.0 -0.25938763059097747 -0.026731754520110562 0.8452625614956811 -0.7409341356763115 0.8452625614956811 -0.7409341356763115 -0.2580013006535753 0.02867686310287923
|
||||
154400000000.0 -0.26358596716385796 -0.026005303149325087 0.8472639209363841 -0.7455903830493802 0.8472639209363841 -0.7455903830493802 -0.26225832508383684 0.02968611748873734
|
||||
155200000000.0 -0.26778430373673834 -0.02527885177853964 0.8492652803770873 -0.7502466304224489 0.8492652803770873 -0.7502466304224489 -0.2665153495140984 0.03069537187459545
|
||||
156000000000.0 -0.27198264030961894 -0.024552400407754138 0.8512666398177904 -0.7549028777955176 0.8512666398177904 -0.7549028777955176 -0.27077237394436005 0.03170462626045362
|
||||
156800000000.0 -0.2761809768824993 -0.02382594903696869 0.8532679992584935 -0.7595591251685863 0.8532679992584935 -0.7595591251685863 -0.2750293983746215 0.03271388064631173
|
||||
157600000000.0 -0.2803793134553798 -0.023099497666183216 0.8552693586991966 -0.764215372541655 0.8552693586991966 -0.764215372541655 -0.279286422804883 0.03372313503216984
|
||||
158400000000.0 -0.2845776500282602 -0.02237304629539777 0.8572707181398996 -0.7688716199147236 0.8572707181398996 -0.7688716199147236 -0.2835434472351446 0.034732389418027976
|
||||
159200000000.0 -0.2887759866011407 -0.021646594924612295 0.8592720775806026 -0.7735278672877923 0.8592720775806026 -0.7735278672877923 -0.287800471665406 0.035741643803886086
|
||||
160000000000.0 -0.29297432317402117 -0.020920143553826848 0.8612734370213058 -0.778184114660861 0.8612734370213058 -0.778184114660861 -0.29205749609566756 0.036750898189744224
|
||||
160800000000.0 -0.29717265974690155 -0.020193692183041373 0.8632747964620089 -0.7828403620339297 0.8632747964620089 -0.7828403620339297 -0.2963145205259291 0.037760152575602335
|
||||
161600000000.0 -0.30137099631978215 -0.019467240812255898 0.865276155902712 -0.7874966094069984 0.865276155902712 -0.7874966094069984 -0.30057154495619076 0.03876940696146047
|
||||
162400000000.0 -0.3055693328926625 -0.01874078944147045 0.8672775153434151 -0.7921528567800671 0.8672775153434151 -0.7921528567800671 -0.3048285693864522 0.03977866134731861
|
||||
163200000000.0 -0.309767669465543 -0.018014338070684977 0.8692788747841181 -0.7968091041531358 0.8692788747841181 -0.7968091041531358 -0.30908559381671374 0.04078791573317672
|
||||
164000000000.0 -0.3139660060384234 -0.01728788669989953 0.8712802342248211 -0.8014653515262045 0.8712802342248211 -0.8014653515262045 -0.3133426182469753 0.04179717011903483
|
||||
164800000000.0 -0.3181643426113039 -0.016561435329114055 0.8732815936655243 -0.8061215988992732 0.8732815936655243 -0.8061215988992732 -0.31759964267723684 0.04280642450489297
|
||||
165600000000.0 -0.32236267918418426 -0.015834983958328608 0.8752829531062274 -0.8107778462723418 0.8752829531062274 -0.8107778462723418 -0.3218566671074983 0.04381567889075108
|
||||
166400000000.0 -0.32656101575706475 -0.015108532587543133 0.8772843125469305 -0.8154340936454103 0.8772843125469305 -0.8154340936454103 -0.3261136915377598 0.04482493327660922
|
||||
167200000000.0 -0.33075935232994524 -0.014382081216757686 0.8792856719876335 -0.820090341018479 0.8792856719876335 -0.820090341018479 -0.33037071596802137 0.04583418766246733
|
||||
168000000000.0 -0.33495768890282573 -0.013655629845972211 0.8812870314283366 -0.8247465883915479 0.8812870314283366 -0.8247465883915479 -0.3346277403982829 0.04684344204832547
|
||||
168800000000.0 -0.3391560254757062 -0.012929178475186737 0.8832883908690397 -0.8294028357646166 0.8832883908690397 -0.8294028357646166 -0.33888476482854446 0.047852696434183606
|
||||
169600000000.0 -0.3433543620485866 -0.01220272710440129 0.8852897503097428 -0.8340590831376853 0.8852897503097428 -0.8340590831376853 -0.343141789258806 0.048861950820041716
|
||||
170400000000.0 -0.3475526986214671 -0.011476275733615815 0.8872911097504459 -0.8387153305107538 0.8872911097504459 -0.8387153305107538 -0.34739881368906755 0.04987120520589983
|
||||
171200000000.0 -0.35175103519434747 -0.010749824362830368 0.889292469191149 -0.8433715778838224 0.889292469191149 -0.8433715778838224 -0.351655838119329 0.050880459591757965
|
||||
172000000000.0 -0.35594937176722796 -0.010023372992044893 0.891293828631852 -0.8480278252568911 0.891293828631852 -0.8480278252568911 -0.35591286254959054 0.051889713977616075
|
||||
172800000000.0 -0.36014770834010834 -0.009296921621259446 0.893295188072555 -0.8526840726299598 0.893295188072555 -0.8526840726299598 -0.3601698869798521 0.052898968363474214
|
||||
173600000000.0 -0.36434604491298894 -0.008570470250473944 0.8952965475132582 -0.8573403200030285 0.8952965475132582 -0.8573403200030285 -0.36442691141011363 0.05390822274933235
|
||||
174400000000.0 -0.3685443814858693 -0.007844018879688497 0.8972979069539613 -0.8619965673760972 0.8972979069539613 -0.8619965673760972 -0.3686839358403752 0.05491747713519046
|
||||
175200000000.0 -0.3727427180587498 -0.007117567508903022 0.8992992663946644 -0.8666528147491659 0.8992992663946644 -0.8666528147491659 -0.3729409602706367 0.0559267315210486
|
||||
176000000000.0 -0.3769410546316303 -0.006391116138117575 0.9013006258353674 -0.8713090621222346 0.9013006258353674 -0.8713090621222346 -0.37719798470089827 0.05693598590690671
|
||||
176800000000.0 -0.3811393912045107 -0.0056646647673321004 0.9033019852760705 -0.8759653094953033 0.9033019852760705 -0.8759653094953033 -0.3814550091311597 0.05794524029276482
|
||||
177600000000.0 -0.38533772777739117 -0.0049382133965466535 0.9053033447167735 -0.880621556868372 0.9053033447167735 -0.880621556868372 -0.38571203356142125 0.05895449467862296
|
||||
178400000000.0 -0.38953606435027155 -0.004211762025761179 0.9073047041574767 -0.8852778042414406 0.9073047041574767 -0.8852778042414406 -0.3899690579916828 0.05996374906448107
|
||||
179200000000.0 -0.39373440092315204 -0.0034853106549757318 0.9093060635981798 -0.8899340516145093 0.9093060635981798 -0.8899340516145093 -0.39422608242194435 0.06097300345033921
|
||||
180000000000.0 -0.3979327374960324 -0.002758859284190257 0.9113074230388828 -0.894590298987578 0.9113074230388828 -0.894590298987578 -0.3984831068522058 0.06198225783619732
|
||||
180800000000.0 -0.4021310740689129 -0.00203240791340481 0.9133087824795859 -0.8992465463606467 0.9133087824795859 -0.8992465463606467 -0.40274013128246733 0.06299151222205543
|
||||
181600000000.0 -0.4063294106417933 -0.0013059565426193354 0.9153101419202889 -0.9039027937337152 0.9153101419202889 -0.9039027937337152 -0.4069971557127289 0.06400076660791357
|
||||
182400000000.0 -0.410527747214674 -0.0005795051718338606 0.9173115013609922 -0.9085590411067841 0.9173115013609922 -0.9085590411067841 -0.41125418014299053 0.06501002099377173
|
||||
183200000000.0 -0.4147260837875544 0.0001469461989516141 0.9193128608016952 -0.9132152884798528 0.9193128608016952 -0.9132152884798528 -0.4155112045732521 0.06601927537962984
|
||||
184000000000.0 -0.41892442036043487 0.0008733975697370611 0.9213142202423983 -0.9178715358529215 0.9213142202423983 -0.9178715358529215 -0.4197682290035136 0.06702852976548798
|
||||
184800000000.0 -0.42312275693331536 0.0015998489405225358 0.9233155796831014 -0.9225277832259902 0.9233155796831014 -0.9225277832259902 -0.4240252534337752 0.06803778415134609
|
||||
185600000000.0 -0.42732109350619574 0.0023263003113079828 0.9253169391238044 -0.9271840305990589 0.9253169391238044 -0.9271840305990589 -0.4282822778640366 0.0690470385372042
|
||||
186400000000.0 -0.4315194300790762 0.0030527516820934575 0.9273182985645074 -0.9318402779721275 0.9273182985645074 -0.9318402779721275 -0.43253930229429816 0.07005629292306234
|
||||
187200000000.0 -0.4357177666519566 0.0037792030528789045 0.9293196580052105 -0.9364965253451962 0.9293196580052105 -0.9364965253451962 -0.4367963267245597 0.07106554730892045
|
||||
188000000000.0 -0.4399161032248371 0.004505654423664379 0.9313210174459137 -0.9411527727182649 0.9313210174459137 -0.9411527727182649 -0.44105335115482114 0.07207480169477859
|
||||
188800000000.0 -0.4441144397977175 0.005232105794449826 0.9333223768866168 -0.9458090200913336 0.9333223768866168 -0.9458090200913336 -0.4453103755850827 0.0730840560806367
|
||||
189600000000.0 -0.44831277637059797 0.005958557165235301 0.9353237363273198 -0.9504652674644023 0.9353237363273198 -0.9504652674644023 -0.44956740001534423 0.07409331046649481
|
||||
190400000000.0 -0.45251111294347846 0.006685008536020748 0.9373250957680228 -0.9551215148374708 0.9373250957680228 -0.9551215148374708 -0.4538244244456058 0.07510256485235295
|
||||
191200000000.0 -0.45670944951635883 0.007411459906806223 0.9393264552087259 -0.9597777622105395 0.9393264552087259 -0.9597777622105395 -0.4580814488758673 0.07611181923821106
|
||||
192000000000.0 -0.4609077860892392 0.00813791127759167 0.941327814649429 -0.9644340095836081 0.941327814649429 -0.9644340095836081 -0.46233847330612887 0.0771210736240692
|
||||
192800000000.0 -0.4651061226621198 0.008864362648377144 0.9433291740901322 -0.9690902569566768 0.9433291740901322 -0.9690902569566768 -0.4665954977363902 0.07813032800992731
|
||||
193600000000.0 -0.4693044592350002 0.009590814019162591 0.9453305335308352 -0.9737465043297455 0.9453305335308352 -0.9737465043297455 -0.47085252216665174 0.07913958239578542
|
||||
194400000000.0 -0.4735027958078808 0.010317265389948094 0.9473318929715384 -0.9784027517028144 0.9473318929715384 -0.9784027517028144 -0.4751095465969135 0.08014883678164358
|
||||
195200000000.0 -0.4777011323807612 0.011043716760733568 0.9493332524122414 -0.9830589990758831 0.9493332524122414 -0.9830589990758831 -0.47936657102717506 0.08115809116750172
|
||||
196000000000.0 -0.4818994689536418 0.011770168131519015 0.9513346118529444 -0.9877152464489518 0.9513346118529444 -0.9877152464489518 -0.4836235954574366 0.08216734555335983
|
||||
196800000000.0 -0.48609780552652215 0.01249661950230449 0.9533359712936476 -0.9923714938220205 0.9533359712936476 -0.9923714938220205 -0.48788061988769815 0.08317659993921797
|
||||
197600000000.0 -0.49029614209940253 0.013223070873089937 0.9553373307343507 -0.9970277411950892 0.9553373307343507 -0.9970277411950892 -0.4921376443179597 0.08418585432507608
|
||||
198400000000.0 -0.49449447867228313 0.013949522243875412 0.9573386901750538 -1.0016839885681579 0.9573386901750538 -1.0016839885681579 -0.496394668748221 0.08519510871093419
|
||||
199200000000.0 -0.4986928152451635 0.014675973614660859 0.9593400496157568 -1.0063402359412263 0.9593400496157568 -1.0063402359412263 -0.5006516931784826 0.08620436309679233
|
||||
200000000000.0 -0.5028911518180439 0.015402424985446334 0.9613414090564599 -1.010996483314295 0.9613414090564599 -1.010996483314295 -0.5049087176087441 0.08721361748265047
|
||||
583
param_vf.py
Normal file
583
param_vf.py
Normal file
@@ -0,0 +1,583 @@
|
||||
"""
|
||||
Parametric (multivariate) orthonormal vector fitting for geometry + frequency.
|
||||
|
||||
根据论文: Robust Parametric Macromodeling Using Multivariate Orthonormal Vector Fitting
|
||||
|
||||
核心思想 (简化实现版本):
|
||||
1. 在频域上使用一组全局极点 a_k, 通过所有参数样本共享。
|
||||
2. 对每个几何样本 s (由 (W,L) 给出) 与端口对 (i,j) 构建线性最小二乘问题, 固定极点估计该样本的残值 r_{k,s}, 以及常数/斜率项 d_s, e_s。
|
||||
3. 将随几何参数变化的残值/常数/斜率在一个离散正交 (QR) 的多元多项式基 Φ_q(W,L) 上展开: r_k(W,L) ≈ Σ_q c_{k,q} Φ_q(W,L)。
|
||||
4. 评价阶段: 先用 (W,L) 计算 Φ(W,L), 再恢复 r_k,d,e, 组合成有理函数 Σ_k r_k/(p-a_k)+d+p e。
|
||||
|
||||
该文件实现一个最小可用版本, 方便后续扩展(极点迭代 / 被动性约束 / 模型压缩等)。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import List, Tuple, Dict, Any, Optional
|
||||
import numpy as np
|
||||
from skrf import Network
|
||||
import skrf as rf
|
||||
from models.capa import Capa
|
||||
from models.basic import ModelBasicDatasetUnit
|
||||
import warnings
|
||||
|
||||
|
||||
@dataclass
|
||||
class ParametricVFConfig:
|
||||
# 有理函数项数量 (K 个极点)
|
||||
n_poles: int = 8
|
||||
# 参数多项式最大总次数 (a+b <= degree)
|
||||
param_total_degree: int = 3
|
||||
# 频率单位: Hz (Network 中 f 默认 Hz)
|
||||
damping: float = 0.02 # 极点实部相对于 2π f_max 的比例, 保证稳定
|
||||
# 最大保留频率点 (特征频率抽样); None 表示不裁剪
|
||||
max_freq_points: Optional[int] = None
|
||||
# 频率选择方法: 'curvature' 或 'uniform'
|
||||
freq_selection_method: str = 'curvature'
|
||||
# 曲率阈值(可选), 仅 method='curvature' 时生效
|
||||
curvature_threshold: Optional[float] = None
|
||||
# VF 极点迭代次数 (0 表示不迭代)
|
||||
vf_iterations: int = 0
|
||||
# 极点迭代时是否打印警告
|
||||
verbose: bool = True
|
||||
# 未来可添加: 加权, 正则, 被动性投影等
|
||||
|
||||
|
||||
def generate_monomial_exponents(dim: int, total_degree: int) -> List[Tuple[int, ...]]:
|
||||
"""生成所有满足指数和 <= total_degree 的多元单项式指数。
|
||||
对于 2 维 (W,L) 返回 (a,b) 列表。
|
||||
"""
|
||||
exps: List[Tuple[int, ...]] = []
|
||||
def rec(prefix: Tuple[int, ...], remaining_dim: int, max_sum: int):
|
||||
if remaining_dim == 1:
|
||||
for i in range(max_sum + 1):
|
||||
exps.append(prefix + (i,))
|
||||
return
|
||||
for i in range(max_sum + 1):
|
||||
rec(prefix + (i,), remaining_dim - 1, max_sum - i)
|
||||
rec(tuple(), dim, total_degree)
|
||||
return exps
|
||||
|
||||
|
||||
class OrthonormalParamBasis:
|
||||
"""离散点集上 (W,L) 的多项式基 QR 正交化封装。"""
|
||||
def __init__(self, W: np.ndarray, L: np.ndarray, total_degree: int):
|
||||
assert W.shape == L.shape
|
||||
self.W_mean = W.mean()
|
||||
self.W_std = W.std() or 1.0
|
||||
self.L_mean = L.mean()
|
||||
self.L_std = L.std() or 1.0
|
||||
self.exps = generate_monomial_exponents(2, total_degree)
|
||||
# 构建单项式矩阵 M (Ns x M)
|
||||
M = []
|
||||
Wn = (W - self.W_mean) / self.W_std
|
||||
Ln = (L - self.L_mean) / self.L_std
|
||||
for a, b in self.exps:
|
||||
M.append((Wn ** a) * (Ln ** b))
|
||||
M = np.stack(M, axis=1) # (Ns, M)
|
||||
# QR 分解获得离散正交基 Q, R 上三角
|
||||
Q, R = np.linalg.qr(M)
|
||||
self.Q = Q # (Ns, Q)
|
||||
self.R = R # (Q, Q)
|
||||
self.R_inv = np.linalg.inv(R)
|
||||
|
||||
@property
|
||||
def n_basis(self) -> int:
|
||||
return self.Q.shape[1]
|
||||
|
||||
def phi_matrix(self) -> np.ndarray:
|
||||
return self.Q # 对应样本点的基函数值
|
||||
|
||||
def eval(self, W: float, L: float) -> np.ndarray:
|
||||
Wn = (W - self.W_mean) / self.W_std
|
||||
Ln = (L - self.L_mean) / self.L_std
|
||||
monomials = []
|
||||
for a, b in self.exps:
|
||||
monomials.append((Wn ** a) * (Ln ** b))
|
||||
m = np.asarray(monomials) # (M,)
|
||||
# M = Q R => 对新点 m = phi R => phi = m R^{-1}
|
||||
phi = m @ self.R_inv
|
||||
return phi # (Q,)
|
||||
|
||||
|
||||
class ParametricVectorFitting:
|
||||
"""多参数 (W,L) 二端口/多端口 S 参数的简化 Parametric VF。
|
||||
|
||||
模型形式 (单个端口对):
|
||||
H(p; μ) ≈ Σ_{k=1..K} r_k(μ)/(p - a_k) + d(μ) + p e(μ)
|
||||
其中 μ = (W,L)。r_k, d, e 在参数域被正交基展开。
|
||||
"""
|
||||
def __init__(self, config: ParametricVFConfig):
|
||||
self.cfg = config
|
||||
self.frequencies: np.ndarray | None = None # (Nf,)
|
||||
self.poles: np.ndarray | None = None # (K,)
|
||||
self.basis: OrthonormalParamBasis | None = None
|
||||
# 残值系数: (nports, nports, K, Q)
|
||||
self.residue_coeffs: np.ndarray | None = None
|
||||
# d,e 系数: (nports, nports, Q)
|
||||
self.d_coeffs: np.ndarray | None = None
|
||||
self.e_coeffs: np.ndarray | None = None
|
||||
self.meta: Dict[str, Any] = {}
|
||||
|
||||
def _init_global_poles(self, freqs: np.ndarray) -> np.ndarray:
|
||||
f_min, f_max = freqs.min(), freqs.max()
|
||||
# 使用对数均匀分布 (排除 0) + 负实部保证稳定
|
||||
f_samples = np.logspace(np.log10(max(f_min, freqs[1] if len(freqs) > 1 else f_min*1.1)), np.log10(f_max), self.cfg.n_poles)
|
||||
# 极点: -σ + j 2π f_k
|
||||
sigma = self.cfg.damping * 2 * np.pi * f_max
|
||||
poles = -sigma + 1j * 2 * np.pi * f_samples
|
||||
return poles
|
||||
|
||||
# ----------------- 内部工具函数 (前置以便类型检查) -----------------
|
||||
def _build_frequency_matrix(self, p_vec: np.ndarray, poles: np.ndarray) -> np.ndarray:
|
||||
K = len(poles)
|
||||
F_base = np.zeros((len(p_vec), K + 2), dtype=complex)
|
||||
for k, a_k in enumerate(poles):
|
||||
F_base[:, k] = 1.0 / (p_vec - a_k)
|
||||
F_base[:, K] = 1.0
|
||||
F_base[:, K + 1] = p_vec
|
||||
return F_base
|
||||
|
||||
def _solve_residues_given_poles(self, aligned_S: List[np.ndarray], p_vec: np.ndarray):
|
||||
assert self.poles is not None, "Poles not initialized"
|
||||
nports = aligned_S[0].shape[1]
|
||||
Ns = len(aligned_S)
|
||||
K = len(self.poles)
|
||||
residues_samples = np.zeros((nports, nports, K, Ns), dtype=complex)
|
||||
d_samples = np.zeros((nports, nports, Ns), dtype=complex)
|
||||
e_samples = np.zeros((nports, nports, Ns), dtype=complex)
|
||||
F_base = self._build_frequency_matrix(p_vec, self.poles)
|
||||
for s_idx, Sdata in enumerate(aligned_S):
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
y = Sdata[:, i, j]
|
||||
x, *_ = np.linalg.lstsq(F_base, y, rcond=None)
|
||||
residues_samples[i, j, :, s_idx] = x[:K]
|
||||
d_samples[i, j, s_idx] = x[K]
|
||||
e_samples[i, j, s_idx] = x[K+1]
|
||||
return residues_samples, d_samples, e_samples
|
||||
|
||||
def _select_characteristic_freqs(self, freqs: np.ndarray, S_list: List[np.ndarray], max_points: int,
|
||||
method: str = 'curvature', threshold: Optional[float] = None) -> np.ndarray:
|
||||
Nf = len(freqs)
|
||||
if max_points >= Nf:
|
||||
return np.arange(Nf)
|
||||
if method == 'uniform':
|
||||
idx = np.linspace(0, Nf-1, max_points, dtype=int)
|
||||
return np.unique(idx)
|
||||
mags = []
|
||||
for S in S_list:
|
||||
mags.append(np.mean(np.abs(S), axis=(1,2))) # (Nf,)
|
||||
agg = np.mean(np.stack(mags, axis=1), axis=1) # (Nf,)
|
||||
curv = np.zeros_like(agg)
|
||||
curv[1:-1] = np.abs(agg[2:] - 2*agg[1:-1] + agg[:-2])
|
||||
base = {0, Nf-1}
|
||||
if threshold is not None:
|
||||
cand = np.where(curv >= threshold)[0]
|
||||
else:
|
||||
order = np.argsort(-curv)
|
||||
cand = order
|
||||
selected = list(base)
|
||||
for idx in cand:
|
||||
if idx in base:
|
||||
continue
|
||||
selected.append(idx)
|
||||
if len(selected) >= max_points:
|
||||
break
|
||||
return np.array(sorted(selected))
|
||||
|
||||
def _vf_iterate_poles(self, aligned_S: List[np.ndarray], p_vec: np.ndarray,
|
||||
residues_samples: np.ndarray, d_samples: np.ndarray, e_samples: np.ndarray) -> np.ndarray:
|
||||
assert self.poles is not None, "Poles not initialized"
|
||||
nports = residues_samples.shape[0]
|
||||
K = len(self.poles)
|
||||
Ns = len(aligned_S)
|
||||
Nf = len(p_vec)
|
||||
n_pairs = nports * nports
|
||||
n_r = n_pairs * K
|
||||
n_c = K
|
||||
n_d = n_pairs
|
||||
n_e = n_pairs
|
||||
total_unknowns = n_r + n_c + n_d + n_e
|
||||
rows = Ns * Nf * n_pairs
|
||||
A = np.zeros((rows, total_unknowns), dtype=complex)
|
||||
b = np.zeros(rows, dtype=complex)
|
||||
def pair_index(i,j):
|
||||
return i*nports + j
|
||||
row = 0
|
||||
for s_idx, Sdata in enumerate(aligned_S):
|
||||
for f_idx, p in enumerate(p_vec):
|
||||
denom = p - self.poles
|
||||
basis_freq = 1.0/denom
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
H = Sdata[f_idx, i, j]
|
||||
b[row] = H
|
||||
pair = pair_index(i,j)
|
||||
r_offset = pair*K
|
||||
A[row, r_offset:r_offset+K] = basis_freq
|
||||
A[row, n_r:n_r+K] = -H * basis_freq
|
||||
A[row, n_r + n_c + pair] = 1.0
|
||||
A[row, n_r + n_c + n_d + pair] = p
|
||||
row += 1
|
||||
x, *_ = np.linalg.lstsq(A, b, rcond=None)
|
||||
c_k = x[n_r:n_r+n_c]
|
||||
poly_total = np.poly(self.poles)
|
||||
acc = poly_total.copy()
|
||||
for k in range(K):
|
||||
others = [self.poles[m] for m in range(K) if m != k]
|
||||
term = c_k[k] * np.poly(others)
|
||||
acc = np.polyadd(acc, term)
|
||||
new_poles = np.roots(acc)
|
||||
return new_poles
|
||||
|
||||
def fit(self, dataset: List[ModelBasicDatasetUnit], network_loader=Capa.network):
|
||||
# 载入所有 Network
|
||||
networks: List[Network] = []
|
||||
W_list, L_list = [], []
|
||||
for unit in dataset:
|
||||
net = network_loader(unit.result_dir, unit.id)
|
||||
networks.append(net)
|
||||
W_list.append(unit.parameters["W"])
|
||||
L_list.append(unit.parameters["L"])
|
||||
assert len(networks) > 0, "Empty dataset"
|
||||
# 处理不同频率点数量: 取公共重叠频段并插值到统一网格
|
||||
freqs_list = [n.f for n in networks]
|
||||
f_start = max(f[0] for f in freqs_list)
|
||||
f_stop = min(f[-1] for f in freqs_list)
|
||||
if f_stop <= f_start:
|
||||
raise ValueError("No overlapping frequency range among networks")
|
||||
# 选择基准网格: 使用第一个网络在重叠区间内的频点, 若其它网络缺该点则插值
|
||||
base_freqs = networks[0].f
|
||||
mask = (base_freqs >= f_start) & (base_freqs <= f_stop)
|
||||
freqs = base_freqs[mask]
|
||||
# 如果其它网络点数差异较大, 可选: 统一稠密度 (这里只在差异>5%时使用最小长度网格)
|
||||
for f in freqs_list[1:]:
|
||||
# 判断差异比例
|
||||
if abs(len(f) - len(freqs)) / max(len(freqs),1) > 0.2:
|
||||
# 使用所有网络在重叠区间内最少点数, 构造等间距网格
|
||||
n_common = min(len(ff[(ff>=f_start)&(ff<=f_stop)]) for ff in freqs_list)
|
||||
freqs = np.linspace(f_start, f_stop, n_common)
|
||||
warnings.warn("Frequency grids differ significantly; using uniform linspace for interpolation.")
|
||||
break
|
||||
# 对每个网络插值到 freqs (实部/虚部分开线性插值)
|
||||
aligned_S = [] # List[(Nf, nports, nports)]
|
||||
for net in networks:
|
||||
f_src = net.f
|
||||
# 获取在目标范围内原始数据 (若后面改用插值网格不同于原点, 仍需完整插值)
|
||||
S_src = net.s # (Nf_src, nports, nports)
|
||||
nports = net.nports
|
||||
if not np.array_equal(f_src, freqs):
|
||||
# 线性插值 (对每个端口对实部与虚部)
|
||||
S_interp = np.zeros((len(freqs), nports, nports), dtype=complex)
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
y = S_src[:, i, j]
|
||||
# numpy.interp 需要单调递增; 为类型检查器显式转为 np.ndarray
|
||||
y_arr = np.asarray(y)
|
||||
y_real = np.real(y_arr)
|
||||
y_imag = np.imag(y_arr)
|
||||
real_part = np.interp(freqs, f_src, y_real)
|
||||
imag_part = np.interp(freqs, f_src, y_imag)
|
||||
S_interp[:, i, j] = real_part + 1j * imag_part
|
||||
aligned_S.append(S_interp)
|
||||
else:
|
||||
aligned_S.append(S_src[mask] if len(S_src)==len(base_freqs) and mask.sum()!=len(base_freqs) else S_src)
|
||||
self.frequencies = freqs
|
||||
nports = networks[0].nports
|
||||
Ns = len(networks)
|
||||
# 参数正交基
|
||||
self.basis = OrthonormalParamBasis(np.array(W_list), np.array(L_list), self.cfg.param_total_degree)
|
||||
Phi = self.basis.phi_matrix() # (Ns, Q)
|
||||
Qn = Phi.shape[1]
|
||||
# (可选) 特征频率子采样
|
||||
if self.cfg.max_freq_points is not None and len(freqs) > self.cfg.max_freq_points:
|
||||
sel_idx = self._select_characteristic_freqs(freqs, aligned_S, self.cfg.max_freq_points,
|
||||
method=self.cfg.freq_selection_method,
|
||||
threshold=self.cfg.curvature_threshold)
|
||||
freqs = freqs[sel_idx]
|
||||
aligned_S = [S[sel_idx, :, :] for S in aligned_S]
|
||||
if self.cfg.verbose:
|
||||
warnings.warn(f"Frequency reduced to {len(freqs)} points (method={self.cfg.freq_selection_method}).")
|
||||
# 初始化极点
|
||||
self.poles = self._init_global_poles(freqs)
|
||||
p_vec = 1j * 2 * np.pi * freqs
|
||||
# 首次求解残值
|
||||
residues_samples, d_samples, e_samples = self._solve_residues_given_poles(aligned_S, p_vec)
|
||||
# 极点迭代 (简化共享极点 VF)
|
||||
if self.cfg.vf_iterations > 0:
|
||||
for it in range(self.cfg.vf_iterations):
|
||||
new_poles = self._vf_iterate_poles(aligned_S, p_vec, residues_samples, d_samples, e_samples)
|
||||
# 反射不稳定极点
|
||||
new_poles = np.array([p if p.real < 0 else complex(-p.real, p.imag) for p in new_poles])
|
||||
# 去重: 近似重复 (距离 < 1e-3 * |p|) 过滤
|
||||
filtered = []
|
||||
for p in new_poles:
|
||||
if all(abs(p - q) > 1e-3*max(1.0, abs(p)) for q in filtered):
|
||||
filtered.append(p)
|
||||
if self.cfg.verbose:
|
||||
print(f"[VF-Iter {it+1}] poles -> {len(filtered)} kept")
|
||||
self.poles = np.array(filtered, dtype=complex)
|
||||
p_vec = 1j * 2 * np.pi * freqs
|
||||
residues_samples, d_samples, e_samples = self._solve_residues_given_poles(aligned_S, p_vec)
|
||||
# 在参数基上再拟合: 由于 Phi 正交, 系数 = Phi^H * values
|
||||
PhiH = Phi.conj().T # (Q, Ns)
|
||||
K = self.poles.shape[0]
|
||||
self.residue_coeffs = np.zeros((nports, nports, K, Qn), dtype=complex)
|
||||
self.d_coeffs = np.zeros((nports, nports, Qn), dtype=complex)
|
||||
self.e_coeffs = np.zeros((nports, nports, Qn), dtype=complex)
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
for k in range(K):
|
||||
vk = residues_samples[i, j, k, :] # (Ns,)
|
||||
self.residue_coeffs[i, j, k, :] = PhiH @ vk
|
||||
self.d_coeffs[i, j, :] = PhiH @ d_samples[i, j, :]
|
||||
self.e_coeffs[i, j, :] = PhiH @ e_samples[i, j, :]
|
||||
# 简单误差评估 (训练点重建 RMS)
|
||||
F_base = self._build_frequency_matrix(p_vec, self.poles)
|
||||
train_rms = self._compute_training_rms(residues_samples, d_samples, e_samples, F_base, aligned_S)
|
||||
self.meta['train_rms'] = train_rms
|
||||
self.meta['nports'] = nports
|
||||
self.meta['Ns'] = Ns
|
||||
self.meta['Q'] = Qn
|
||||
return self
|
||||
|
||||
def _compute_training_rms(self, residues_samples, d_samples, e_samples, F_base, original_S_list):
|
||||
"""计算每个样本的平均端口对 RMS 误差。"""
|
||||
nports = residues_samples.shape[0]
|
||||
K = residues_samples.shape[2]
|
||||
Ns = residues_samples.shape[3]
|
||||
Nf = F_base.shape[0]
|
||||
rms = []
|
||||
for s in range(Ns):
|
||||
err_sq_sum = 0.0
|
||||
count = 0
|
||||
S_ref = original_S_list[s]
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
x = np.concatenate([
|
||||
residues_samples[i, j, :, s],
|
||||
[d_samples[i, j, s], e_samples[i, j, s]]
|
||||
]) # (K+2,)
|
||||
y_hat = F_base @ x # (Nf,)
|
||||
y_ref = S_ref[:, i, j]
|
||||
err = y_ref - y_hat
|
||||
err_sq_sum += np.mean(np.abs(err)**2)
|
||||
count += 1
|
||||
rms.append(np.sqrt(err_sq_sum / max(count,1)))
|
||||
return rms
|
||||
|
||||
def evaluate(self, W: float, L: float, freqs: np.ndarray | None = None) -> np.ndarray:
|
||||
"""返回插值后的 S 参数 (Nf, nports, nports)。"""
|
||||
assert self.frequencies is not None and self.poles is not None
|
||||
assert self.basis is not None
|
||||
assert self.residue_coeffs is not None and self.d_coeffs is not None and self.e_coeffs is not None, "Model not fitted"
|
||||
if freqs is None:
|
||||
freqs = self.frequencies
|
||||
# 若请求频率网格不同, 需要重建频率矩阵
|
||||
p_vec = 1j * 2 * np.pi * freqs
|
||||
K = len(self.poles)
|
||||
nports = self.residue_coeffs.shape[0]
|
||||
phi = self.basis.eval(W, L) # (Q,)
|
||||
# 预分配
|
||||
S_eval = np.zeros((len(freqs), nports, nports), dtype=complex)
|
||||
denom_cache = np.zeros((len(freqs), K), dtype=complex)
|
||||
for k, a_k in enumerate(self.poles):
|
||||
denom_cache[:, k] = 1.0 / (p_vec - a_k)
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
# 恢复参数依赖的残值/常数/斜率
|
||||
r_k = (self.residue_coeffs[i, j, :, :] @ phi) # (K,)
|
||||
d = self.d_coeffs[i, j, :] @ phi
|
||||
e = self.e_coeffs[i, j, :] @ phi
|
||||
Hf = denom_cache @ r_k + d + p_vec * e # (Nf,)
|
||||
S_eval[:, i, j] = Hf
|
||||
return S_eval
|
||||
|
||||
def export_s2p(self, W: float, L: float, filepath: str, freqs: np.ndarray | None = None, z0: float | complex = 50) -> str:
|
||||
"""在给定几何参数 (W,L) 下计算 S 并写入 Touchstone (.sNp) 文件。
|
||||
|
||||
参数:
|
||||
W, L: 几何参数
|
||||
filepath: 目标文件完整路径, 可包含或不包含 .s2p/.sNp 后缀
|
||||
freqs: 可选自定义频率数组 (需在训练频率范围内); 默认使用训练频率
|
||||
z0: 端口参考阻抗 (标量或与端口数相同长度可扩展)
|
||||
|
||||
返回:
|
||||
实际写入的文件路径
|
||||
"""
|
||||
assert self.frequencies is not None, "Model not fitted"
|
||||
S_eval = self.evaluate(W, L, freqs)
|
||||
if freqs is None:
|
||||
freqs = self.frequencies
|
||||
nports = S_eval.shape[1]
|
||||
freqs_arr = np.asarray(freqs)
|
||||
# 构建 Network 对象
|
||||
ntw = rf.Network(f=freqs_arr, s=S_eval, z0=z0)
|
||||
# 解析输出路径
|
||||
import os
|
||||
base_dir = os.path.dirname(filepath) or '.'
|
||||
os.makedirs(base_dir, exist_ok=True)
|
||||
base_name = os.path.basename(filepath)
|
||||
# 去掉可能已有的扩展名, 由 skrf 自动加 .sNp
|
||||
if '.' in base_name:
|
||||
base_name = '.'.join(base_name.split('.')[:-1]) or base_name
|
||||
# 写文件
|
||||
ntw.write_touchstone(base_name, dir=base_dir)
|
||||
# 构造最终文件名 (.sNp)
|
||||
final_path = os.path.join(base_dir, f"{base_name}.s{nports}p")
|
||||
return final_path
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
'config': self.cfg.__dict__,
|
||||
'frequencies': self.frequencies.tolist() if self.frequencies is not None else None,
|
||||
'poles': self.poles.tolist() if self.poles is not None else None,
|
||||
'basis': {
|
||||
'W_mean': getattr(self.basis, 'W_mean', None),
|
||||
'W_std': getattr(self.basis, 'W_std', None),
|
||||
'L_mean': getattr(self.basis, 'L_mean', None),
|
||||
'L_std': getattr(self.basis, 'L_std', None),
|
||||
'exps': getattr(self.basis, 'exps', None),
|
||||
'R': (lambda _R: _R.tolist() if _R is not None else None)(getattr(self.basis, 'R', None)),
|
||||
},
|
||||
'residue_coeffs': self.residue_coeffs.tolist() if self.residue_coeffs is not None else None,
|
||||
'd_coeffs': self.d_coeffs.tolist() if self.d_coeffs is not None else None,
|
||||
'e_coeffs': self.e_coeffs.tolist() if self.e_coeffs is not None else None,
|
||||
'meta': self.meta,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def from_dict(data: Dict[str, Any]) -> 'ParametricVectorFitting':
|
||||
cfg = ParametricVFConfig(**data['config'])
|
||||
obj = ParametricVectorFitting(cfg)
|
||||
obj.frequencies = np.array(data['frequencies']) if data['frequencies'] is not None else None
|
||||
obj.poles = np.array(data['poles']) if data['poles'] is not None else None
|
||||
# 重建 basis (仅用于 eval); 重新构造 R_inv
|
||||
if data.get('basis') and data['basis']['R'] is not None:
|
||||
basis_stub = OrthonormalParamBasis(np.array([0.0, 1.0]), np.array([0.0, 1.0]), 1) # 占位
|
||||
basis_stub.W_mean = data['basis']['W_mean']
|
||||
basis_stub.W_std = data['basis']['W_std']
|
||||
basis_stub.L_mean = data['basis']['L_mean']
|
||||
basis_stub.L_std = data['basis']['L_std']
|
||||
basis_stub.exps = [tuple(e) for e in data['basis']['exps']]
|
||||
R = np.array(data['basis']['R'])
|
||||
basis_stub.R = R
|
||||
basis_stub.R_inv = np.linalg.inv(R)
|
||||
# Q 不需要 (仅用于训练点), 设为 None
|
||||
basis_stub.Q = None # type: ignore
|
||||
obj.basis = basis_stub
|
||||
if data.get('residue_coeffs') is not None:
|
||||
obj.residue_coeffs = np.array(data['residue_coeffs'])
|
||||
if data.get('d_coeffs') is not None:
|
||||
obj.d_coeffs = np.array(data['d_coeffs'])
|
||||
if data.get('e_coeffs') is not None:
|
||||
obj.e_coeffs = np.array(data['e_coeffs'])
|
||||
obj.meta = data.get('meta', {})
|
||||
return obj
|
||||
|
||||
# 划分
|
||||
def split_dataset(dataset: List[ModelBasicDatasetUnit], train_ratio: float = 0.7, shuffle: bool = True, seed: int = 0) -> Tuple[List[ModelBasicDatasetUnit], List[ModelBasicDatasetUnit]]:
|
||||
"""划分数据集 70% 训练 / 30% 测试 (默认可改)。"""
|
||||
ds = list(dataset)
|
||||
if shuffle:
|
||||
rng = np.random.default_rng(seed)
|
||||
rng.shuffle(ds)
|
||||
n_train = int(len(ds) * train_ratio)
|
||||
return ds[:n_train], ds[n_train:]
|
||||
|
||||
|
||||
def _interp_s_to_freqs(S: np.ndarray, f_src: np.ndarray, f_tgt: np.ndarray) -> np.ndarray:
|
||||
"""将 S(f_src) 线性插值到 f_tgt (复数分离实虚部)。"""
|
||||
if np.array_equal(f_src, f_tgt):
|
||||
return S
|
||||
nports = S.shape[1]
|
||||
S_new = np.zeros((len(f_tgt), nports, nports), dtype=complex)
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
y = S[:, i, j]
|
||||
real_part = np.interp(f_tgt, f_src, np.real(y))
|
||||
imag_part = np.interp(f_tgt, f_src, np.imag(y))
|
||||
S_new[:, i, j] = real_part + 1j * imag_part
|
||||
return S_new
|
||||
|
||||
|
||||
def evaluate_dataset(model: ParametricVectorFitting,
|
||||
subset: List[ModelBasicDatasetUnit],
|
||||
network_loader=Capa.network) -> Dict[str, Any]:
|
||||
"""对一个子集评估拟合质量,输出每样本与整体统计."""
|
||||
assert model.frequencies is not None
|
||||
freqs = model.frequencies
|
||||
results = []
|
||||
mag_err_db_all = []
|
||||
rms_all = []
|
||||
for unit in subset:
|
||||
net = network_loader(unit.result_dir, unit.id)
|
||||
S_ref = _interp_s_to_freqs(net.s, net.f, freqs) # (Nf, nports, nports)
|
||||
S_pred = model.evaluate(unit.parameters["W"], unit.parameters["L"], freqs)
|
||||
err = S_pred - S_ref
|
||||
rms = float(np.sqrt(np.mean(np.abs(err)**2)))
|
||||
# 幅度 dB 误差
|
||||
mag_ref_db = 20*np.log10(np.clip(np.abs(S_ref), 1e-15, None))
|
||||
mag_pred_db = 20*np.log10(np.clip(np.abs(S_pred), 1e-15, None))
|
||||
mag_err_db = float(np.mean(np.abs(mag_pred_db - mag_ref_db)))
|
||||
rms_all.append(rms)
|
||||
mag_err_db_all.append(mag_err_db)
|
||||
results.append({
|
||||
'id': unit.id,
|
||||
'W': unit.parameters['W'],
|
||||
'L': unit.parameters['L'],
|
||||
'rms': rms,
|
||||
'mag_err_db': mag_err_db
|
||||
})
|
||||
summary = {
|
||||
'count': len(subset),
|
||||
'rms_mean': float(np.mean(rms_all)) if rms_all else None,
|
||||
'rms_max': float(np.max(rms_all)) if rms_all else None,
|
||||
'mag_err_db_mean': float(np.mean(mag_err_db_all)) if mag_err_db_all else None,
|
||||
'mag_err_db_max': float(np.max(mag_err_db_all)) if mag_err_db_all else None,
|
||||
'details': results
|
||||
}
|
||||
return summary
|
||||
|
||||
|
||||
# 简要使用示例 (非执行):
|
||||
if __name__ == "__main__":
|
||||
|
||||
capa = Capa()
|
||||
capa.sweep()
|
||||
print("sweep finished")
|
||||
capa.export('capa_results.json')
|
||||
capa.clear()
|
||||
capa.load('capa_results.json')
|
||||
dataset = capa.results
|
||||
|
||||
# 70% 训练 / 30% 测试
|
||||
train_set, test_set = split_dataset(dataset, train_ratio=0.7, shuffle=True, seed=42)
|
||||
print(f"Train: {len(train_set)} Test: {len(test_set)}")
|
||||
|
||||
cfg = ParametricVFConfig(n_poles=10, param_total_degree=3, vf_iterations=2,
|
||||
max_freq_points=50)
|
||||
pvf = ParametricVectorFitting(cfg).fit(train_set)
|
||||
|
||||
train_metrics = evaluate_dataset(pvf, train_set)
|
||||
test_metrics = evaluate_dataset(pvf, test_set)
|
||||
|
||||
pvf.meta['train_eval'] = train_metrics
|
||||
pvf.meta['test_eval'] = test_metrics
|
||||
|
||||
def _print_metrics(title: str, m: Dict[str, Any]):
|
||||
print(f"[{title}] samples={m['count']}"
|
||||
f" RMS_mean={m['rms_mean']:.4e} RMS_max={m['rms_max']:.4e}"
|
||||
f" |Δ|dB_mean={m['mag_err_db_mean']:.3f}dB |Δ|dB_max={m['mag_err_db_max']:.3f}dB")
|
||||
|
||||
_print_metrics("TRAIN", train_metrics)
|
||||
_print_metrics("TEST", test_metrics)
|
||||
|
||||
# 示例:导出一个测试点的拟合结果为 s2p
|
||||
if test_set:
|
||||
sample = test_set[0]
|
||||
out_path = pvf.export_s2p(sample.parameters["W"], sample.parameters["L"], filepath='outputs/pvf_test_sample')
|
||||
print("Exported:", out_path)
|
||||
50
schemas/paramer.py
Normal file
50
schemas/paramer.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List,Union,Literal,Optional
|
||||
|
||||
class SimulationRequestUnit(BaseModel):
|
||||
user_id:int = Field(default=0)
|
||||
template_name:str = Field(default="em_interface_compound")
|
||||
template_version:str = Field(default="")
|
||||
cell_name:str = Field(default="capa")
|
||||
parameters:dict = Field(default={"W":10,"L":10})
|
||||
settings:dict = Field(default={})
|
||||
|
||||
class UuidResponseUnit(BaseModel):
|
||||
id:int
|
||||
user_id:Optional[int]
|
||||
template_name:str
|
||||
template_version:str
|
||||
cell_name:str
|
||||
status:Literal["pending","running","completed","failed"]
|
||||
parameters:dict
|
||||
settings:dict
|
||||
input_hash:str
|
||||
storage_type: str
|
||||
result_path:str
|
||||
started_at:str
|
||||
completed_at:str
|
||||
result_json:Optional[dict]
|
||||
error_message:Optional[str]
|
||||
failure_count:Optional[int]
|
||||
last_failed_at:Optional[str]
|
||||
cpu_usage:Optional[float]
|
||||
memory_usage:Optional[float]
|
||||
disk_usage:Optional[float]
|
||||
gpu_usage:Optional[float]
|
||||
node_name:Optional[str]
|
||||
jobs:Optional[List]
|
||||
results:Optional[List]
|
||||
created_at:str
|
||||
updated_at:str
|
||||
|
||||
class SimulationResponseUnit(BaseModel):
|
||||
template_name:str
|
||||
template_version:str
|
||||
template_id:int
|
||||
cell_name:str
|
||||
cell_id:int
|
||||
parameters:dict
|
||||
settings:dict
|
||||
input_hash:str
|
||||
status:str
|
||||
message:str
|
||||
125
test/lazy_evaulation.py
Normal file
125
test/lazy_evaulation.py
Normal file
@@ -0,0 +1,125 @@
|
||||
import numpy as np
|
||||
|
||||
class PhiBasisIterator:
|
||||
"""
|
||||
逐步生成有理正交 (类 Muntz-Laguerre) 基函数 φ_p(s) / (或复对产生两列) 的迭代器。
|
||||
|
||||
给定:
|
||||
s: 标量或数组 (复频率采样点) s = j*2*pi*f
|
||||
poles: 极点序列 (允许包含复共轭对). 约定:
|
||||
- 纯实极点按自身顺序出现: a = -alpha (alpha>0)
|
||||
- 复极点以正虚部在前, 紧跟其共轭: a = -σ + jω, a* = -σ - jω
|
||||
|
||||
迭代:
|
||||
每次 __next__ 返回一个 list:
|
||||
- 实极点 -> [φ_p(s)]
|
||||
- 复成对 -> [φ_p^(1)(s), φ_p^(2)(s)]
|
||||
使用时可把返回列表中函数 append 到总基函数数组中。
|
||||
|
||||
说明:
|
||||
这里实现的公式与用户原始代码意图相同, 但修正了:
|
||||
1) 原代码 sqrt(2*Re(a)) 在 Re(a)<0 (典型稳定极点) 下产生 NaN, 改为 alpha=-Re(a) >0.
|
||||
2) 原来在 __next__ 中使用 yield (非法); 改为标准迭代协议返回 list。
|
||||
3) 复极点的乘积与后续迭代用的累计乘积 product 分开维护。
|
||||
若需严格匹配论文中“多变量正交化”可再加数值正交 (QR) 步骤。
|
||||
|
||||
注意:
|
||||
本实现假设 poles 已排序; 若不确定, 可预处理把正虚部极点放在其共轭之前。
|
||||
"""
|
||||
def __init__(self, s, poles):
|
||||
self.s = np.asarray(s, dtype=complex) # (Nf,) 或标量
|
||||
self.poles = list(poles)
|
||||
self.k = 0 # 当前处理到第 k 个极点(或复对的首元素)
|
||||
self.N = len(self.poles)
|
||||
# 累计乘积 Π_{已完成的块} ( (s - a_i*)/(s + a_i) ) (复对时使用 (s - a)(s - a*) / (s + a)(s + a*))
|
||||
self.product = np.ones_like(self.s, dtype=complex)
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
if self.k >= self.N:
|
||||
raise StopIteration
|
||||
|
||||
a = self.poles[self.k]
|
||||
|
||||
# 复对: 需要检查正虚部并且下一个是共轭
|
||||
if np.iscomplex(a) and np.imag(a) > 0:
|
||||
if self.k + 1 >= self.N or not np.isclose(self.poles[self.k + 1], np.conj(a)):
|
||||
raise ValueError(f"极点序列中复极点 {a} 未紧跟其共轭, 请排序.")
|
||||
a_conj = self.poles[self.k + 1]
|
||||
sigma = -np.real(a) # >0
|
||||
alpha = sigma
|
||||
# (s + a)(s + a*) = (s + a)(s + conj(a))
|
||||
denom = (self.s + a) * (self.s + a_conj)
|
||||
# |a| 用于生成两组分子 (参考原代码的构造方式)
|
||||
r = np.abs(a)
|
||||
scale = np.sqrt(2 * alpha)
|
||||
|
||||
numerator1 = scale * (self.s - r)
|
||||
numerator2 = scale * (self.s + r)
|
||||
|
||||
phi1 = numerator1 / denom * self.product
|
||||
phi2 = numerator2 / denom * self.product
|
||||
|
||||
# 更新累计乘积用于后续阶次:
|
||||
# 对复对的“整体”传统一致写成 ((s - a)(s - a*) / (s + a)(s + a*))
|
||||
self.product = self.product * ((self.s - a) * (self.s - a_conj)) / denom
|
||||
|
||||
self.k += 2
|
||||
return [phi1, phi2]
|
||||
|
||||
else:
|
||||
# 实极点 (允许传入 float 或实部为负的 complex(实数))
|
||||
a_real = np.real(a)
|
||||
# 稳定极点: a_real < 0, 令 alpha = -a_real > 0
|
||||
if a_real >= 0:
|
||||
raise ValueError(f"实极点需要在左半平面 (负实部), 得到 {a_real}")
|
||||
alpha = -a_real
|
||||
scale = np.sqrt(2 * alpha)
|
||||
# Laguerre 风格: (s - alpha)/(s + alpha)
|
||||
numerator = scale * (self.s - alpha)
|
||||
denom = (self.s + alpha)
|
||||
phi = numerator / denom * self.product
|
||||
# 更新累计乘积
|
||||
self.product = self.product * (self.s - alpha) / (self.s + alpha)
|
||||
self.k += 1
|
||||
return [phi]
|
||||
|
||||
# ------------------ 辅助函数: 批量生成全部基函数 ------------------
|
||||
def generate_phi_basis(s, poles):
|
||||
"""
|
||||
返回一个 list, 其中包含依次生成的所有基函数 (按 real → 1 函数, complex pair → 2 函数).
|
||||
"""
|
||||
basis = []
|
||||
it = PhiBasisIterator(s, poles)
|
||||
for block in it:
|
||||
basis.extend(block)
|
||||
return basis
|
||||
|
||||
# ------------------ 示例与自测 ------------------
|
||||
if __name__ == "__main__":
|
||||
# 示例极点: 1 个实极点 (-1), 一个复对 (-2+0.5j, -2-0.5j), 再一个复对 (-3+1.2j, -3-1.2j)
|
||||
poles = [-0.005+500j, -0.005-500j, -0.012+1200j, -0.012-1200j]
|
||||
f = np.linspace(1e9, 1e11, 200) # 频率 (Hz)
|
||||
s = 1j * 2 * np.pi * f
|
||||
|
||||
basis_funcs = generate_phi_basis(s, poles)
|
||||
print(f"生成基函数数量 = {len(basis_funcs)}") # 实极点 1 →1, 两个复对 →2+2 共 5 个
|
||||
# 简单数值检查 (避免 NaN/Inf)
|
||||
for i, bf in enumerate(basis_funcs):
|
||||
if not np.all(np.isfinite(bf)):
|
||||
print(f"第 {i} 个基函数存在非有限值")
|
||||
else:
|
||||
# print(f"phi[{i}] max|.|={np.max(np.abs(bf)):.3e}, min|.|={np.min(np.abs(bf)):.3e}")
|
||||
print(f"phi[{i}] = {bf}")
|
||||
|
||||
# 验证是否为正交基
|
||||
for i, bf in enumerate(basis_funcs):
|
||||
print(f"phi[{i}]*phi[{i}] = {np.vdot(bf, bf)}") # 自身内积
|
||||
for j in range(i+1, len(basis_funcs)):
|
||||
bf2 = basis_funcs[j]
|
||||
ip = np.vdot(bf, bf2)
|
||||
print(f"phi[{i}] 与 phi[{j}] 内积 = {ip}")
|
||||
if np.abs(ip) > 1e-6:
|
||||
print(f"phi[{i}] 与 phi[{j}] 非正交, 内积={ip}")
|
||||
55
utils.py
Normal file
55
utils.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import requests
|
||||
import time
|
||||
from schemas.paramer import SimulationRequestUnit, SimulationResponseUnit, UuidResponseUnit
|
||||
import skrf as rf
|
||||
from typing import Literal
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
|
||||
def send_get_request(url):
|
||||
try:
|
||||
response = requests.get(url)
|
||||
response.raise_for_status() # Raise an error for bad responses
|
||||
return response.json()
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"An error occurred: {e}")
|
||||
return None
|
||||
|
||||
def get_network(file_path: str) -> rf.Network:
|
||||
network = rf.Network(file_path)
|
||||
return network
|
||||
|
||||
def get_rms_error(vf: rf.VectorFitting,parameter_type:Literal['s','y','z']):
|
||||
rms_error = []
|
||||
for i in range(vf.network.nports):
|
||||
rms_error_row = []
|
||||
for j in range(vf.network.nports):
|
||||
rms_error = vf.get_rms_error(i, j, parameter_type)
|
||||
rms_error_row.append(rms_error)
|
||||
rms_error.append(rms_error_row)
|
||||
return rms_error
|
||||
|
||||
def show_rms_error(vf: rf.VectorFitting,parameter_type:Literal['s','y','z'],show_plot:bool=True,save_path:str|None=None):
|
||||
freqs = vf.network.f
|
||||
nports = vf.network.nports
|
||||
fig, ax = plt.subplots(nports, nports)
|
||||
fig.set_size_inches(6*nports, 4*nports)
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
vf.plot("mag",0,1,freqs,ax=ax[i][j],parameter=parameter_type)
|
||||
fig.tight_layout()
|
||||
if show_plot:
|
||||
plt.show()
|
||||
if save_path:
|
||||
plt.savefig(save_path)
|
||||
|
||||
def remove_simulation_with_high_rms_error(simulations:list[rf.VectorFitting],limit:float=0.015,parameter_type:Literal['s','y','z']='s'):
|
||||
nports = simulations[0].network.nports
|
||||
index_of_filtered_simulations = []
|
||||
for res in simulations:
|
||||
for i in range(nports):
|
||||
for j in range(nports):
|
||||
rms_error = res.get_rms_error(i, j, parameter_type)
|
||||
if rms_error > limit:
|
||||
index_of_filtered_simulations.append(i*nports+j)
|
||||
break
|
||||
Reference in New Issue
Block a user