手动编写Python数值积分代码无输出,求问题排查与修正帮助
问题分析与修复方案
核心问题与修正点
- 未执行函数调用:代码仅定义了
Integrate函数,但没有触发函数执行并输出结果,这是无输出的直接原因。 - 变量名错误:循环中使用未初始化的
function变量累加函数值,应替换为已初始化的val变量。 - 积分逻辑错误:原代码中点计算使用
i-(1/2),会导致第一个采样点落在积分区间左侧之外(i=0时为负偏移),正确的中点偏移应为i+0.5,确保所有采样点在[a,b]区间内。 - 可选优化:混用
math.e和np.sin虽不报错,但统一使用numpy的np.exp可保持风格一致,避免模块混用的潜在问题。
修改后的完整代码
from math import * import numpy as np N = int(input("Enter value for how many sums you wish to perform: ")) a = float(input("Enter the lower integration bound: ")) b = float(input("Enter the higher integration bound: ")) def Integrate(N, a, b): def f(x): # 统一使用numpy的exp函数,替代math.e return x**2 * np.exp(-x) * np.sin(x) val = 0 h = (b - a) / N # 提前计算步长,提升可读性 for i in range(N): # 修正中点计算逻辑,累加值到val变量 val += f(a + (i + 0.5) * h) out = h * val return out # 调用积分函数并打印结果 integral_result = Integrate(N, a, b) print(f"数值积分结果:{integral_result}")
内容的提问来源于stack exchange,提问作者TSchoder
相关产品推荐
相关产品推荐

