Euler方案:ValueError:数组不能包含INF或NAN

2024-09-28 17:01:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用时间积分的反向Euler方案重新实现热方程解算器,以下是实现的特定方程:

enter image description here

这是我的密码:

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

我以前从未犯过这样的错误:这意味着什么?有人能帮我解决这个问题吗

非常感谢

致以最良好的祝愿


Tags: infornpdtpizerosrangescipy