如何迭代计算依赖前序结果的get_wf函数(t∈(0,π),步长0.05)
迭代调用
get_wf的简便实现方法 方法一:基于Numpy生成序列的循环(最直观)
利用numpy.arange直接生成所有需要的t值,通过循环迭代更新波函数,同时可将所有结果存入列表方便后续使用:
import numpy as np # 初始化初始波函数 current_wf = get_wf_0(xmin, xmax, Nx, neigs, t=0) # 存储所有迭代结果,先存入初始值 wf_results = [current_wf] # 生成0.05到π(不包含π)、步长为0.05的t序列 t_steps = np.arange(0.05, np.pi, 0.05) for t in t_steps: # 用当前波函数调用get_wf,更新current_wf current_wf = get_wf(xmin, xmax, Nx, neigs, t=t, wf=current_wf) wf_results.append(current_wf)
方法二:纯Python循环(无需Numpy)
如果不想依赖Numpy,可通过while循环手动累加t值,注意处理浮点数精度问题:
import math current_wf = get_wf_0(xmin, xmax, Nx, neigs, t=0) wf_results = [current_wf] t = 0.05 # 加1e-8容差避免浮点数精度导致的提前终止 while t < math.pi + 1e-8: current_wf = get_wf(xmin, xmax, Nx, neigs, t=t, wf=current_wf) wf_results.append(current_wf) t += 0.05
额外提示
- 如果不需要保留所有历史波函数结果,仅需跟踪当前值,可去掉
wf_results列表,直接更新current_wf即可,节省内存。 - 浮点数累加可能存在精度误差,多次累加0.05后最终值可能略大于π,添加容差判断(如
+1e-8)可避免漏掉接近π的最后一次迭代。
内容的提问来源于stack exchange,提问作者ilra
相关产品推荐
相关产品推荐

