使用列表评估积分梯形规则
Evaluate integrals trapezoid rule using lists
我正在尝试从头开始编写梯形规则的公式。我对 python 还不是很熟悉,所以我有点吃力。我有一个我想整合的表达式,我把它写成一个名为 square 的列表。
我已经在写积分了:
square = [] #Create empty list
for i in range(0, len(dos)):
square.append(dos[i]*dist[i]) #Multiplication from inside the integral
s1 = 0
s2 = 0
for i in square[i] != square[1] and square[-1]:
s1 += s1 + 0.01 * square[i]
else:
s2 += s2 + 0.01 * 0.5 * square[i]
print(s1,s2)
我收到以下错误:
for i in square[i] != square[1] and square[-1]:
TypeError: 'float' object is not iterable
有人知道代码有什么问题吗?
提前致谢!
你需要 for
循环 和 if
语句然后,你还使用了 +=
所以你不需要添加s1
在右操作数中,因为这会将它加两次
# equivalent
s1 += square[i]
s1 = s1 + square[i]
s1 = 0
s2 = 0
for i in range(len(square)):
if square[i] != square[0] and square[i] != square[-1]:
s1 += 0.01 * square[i]
else:
s2 += 0.01 * 0.5 * square[i]
使用一些技巧来获得更简洁的代码
zip
创建 square
列表,迭代 dos
和 dist
列表
- 迭代
square
的元素而不是它的索引
- 使用
in
代替双重条件
square = [do * di for do, di in zip(dos, dist)]
s1 = 0
s2 = 0
for elt in square:
if elt not in (square[0], square[-1]):
s1 += 0.01 * elt
else:
s2 += 0.01 * 0.5 * elt
我正在尝试从头开始编写梯形规则的公式。我对 python 还不是很熟悉,所以我有点吃力。我有一个我想整合的表达式,我把它写成一个名为 square 的列表。
我已经在写积分了:
square = [] #Create empty list
for i in range(0, len(dos)):
square.append(dos[i]*dist[i]) #Multiplication from inside the integral
s1 = 0
s2 = 0
for i in square[i] != square[1] and square[-1]:
s1 += s1 + 0.01 * square[i]
else:
s2 += s2 + 0.01 * 0.5 * square[i]
print(s1,s2)
我收到以下错误:
for i in square[i] != square[1] and square[-1]:
TypeError: 'float' object is not iterable
有人知道代码有什么问题吗?
提前致谢!
你需要 for
循环 和 if
语句然后,你还使用了 +=
所以你不需要添加s1
在右操作数中,因为这会将它加两次
# equivalent
s1 += square[i]
s1 = s1 + square[i]
s1 = 0
s2 = 0
for i in range(len(square)):
if square[i] != square[0] and square[i] != square[-1]:
s1 += 0.01 * square[i]
else:
s2 += 0.01 * 0.5 * square[i]
使用一些技巧来获得更简洁的代码
zip
创建square
列表,迭代dos
和dist
列表- 迭代
square
的元素而不是它的索引 - 使用
in
代替双重条件
square = [do * di for do, di in zip(dos, dist)]
s1 = 0
s2 = 0
for elt in square:
if elt not in (square[0], square[-1]):
s1 += 0.01 * elt
else:
s2 += 0.01 * 0.5 * elt