लूप का उपयोग करते समय मुझे शून्य रनटाइम त्रुटि से विभाजित किया गया था और मुझे नहीं पता कि क्यों। चिंता न करें, कोड अभी अधूरा है। यदि आप मदद कर सकते हैं तो मैं ulj फ़ंक्शन का उपयोग करके एक सरणी को कनवर्ट करने का प्रयास कर रहा हूं। यहाँ कोड है:

import numpy as np
def ulj(x,epsilon = 4*(10**-4),sigma=6):
"""Compute Lennard-Jones potential as a function of inter-atomic distance"""
return epsilon*((((sigma)/(x))**12)-((((sigma)/(x))**6)))




 positions=np.array([0., 7.0,5,6,2,6,2,2,4,3]) # Initial position of the two objects (in atomic            units)

i = 0

x1 = []
x2 = []
while i <(len(positions)):
    x1.append(ulj(positions[i]))

print(x1)

आपकी सहायता के लिए धन्यवाद

-1
Chris Howard 18 फरवरी 2020, 08:30
1
कृपया अपना कोड/इंडेंटेशन भी सही ढंग से प्रारूपित करें।
 – 
metatoaster
18 फरवरी 2020, 08:31

2 जवाब

नीचे दिए गए कोड स्निपेट के साथ लूप के दौरान बदलें

while i <(len(positions)):
    print(positions[i])
    x1.append(ulj(positions[i]))
    i = i+1
0
Mohit Sharma 18 फरवरी 2020, 08:47

जबकि मोहित शर्मा सही है, आपको लूप के अंदर i बढ़ाना चाहिए (अनंत लूप से बचने के लिए), शून्य त्रुटि से विभाजित क्यों हो रहा है इसका उत्तर निम्नलिखित है।

जब i == 0, positions[i] == 0.

इसलिए, ulj(positions[i]), ulj(0) है।

इसका मतलब है कि आपके फ़ंक्शन के अंदर, x == 0, और sigma/x को शून्य अपवाद से विभाजित किया जाएगा।

0
Alex Walczak 18 फरवरी 2020, 09:44