import numpy as np from dataclasses import dataclass from typing import List, Dict, Tuple def generate_starting_poles(n_pairs: int, beta_min: float, beta_max: float, alpha_scale: float = 0.01): """ 仅生成复共轭对: p = -alpha + j beta, p*。 n_pairs: 复对数量 (总极点数 = 2*n_pairs) beta_min,beta_max: 想要覆盖的虚部范围 (单位: rad/s) alpha_scale: alpha = alpha_scale * beta (文中 {α_p}=0.01{β_p}) 返回: list[complex] (正虚部先, 后跟共轭) """ betas = 2*np.pi*np.linspace(beta_min, beta_max, n_pairs) poles = [] for b in betas: alpha = alpha_scale * b p = -alpha + 1j * b poles += [p, np.conj(p)] print(f"生成 {len(poles)} 个初始极点 (复对) {poles}]") return poles