I am trying to plot a function in python 2.7.12 and keep getting a syntax error
ID: 3845650 • Letter: I
Question
I am trying to plot a function in python 2.7.12 and keep getting a syntax error at xd3.append(0). I'm basing the script off of another script through which my function was derived, which I will attach as well. Can someone help me revise my script so that I can actually plot it out? Thanks so much!
I posted this question once before, and the response was rediciulous dense and impossible for me to copy or learn from. First code again is what I've tried, second code is what I've based it on.
My Script:
# delare an empty list to hold values of a
a = []
# getting input from user
for i in range(0,m):
a.append( float(input('Enter a value of a[' + str(i) + ']: ')) )
# calculation for summation
# in function range(1,m), 1 is included and m is excluded. So effectively we go from 1 to m-1.
first = 0.0
second = 0.0
for j in range(1, m):
temporary_sum_first = 0.0
temporary_sum_second = 0.0
for i in range(0, m):
# this is the function I want to plot
temporary_sum_first += (a[i] * math.cos(2*pi*i*j/m))
temporary_sum_second += ((-a[i])*i* math.sin(2*pi*i*j/m))
# now square it and sum it
first = first + math.pow(temporary_sum_first, 2)
second = second + math.pow(temporary_sum_second, 2)
# at this point, we have finished summing i=0 to i=m-1 for one value of p, we continue this for m-1 values of j.
#Final Summation Value
Fmin=first+second
print("Summation value:")
print(Fmin)
#If you comment out/ delete everything after this point, you can sub in values for ai
# and find the value of the minimization function
#Now I want to plot out what it looks like
def f(theta,a,m):
for j in range(1, m):
temporary_sum_first = 0.0
temporary_sum_second = 0.0
#This is where I think I went wrong somehow
fsum = temportary_sum_first + temporary_sum_second
for i in range(0, m):
temporary_sum_first += (a[i] * math.cos(2*pi*i*j/m))
temporary_sum_second += ((-a[i])*i* math.sin(2*pi*i*j/m))
return fsum
mhalf = m/2
offt = pi/8
t_min = - offt
t_max = 2*pi +offt
Npts = 500
dt = (t_max - t_min)/Npts
Xv = []
Yv = []
Zv = []
for i in range(Npts):
Xv.append(t_min + dt*i)
Yv.append(f(Xv[i],x,m))
Zv.append(0.0)
Xd = []
Yd = []
Xd2 = []
Yd2 = []
Xd3 = []
Yd3 = []
for i in range(mhalf):
Xd.append(2*(i+1)*pi/m)
Yd.append(0)
Xd2.append(2*(i+mhalf +1)*pi/m
Xd3.append(0)
Xd3.append(2*pi)
Yd3.append(1)
Yd3.append(1)
p1 = plt.subplot(111)
p1.plot(Xv, Yv, color='red', lw=2)
p1.plot(Xv, Zv, color='blue', lw=2)
p1.scatter(Xd, Yd, color='black', marker='o', facecolors='none', edgecolors='k', s=200, lw=2)
p1.scatter(Xd2, Yd2, color='yellow', marker='o', facecolors='none', edgecolors='y', s=200, lw=2)
p1.scatter(Xd3, Yd3, color='black', marker='o', s=200, lw=2)
p1.set_xlim([t_min,t_max])
p1.set_xlabel(r'$ heta$',size=28)
p1.set_ylabel(r'$f( heta)$',size=28)
title = r"$m = %2.0f$" % m
p1.set_title(title,fontsize=32,color='black')
figFile = 'fig_'+str(m)+'_0.eps'
#plt.savefig(figFile,format='eps')
plt.show()
Reference Script:
from numpy import matrix
from numpy import linalg
import numpy
import matplotlib.pyplot as plt
from math import *
import sys
def f(theta,x,Nd):
fsum = 0.0
for i in range(Nd):
fsum = fsum + x[i]*cos(i*theta)
return fsum
Nd=11
#Nd = int(sys.argv[1]) # Command-line arg: kicking frequency
Ndhalf = Nd/2
offt = pi/8
t_min = -offt
t_max = 2*pi + offt
Npts = 500
dt = (t_max - t_min)/Npts
# Solution
x = []
x.append(1.0/Nd)
for i in range(Nd-1):
x.append(2*(Nd-i-1)/(Nd**2.0))
print i, x[i]
Xv = []
Yv = []
Zv = []
for i in range(Npts):
Xv.append(t_min + dt*i)
Yv.append(f(Xv[i],x,Nd))
Zv.append(0.0)
Xd = []
Yd = []
Xd2 = []
Yd2 = []
Xd3 = []
Yd3 = []
for i in range(Ndhalf):
Xd.append(2*(i+1)*pi/Nd)
Yd.append(0)
Xd2.append(2*(i+Ndhalf+1)*pi/Nd)
Yd2.append(0)
Xd3.append(0)
Xd3.append(2*pi)
Yd3.append(1)
Yd3.append(1)
p1 = plt.subplot(111)
p1.plot(Xv, Yv, color='red', lw=2)
p1.plot(Xv, Zv, color='blue', lw=2)
p1.scatter(Xd, Yd, color='black', marker='o', facecolors='none', edgecolors='k', s=200, lw=2)
p1.scatter(Xd2, Yd2, color='yellow', marker='o', facecolors='none', edgecolors='y', s=200, lw=2)
p1.scatter(Xd3, Yd3, color='black', marker='o', s=200, lw=2)
p1.set_xlim([t_min,t_max])
p1.set_xlabel(r'$ heta$',size=28)
p1.set_ylabel(r'$f( heta)$',size=28)
title = r"$m = %2.0f$" % Nd
p1.set_title(title,fontsize=32,color='black')
figFile = 'fig_'+str(Nd)+'_0.eps'
#plt.savefig(figFile,format='eps')
plt.show()
Explanation / Answer
import math
from numpy import matrix
from numpy import linalg
import numpy
import matplotlib.pyplot as plt
import sys
m = 11
first = 0
second = 0
pi = math.pi
# delare an empty list to hold values of a
a = []
# getting input from user
for i in range(0,m):
a.append( float(input('Enter a value of a[' + str(i) + ']: ')) )
# calculation for summation
# in function range(1,m), 1 is included and m is excluded. So effectively we go from 1 to m-1.
first = 0.0
second = 0.0
for j in range(1, m):
temporary_sum_first = 0.0
temporary_sum_second = 0.0
for i in range(0, m):
# this is the function I want to plot
temporary_sum_first += (a[i] * math.cos(2*pi*i*j/m))
temporary_sum_second += ((-a[i])*i* math.sin(2*pi*i*j/m))
# now square it and sum it
first = first + math.pow(temporary_sum_first, 2)
second = second + math.pow(temporary_sum_second, 2)
# at this point, we have finished summing i=0 to i=m-1 for one value of p, we continue this for m-1 values of j.
#Final Summation Value
Fmin=first+second
print("Summation value:")
print(Fmin)
#If you comment out/ delete everything after this point, you can sub in values for ai
# and find the value of the minimization function
#Now I want to plot out what it looks like
def f(theta,a,m):
for j in range(1, m):
temporary_sum_first = 0.0
temporary_sum_second = 0.0
#This is where I think I went wrong somehow
fsum = temportary_sum_first + temporary_sum_second
for i in range(0, m):
temporary_sum_first += (a[i] * math.cos(2*pi*i*j/m))
temporary_sum_second += ((-a[i])*i* math.sin(2*pi*i*j/m))
return fsum
mhalf = m/2
offt = pi/8
t_min = - offt
t_max = 2*pi +offt
Npts = 500
dt = (t_max - t_min)/Npts
Xv = []
Yv = []
Zv = []
for i in range(Npts):
Xv.append(t_min + dt*i)
Yv.append(f(Xv[i],x,m))
Zv.append(0.0)
Xd = []
Yd = []
Xd2 = []
Yd2 = []
Xd3 = []
Yd3 = []
for i in range(mhalf):
Xd.append(2*(i+1)*pi/m)
Yd.append(0)
Xd2.append(2*(i+mhalf +1)*pi/m
Xd3.append(0)
Xd3.append(2*pi)
Yd3.append(1)
Yd3.append(1)
p1 = plt.subplot(111)
p1.plot(Xv, Yv, color='red', lw=2)
p1.plot(Xv, Zv, color='blue', lw=2)
p1.scatter(Xd, Yd, color='black', marker='o', facecolors='none', edgecolors='k', s=200, lw=2)
p1.scatter(Xd2, Yd2, color='yellow', marker='o', facecolors='none', edgecolors='y', s=200, lw=2)
p1.scatter(Xd3, Yd3, color='black', marker='o', s=200, lw=2)
p1.set_xlim([t_min,t_max])
p1.set_xlabel(r'$ heta$',size=28)
p1.set_ylabel(r'$f( heta)$',size=28)
title = r"$m = %2.0f$" % m
p1.set_title(title,fontsize=32,color='black')
figFile = 'fig_'+str(m)+'_0.eps'
#plt.savefig(figFile,format='eps')
plt.show()
Reference Script:
from numpy import matrix
from numpy import linalg
import numpy
import matplotlib.pyplot as plt
from math import *
import sys
def f(theta,x,Nd):
fsum = 0.0
for i in range(Nd):
fsum = fsum + x[i]*cos(i*theta)
return fsum
Nd=11
#Nd = int(sys.argv[1]) # Command-line arg: kicking frequency
Ndhalf = Nd/2
offt = pi/8
t_min = -offt
t_max = 2*pi + offt
Npts = 500
dt = (t_max - t_min)/Npts
# Solution
x = []
x.append(1.0/Nd)
for i in range(Nd-1):
x.append(2*(Nd-i-1)/(Nd**2.0))
print i, x[i]
Xv = []
Yv = []
Zv = []
for i in range(Npts):
Xv.append(t_min + dt*i)
Yv.append(f(Xv[i],x,Nd))
Zv.append(0.0)
Xd = []
Yd = []
Xd2 = []
Yd2 = []
Xd3 = []
Yd3 = []
for i in range(Ndhalf):
Xd.append(2*(i+1)*pi/Nd)
Yd.append(0)
Xd2.append(2*(i+Ndhalf+1)*pi/Nd)
Yd2.append(0)
Xd3.append(0)
Xd3.append(2*pi)
Yd3.append(1)
Yd3.append(1)
p1 = plt.subplot(111)
p1.plot(Xv, Yv, color='red', lw=2)
p1.plot(Xv, Zv, color='blue', lw=2)
p1.scatter(Xd, Yd, color='black', marker='o', facecolors='none', edgecolors='k', s=200, lw=2)
p1.scatter(Xd2, Yd2, color='yellow', marker='o', facecolors='none', edgecolors='y', s=200, lw=2)
p1.scatter(Xd3, Yd3, color='black', marker='o', s=200, lw=2)
p1.set_xlim([t_min,t_max])
p1.set_xlabel(r'$ heta$',size=28)
p1.set_ylabel(r'$f( heta)$',size=28)
title = r"$m = %2.0f$" % Nd
p1.set_title(title,fontsize=32,color='black')
figFile = 'fig_'+str(Nd)+'_0.eps'
#plt.savefig(figFile,format='eps')
plt.show()
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.