Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Python模块中的循环_Python_Function_Module_For Loop_Numpy - Fatal编程技术网

用于Python模块中的循环

用于Python模块中的循环,python,function,module,for-loop,numpy,Python,Function,Module,For Loop,Numpy,我在为一个隐式格式写一个函数,用来解一个特殊的微分方程。函数如下所示: 将numpy导入为np def方案(N,T): 隐式格式的y=np.zeros(N+1)#数组 h=T/N#步长 对于范围(N)中的i: y[i+1]=y[i]+h*(1+4*y[i]) 打印y 我保存文件,然后以通常的方式导入它,但是当我运行scheme函数时,y=[0…0]其中…是N-1零。这些值似乎丢失在for循环的范围内 如果我改为在解释器中编写整个函数(在我的例子中是Spyder),那么一切都会正常工作 为什么从

我在为一个隐式格式写一个函数,用来解一个特殊的微分方程。函数如下所示:

将numpy导入为np
def方案(N,T):
隐式格式的y=np.zeros(N+1)#数组
h=T/N#步长
对于范围(N)中的i:
y[i+1]=y[i]+h*(1+4*y[i])
打印y
我保存文件,然后以通常的方式导入它,但是当我运行scheme函数时,
y=[0…0]
其中
N-1
零。这些值似乎丢失在for循环的范围内

如果我改为在解释器中编写整个函数(在我的例子中是Spyder),那么一切都会正常工作

为什么从模块导入函数时不起作用

h = T/N 
是否可能
T
N
都是整数和
T
?在这种情况下,
h=0
(并且
y
保持全零),因为它是一个整数除法(
1/2==0

试着把这条线换成

h = 1. * T / N 
看看结果

y[i+1] = y[i] + h*(1+4*y[i])
可以重写为

y[i+1] = y[i] + h + 4 * h * y[i]
               ^^^
这意味着对于
y[i]=0
,新的
y[i+1]
将是
h
。如果整数除法
T/N
使其为零,则得到的结果就是零

是否可能
T
N
都是整数和
T
?在这种情况下,
h=0
(并且
y
保持全零),因为它是一个整数除法(
1/2==0

试着把这条线换成

h = 1. * T / N 
看看结果

y[i+1] = y[i] + h*(1+4*y[i])
可以重写为

y[i+1] = y[i] + h + 4 * h * y[i]
               ^^^

这意味着对于
y[i]=0
,新的
y[i+1]
将是
h
。如果整数除法
T/N
使其为零,则得到的结果就是零。

通常,如果在python中除法两个整数,则整数也将向负无穷大舍入。 所以

在您的示例中,如果T和N是整数且T
float(1)/3 == 0.333
就你而言:

h = float(T)/N 
虽然不熟悉Spyder,但快速查看文档表明,它是为科学家设计的。
可能这个解释器总是使用浮点除法。

通常,如果在python中对两个整数进行除法,那么整数也将向负无穷大舍入。 所以

在您的示例中,如果T和N是整数且T
float(1)/3 == 0.333
就你而言:

h = float(T)/N 
虽然不熟悉Spyder,但快速查看文档表明,它是为科学家设计的。
可能这个解释器总是使用浮点除法。

y
在每次调用
scheme
时都会初始化;这完全是意料之中的。@莱姆,你所说的
值在for循环的范围内丢失是什么意思?
y
在每次调用
scheme
时都会初始化;这完全是意料之中的。@lame,您所说的在for循环的范围内丢失值是什么意思?