IndexError: index 10 is out of bounds for axis 0 with size 10
IndexError: index 10 is out of bounds for axis 0 with size 10
我在数字上为 x 网格和 x 向量以及时间网格设置了一个网格,但是我再次为 x
(位置)设置了一个数组,它应该只在 0 和20 和 t
(时间)将从 0 到 1000,因此为了求解热方程。但是每次我想要,例如,我将步数设置为 10,我都会得到一个错误:
"Traceback (most recent call last):
File "/home/universe/Desktop/Python/Heat_1.py", line 33, in <module>
x[i] = a + i*h
IndexError: index 10 is out of bounds for axis 0 with size 10"
这是我的代码:
from math import sin,pi
import numpy
import numpy as np
#Constant variables
N = int(input("Number of intervals in x (<=20):"))
M = int(input("Number of time steps (<=1000):" ))
#Some initialised varibles
a = 0.0
b = 1.0
t_min = 0.0
t_max = 0.5
# Array Variables
x = np.linspace(a,b, M)
t = np.linspace(t_min, t_max, M)
#Some scalar variables
n = [] # the number of x-steps
i, s = [], [] # The position and time
# Get the number of x-steps to use
for n in range(0,N):
if n > 0 or n <= N:
continue
# Get the number of time steps to use
for m in range(0,M):
if m > 0 or n <= M:
continue
# Set up x-grid and x-vector
h =(b-a)/n
for i in range(0,N+1):
x[i] = a + i*h
# Set up time-grid
k = (t_max - t_min)/m
for s in range(0, M+1):
t[s] = t_min + k*s
print(x,t)
您尝试索引超出范围:
for s in range(0, M+1):
t[s] = t_min + k*s
更改为:
for s in range(M):
t[s] = t_min + k*s
而且有效。
您创建 t
,长度为 M
:
t = np.linspace(t_min, t_max, M)
因此您只能访问 t
中的 M
个元素。
Python 总是从零开始索引。因此:
for s in range(M):
将执行 M
循环,同时:
for s in range(0, M+1):
将进行 M+1
循环。
我在数字上为 x 网格和 x 向量以及时间网格设置了一个网格,但是我再次为 x
(位置)设置了一个数组,它应该只在 0 和20 和 t
(时间)将从 0 到 1000,因此为了求解热方程。但是每次我想要,例如,我将步数设置为 10,我都会得到一个错误:
"Traceback (most recent call last):
File "/home/universe/Desktop/Python/Heat_1.py", line 33, in <module>
x[i] = a + i*h
IndexError: index 10 is out of bounds for axis 0 with size 10"
这是我的代码:
from math import sin,pi
import numpy
import numpy as np
#Constant variables
N = int(input("Number of intervals in x (<=20):"))
M = int(input("Number of time steps (<=1000):" ))
#Some initialised varibles
a = 0.0
b = 1.0
t_min = 0.0
t_max = 0.5
# Array Variables
x = np.linspace(a,b, M)
t = np.linspace(t_min, t_max, M)
#Some scalar variables
n = [] # the number of x-steps
i, s = [], [] # The position and time
# Get the number of x-steps to use
for n in range(0,N):
if n > 0 or n <= N:
continue
# Get the number of time steps to use
for m in range(0,M):
if m > 0 or n <= M:
continue
# Set up x-grid and x-vector
h =(b-a)/n
for i in range(0,N+1):
x[i] = a + i*h
# Set up time-grid
k = (t_max - t_min)/m
for s in range(0, M+1):
t[s] = t_min + k*s
print(x,t)
您尝试索引超出范围:
for s in range(0, M+1):
t[s] = t_min + k*s
更改为:
for s in range(M):
t[s] = t_min + k*s
而且有效。
您创建 t
,长度为 M
:
t = np.linspace(t_min, t_max, M)
因此您只能访问 t
中的 M
个元素。
Python 总是从零开始索引。因此:
for s in range(M):
将执行 M
循环,同时:
for s in range(0, M+1):
将进行 M+1
循环。