我的代码是第二个ODE的Euller方法。我已经尝试用这种方式来定义f {def inicial(): 全球的 F =矩阵(M,N)} 但我在同一条线上遇到了问题。我不知道如何识别我的功能。
N=101
x_min = -10.0
x_max = 10.0;
dx = (x_max - x_min)/(N-1)
dt = 0.25*dx*dx
t=0
t_max = 1000
Q=1
j=0
M=2
f = [N , M]
def f_xx(i,t):
return ((f[i+1][t]-2*f[i][t]+f[i-1][t])/(dx*dx))
def guess(x):
return ((pi*Q/x_max)*x +(pi*Q))
for i in range (N):
for j in range(j):
x = x_min + i*dx
f[i][j] = guess(x)
for j in range(t_max+1):
for i in range(N-1):
x = x_min + i*dx
f[i][j+1] = f[i][j]+(f_xx(i,j)-sin(f[i][j]))*dt <<<error
for i in range (N-1):
f[i][j] = f[i][j+1]
什么意思'int'对象没有属性getitem?有人可以帮忙解决吗?
答案 0 :(得分:1)
[2015-10-31 18:16:55 - Lab5] Performing sync
[2015-10-31 18:16:55 - Lab5] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'Android'
[2015-10-31 18:16:55 - Lab5] Uploading Lab5.apk onto device 'emulator-5554'
[2015-10-31 18:16:56 - Lab5] Installing Lab5.apk...
[2015-10-31 18:17:06 - Lab5] Success!
[2015-10-31 18:17:06 - Lab5] /Lab5/bin/Lab5.apk installed on device
[2015-10-31 18:17:06 - Lab5] Done!
是一个包含两个整数的列表。 f
指的是第i个int;因此f[i]
将尝试获取int的第j个值,无论f[i][j]
的值是什么,它都不可能工作。
答案 1 :(得分:0)
您正在尝试将f用作列表列表(例如,像二维数组),但它实际上只是一个列表:[101,2]。
我在ODE上生锈,但我认为你试图创建一个0x的101x2网格。如果是这样,尝试f = [[0.0] * M表示范围(N)中的x]。