Julia积分增量输出问题:如何输出每个φ值的积分结果?
问题修复方案
原代码的问题点
- 包导入位置错误:
using QuadGK放在循环里会重复导入,应该移到代码最开头;using Ranges完全多余,Julia内置了range函数。 - 被积函数定义错误:把积分变量和循环的上限变量都用了
ϕ,导致变量混淆,被积函数的变量应该是积分过程中的自变量(比如x)。 - 输出语句位置错误:
println(I, est)在循环外部,只能打印最后一次循环的结果,需要放到循环内部。 - 函数重复定义:每次循环都重新定义
f(ϕ),完全没必要,应该把函数定义在循环外。
修复后的代码
using QuadGK # 定义被积函数,x是积分变量 f(x) = x * (cos(x) / sin(x)) # 遍历每个积分上限ϕ for ϕ in range(start=1, stop=2.4, step=0.2) a = 0 b = ϕ I, est = quadgk(f, a, b, rtol=1e-8) # 打印当前ϕ对应的积分结果和误差估计 println("ϕ = ", round(ϕ, digits=2), " 积分结果:", I, " 误差估计:", est) end
代码说明
- 提前导入
QuadGK包,只需要导入一次。 - 被积函数
f(x)明确用x作为积分变量,避免和循环中的上限变量ϕ混淆。 - 循环内计算每个
ϕ对应的积分后,立刻打印结果,这样就能输出每个步长下的数值。 - 用
round(ϕ, digits=2)让输出的ϕ值更整齐(比如1.0、1.2等)。
内容的提问来源于stack exchange,提问作者user167195
相关产品推荐
相关产品推荐

