我尝试使用时间积分的反向Euler方案重新实现热方程解算器,以下是实现的特定方程:
这是我的密码:
L = 1
Tfinal = 1
Nx = 20
Nt = 1000
x = np.linspace(0,L,Nx+1)
t = np.linspace(0,Tfinal,Nt+1)
dx = x[1]-x[0]
dt = t[1]-t[0]
F = dt/dx**2
u_temps = np.zeros(Nx+1)
u = np.zeros(Nx+1)
A = np.zeros((Nx+1,Nx+1))
b = np.zeros(Nx+1)
for i in range(Nx+1):
u_temps[i] = np.sin(x[i])
for i in range(1,Nx):
A[i,i-1] = -F
A[i,i] = -(1-2*F)
A[i,i+1] = -F
A[0,0] = A[Nx,Nx] = 1.
import scipy.linalg
# Compute the vector b
for n in range(Nt):
for i in range(1,Nx):
b[i] = u[i] + ((np.pi)**2-1)*np.exp(-t[n])*np.sin(np.pi*x[i])
b[0] = ((np.pi)**2-1)*np.exp(-t[n])*np.sin(np.pi*x[0])
b[Nx] = ((np.pi)**2-1)*np.exp(-t[n])*np.sin(np.pi*x[Nx])
u[:] = scipy.linalg.solve(A,b)
# Update before next step
u_temps[:] = u
plt.plot(x,u)
plt.show()
我有这种类型的错误:
ValueError: array must not contain infs or NaNs
我以前从未犯过这样的错误:这意味着什么?有人能帮我解决这个问题吗
非常感谢
致以最良好的祝愿
目前没有回答
相关问题 更多 >
编程相关推荐