Python中如何从for循环生成梯形法积分S值的序列列表
你只需要新增一个空列表存储每次迭代得到的S值即可,修改后的完整代码如下:
import math def trap(f,a,b): return ( f(a) + f(b) ) / 2 * (b-a) a = 0 b = 2 n_vals = [2**p for p in range(0,21)] h_vals = [(b-a)/n for n in n_vals] f = lambda x: math.exp(x) + x**2 # 初始化空列表存储积分结果 I = [] for n,h in zip(n_vals,h_vals): S = 0 for k in range(n): thisA = a + k*h thisB = a + (k+1)*h S += trap(f, thisA, thisB) # 把当前计算得到的S加入列表 I.append(S) print(f"Integral for {n} partitions = {S}") # 打印你需要的格式的结果列表 print(I)
改动点说明:
- 遍历n_vals的循环开始前,新增初始化空列表
I = [] - 每次循环内计算完当前分区对应的S值后,调用
I.append(S)将结果存入列表 - 所有迭代完成后
I就是你要求格式的S值序列,可直接调用。
内容的提问来源于stack exchange,提问作者Ryan McAree
相关产品推荐
相关产品推荐

