# div/0 problem

This topic is 2203 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

A friend of mine is having trouble with some of her code - tried to help but not familiar with Python at all I'm afraid. She's pretty much teaching herself for her internship and just picked up the language this week. I'm thinking it's not possible to use a floating point value as a for loop iterator that is perhaps causing [font=courier new,courier,monospace]s[/font] to revert to 0.

She gets the div/0 error on line 13

[source lang="py"]
#input array of data as the h(x) [DataIn]
#use the FamilyWavelet equation with w, s changing through the loop--random #values
#multiply h(x) and FamilyWavelet and sum them up

import numpy as np
import matplotlib.pyplot as plt

def MotherWavelet(eta, w):
x = np.pi**(-1./4)*np.exp(1j*w*eta)*np.exp((-eta**2)/2.)
return x

def FamilyWavelet(n,n1,w,s,dt):
x = (dt/s)**(1./2.)
N = ((n1-n)*(dt))/s
mw = MotherWavelet(N, w)
r = x*mw
return r

#will get data from file

newArray = np.zeros((len(DataIn)))
totalSumN1 = np.zeros((120)) #want 120 spots in the array
totalSumS = np.zeros((200)) #100 spots in the array

a = 0
n1 = 0
w = 5
s = 0.2
b = 0

#an array of all the n1s from 0 to 200

for n1 in range(120):
for s in range(4):
for a in range(len(DataIn)):
y = FamilyWavelet(a, n1, w, s, 0.4)
c = DataIn[a] * y.conj()
newArray[a] = c

y = np.sum(newArray)
totalSumS = y
b +=1

for a in range(len(DataIn)):
y = FamilyWavelet(a, n1, w, s, 0.4)
c = DataIn[a] * y.conj()
newArray[a] = c

y = np.sum(newArray)
totalSumN1 = y
b +=1

print np.concatenate((totalSumS, totalSumN1))
[/source] Edited by Gaiiden

##### Share on other sites
There may be other bugs, but I suspect "for s in range(4)" should be "for s in range(1, 4)" - otherwise s will start at 0 and cause a div/0 immediately in FamilyWavelet.

##### Share on other sites
yea, I also noticed she wanted [font=courier new,courier,monospace]s[font=arial,helvetica,sans-serif] [/font][/font]to carry in a predefined value for the initial loop and I'm not sure that's possible given the for loops seem to auto-increment. Unless something like [font=courier new,courier,monospace]range(0.2, 4)[/font] would work?

##### Share on other sites
I's not clear what you would want range(0.2, 4) to do. In any case, the range() function only accepts integer arguments, which can be annoying at times. It is possible to use a list comprehension in conjunction with a range() statement to generate floating point increments. Ex: [x * 0.1 for x in range(2, 40, 2)] would generate the numbers 0.2 to 3.8 with a 0.2 increment.

1. 1
Rutin
24
2. 2
3. 3
JoeJ
20
4. 4
5. 5

• 9
• 46
• 41
• 23
• 13
• ### Forum Statistics

• Total Topics
631749
• Total Posts
3002032
×