Ich schreibe Code zum Summieren der Fourier-Serie, die von [-n, n] reicht. Allerdings habe ich Probleme mit der Iteration, wenn es zu n = 0 kommt. Ich habe eine 'if' Anweisung in meine while-Schleife geschrieben, damit sie sie ignorieren kann, aber es scheint, als ob sie es nicht ist. Hier ist mein Code:Python: While-Schleife - wie vermeide ich Division durch Null?
from __future__ import division
import numpy as np
import math
import matplotlib.pyplot as plt
#initial values
ni = -10
nf = 10
ti = -3
tf = 3
dt = 0.01
yi = 0 #initial f(t) value
j = complex(0,1)
#initialization
tarray = [ti]
yarray = [yi]
t = ti
n = ni
y = yi
cn = 1/(8*(np.pi)**3*n**3*j**3)*(j*4*np.pi*n) #part (b)
#iterating loop
while t<tf:
n = ni
y = yi
while n<nf:
if n == 0:
cn = 1/6
y += cn
n += 1
else:
y += cn*np.exp(j*np.pi*n*t)
n += 1
yarray.append(y)
t+=dt
tarray.append(t)
#converting list-array
tarray = np.array(tarray)
yarray = np.array(yarray)
#plotting
plt.plot(tarray,yarray, linewidth = 1)
plt.axis("tight")
plt.xlabel('t')
plt.ylabel('f(t) upto n partial sums')
plt.title('Fourier Series for n terms')
plt.legend()
plt.show()
Ich will es eine Reihe von y-Werten für n iterieren und erstellen von einer negativen Zahl zu einem gewissen positiven Zahl im Bereich (etwa für n von [-10,10]), sondern als sobald es n = 0 trifft, scheint es den in die 'else' -Klausel einzufügen, obwohl ich möchte, dass es das verwendet, was in der 'if' -Klausel ist, was mir einen "ZeroDivisionError: complex division by zero" gibt. Wie behebe ich das?
Bearbeiten: Setzen Sie den gesamten Codeblock hier, damit Sie den Kontext sehen können.
Es wäre wahrscheinlich hilfreich, wenn Sie den gesamten Code enthalten würden, der erforderlich ist, damit das Snippet tatsächlich ausgeführt wird und den Fehler durch Division durch Null erzeugt, den Sie sehen. – d512
Ich habe das gerade gemacht, vielleicht wird das helfen. – Ferreroire
Ihr Code funktioniert gut für mich – user5219763