gpt4 book ai didi

python - Numpy 除以零。为什么?

转载 作者:行者123 更新时间:2023-11-28 21:15:44 32 4
gpt4 key购买 nike

import pygame
import random
import math
import numpy as np
import matplotlib.pyplot as plt
fx = np.zeros([11])
fy = np.zeros([11])
x = np.zeros([11])
y = np.zeros([11])
x[0] = 11
y[0] = 1
sigma = 1.01
e = 1.1
dt = 0.1
def LJ(x,y):
for i in range(1,10):
for j in range(1,10):
rx = (x[i]-x[j])
ry = (y[i]-y[j])
fx[i] = 24*e*(((2/rx)*sigma/rx**12)-((1/rx)*sigma/rx**6))
fy[i] = 24*e*(((2/ry)*sigma/ry**12)-((1/ry)*sigma/ry**6))
print fx, fy

为什么还是报错RuntimeWarning:在 double_scalars 中遇到被零除

RuntimeWarning: invalid value encountered in double_scalars

我得到的结果是

[  0.  nan  nan  nan  nan  nan  nan  nan  nan  nan   0.] [  0.  nan  nan  nan  nan  nan  nan  nan  nan  nan   0.]

我尝试修改开始的 x 和 y,但没有任何效果。

最佳答案

在这段代码中:

def LJ(x,y):
for i in range(1,10):
for j in range(1,10):
...

如果 i == j,您正在将粒子与自身进行比较。尝试像这样跳过 for 循环的迭代:

def LJ(x,y):
for i in range(1,10):
for j in range(1,10):
if i == j:
continue
rx = (x[i]-x[j])
ry = (y[i]-y[j])
fx[i] = 24*e*(((2/rx)*sigma/rx**12)-((1/rx)*sigma/rx**6))
fy[i] = 24*e*(((2/ry)*sigma/ry**12)-((1/ry)*sigma/ry**6))

此外,您还需要为 x 和 y 列表输入实际值,因为它们当前均为 0。根据该方程,位于完全相同位置的两个粒子会施加无限大的力,因此在这种情况下除以 0 是准确的。

关于python - Numpy 除以零。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774191/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com