import numpy as npimport pandas as pdimport secrets # 近似真随机import os# 指定数据存储路径save_path = 'e:\\develop\\save'os.makedirs(save_path, exist_ok=True)# 宇宙半径,取较小的数值,输出验证,真正的宇宙N值可能取光速的值,但是这太大数无法计算。N = 8 # 用Python程序可以简略输出验证,下面输出结果验证了N为3的情况,刷新N次,刷新的次数。m = int(2 * np.pi * N) # 螺旋的节数 四维的螺距节数应该是球面面积的2*π*R 角度范围,反应宇宙的螺旋覆盖超球面的程度。201num_points = int(4 * np.pi * N**2) # 这个其实是超球体面积公式4*π*R^2)超球体面积公式前面帖子有论述,这个值是角度坐标的均分次数。也就是空间坐标个数。反应宇宙的模拟平滑程度。theta = np.linspace(0, m * np.pi, num_points) # 角度范围,m是节数phi = np.linspace(0, 2 * np.pi, num_points) # 球面角度范围# 球面螺旋线方程坐标定义r = N# 定义相位取值和对应的概率k_values = [0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi]# 刷新次数num_refreshes = num_points# 初始化数据框columns = ['SN', 'i', 'x', 'y', 'z', 'u']all_data = pd.DataFrame(columns=columns)# 读取上次的最后一次数据last_refresh_file = os.path.join(save_path, 'last_refresh.xlsx')try: last_data = pd.read_excel(last_refresh_file) num_points = len(last_data) u = last_data['u'].values x = last_data['x'].values y = last_data['y'].values z = last_data['z'].valuesexcept FileNotFoundError: # 初始量子场值 u = np.zeros(num_points, dtype=int) x = np.zeros(num_points) y = np.zeros(num_points) z = np.zeros(num_points)# 开始刷新循环for refresh in range(num_refreshes): # 量子场值计算 for i in range(1, num_points): random_number = secrets.randbelow(100) / 100.0 if random_number <= 1 / 8:#量子概率叠加 k = k_values[0] elif random_number <= 2 / 8: k = k_values[1] elif random_number <= 3 / 8: k = k_values[2] elif random_number <= 4 / 8: k = k_values[3] else: k = k_values[4] # 更新量子场值 m = 0 label = True ii = 0 # 进位标注,进位刷新 while label: j = (i + m) % num_points # 使用模运算避免超出索引范围 if (u[j] + np.sin(k) + ii) > 1: if u[j] + np.sin(k)==-1 or u[j] + ii==-1 or np.sin(k) + ii==-1: u[j] = u[j] + np.sin(k)+ii else: u[j] = u[j] + np.sin(k) + ii - 2 ii = 1 m = m + 1 elif (u[j] + np.sin(k) + ii) < -1: if u[j] + np.sin(k) == 1 or u[j] + ii == 1 or np.sin(k) + ii==1: u[j] = u[j] + np.sin(k)+ii else: u[j] = u[j] + np.sin(k) + ii + 2 ii = -1 m = m + 1 else: u[j] = u[j] + np.sin(k) + ii m = m + 1 ii=0 label = False break # 重新计算坐标(四维螺旋方程,α,β,γ旋转角,类似我们三维时空能体会的笛卡尔坐标xyz轴,w可以看着与时间有关的轴。) x = r * np.sin(phi) * np.cos(theta) y = r * np.sin(phi) * np.sin(theta) z = r * np.cos(phi) # 并存储数据 data = [] for i in range(num_points): data.append([refresh + 1, i, x[i], y[i], z[i], u[i]]) df = pd.DataFrame(data, columns=columns) # 将 NA 和空值替换为 0 df = df.fillna(0) all_data = pd.concat([all_data, df], ignore_index=True) print(f"Refresh {refresh + 1}: Generated {num_points} sets of 4D coordinates.") # 如果是最后一次刷新,保存数据到单独的文件中 if refresh == num_refreshes - 1: last_refresh_data = df# 将数据保存到 Excel 文件中(覆盖保存)refresh_data_file = os.path.join(save_path, 'refresh_data.xlsx')all_data.to_excel(refresh_data_file, index=False)# 保存最后一次刷新数据last_refresh_file = os.path.join(save_path, 'last_refresh.xlsx')last_refresh_data.to_excel(last_refresh_file, index=False)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件举报,一经查实,本站将立刻删除。