【发布时间】:2013-11-05 01:18:45
【问题描述】:
我有以下积分方程:
我正在尝试求解积分方程以查看 f(u) 是否被预测为 cos(2u)。因为我们知道积分方程的解是 cos(2u),所以我们可以将积分从 0 到无穷大逼近到极限 0,也就是说,如果我们使从 5 到无穷大的积分值可以忽略不计,则可以说 5,这可以通过选择小来完成。我为 0 到 5 之间的积分选择了 100 个评估点,这意味着我正在求解 100 个 f(u) 值。由于我需要求解 100 个 f(u) 值,因此我需要生成 100 个方程,因此需要 100 个时间 t 值。我在 1 到 1.3 之间为时间 t 选择 100 个值,因为这将确保积分对于 5 及以上的值可以忽略不计。以下是执行此操作的 scipy 代码:
from scipy import*
from matplotlib.pyplot import*
Nt_samples=100 #100 evaluation points for the time t
t=linspace(1.0,1.3,100)
number_eval_points=100 #100 evaluation points for u
eval_points=linspace(0.005,5,number_eval_points)
delta=eval_points[1]-eval_points[0]
R=zeros(100,1)
R=0.5*sqrt(2*3.14)*t*exp(-2*t*t)
A=zeros((Nt_samples,number_eval_points))
for i in range(100):
for j in range(100):
A[i,j]=delta*exp(-(eval_points[j]*eval_points[j])/(2*(t[i]*t[i])))
Z=cos(2*eval_points)
Fu=dot(linalg.inv(A),R)
plot(eval_points,Fu,eval_points,Z)
不知何故,我对 f(u) 的结果与 cos(2u) 相去甚远。 事实上,它们看起来像很多随机噪声,根本不遵循任何模式!此外,f(u) 的大小非常大。我试过玩弄评估点的数量和 t 的值,但我没有运气。
参数/逻辑的代码/设置有什么问题吗?
谢谢一百万!
【问题讨论】:
-
我不确定这是否是您的问题,但您知道
3.14 != pi吗?当我看到人们使用它时,我总是畏缩。我实际上花了一个星期调试为什么我写的一个程序没有给出与旧版本代码相同的输出,那是因为旧版本使用的是 3.14。你应该用math.pi替换它。 -
另一个问题可能是 100 不够接近无穷大。您是否尝试过 1000 或 10000 并查看图是否开始彼此相似?
-
@SethMorton:10000 或 10000 点也没有运气:(
标签: python scipy integration equation