I have a script in python that allows me to input values for ai and then it outputs Fmin. I have these 11 values which when input, should return an Fmin of about 0 (which it does):
Enter a value of a[0]: .09091
Enter a value of a[1]: .16529
Enter a value of a[2]: .14876
Enter a value of a[3]: .13223
Enter a value of a[4]: .11570
Enter a value of a[5]: .09917
Enter a value of a[6]: .08264
Enter a value of a[7]: .06612
Enter a value of a[8]: .04959
Enter a value of a[9]: .03306
Enter a value of a[10]: .01653
Question:I want to revise this script such that I can use something like Nedler Mead minimization in order to see what values of ai Minimize this function. Can someone help write this new script? This is the script I have so far, which correspnds to the equation circled in black which just allows me in input those ai values, however, I don’t want to input values of ai anymore, but it tell me which are the best. I’m thinking nedler mead is the routine I will try to use. Can someone help start me off on writing it? This is the code That basically lets me plug in ai values:
import math
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 p in range(1, m):
temporary_sum_first = 0.0
temporary_sum_second = 0.0
for i in range(0, m):
# this is the summation inside the square brackets
temporary_sum_first += (a[i] * math.cos(2*pi*i*p/m))
temporary_sum_second += ((-a[i])*i* math.sin(2*pi*i*p/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 p.
Fmin=first+second
print(“Summation value:”)
print(Fmin)
***I have posted this question twice, and the two responses were exactly the same and not particularly helpful.*
Expert Answer
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 p in range(1, m):
temporary_sum_first = 0.0
temporary_sum_second = 0.0
for i in range(0, m):
# this is the summation inside the square brackets
temporary_sum_first += (a[i] * math.cos(2*pi*i*p/m))
temporary_sum_second += ((-a[i])*i* math.sin(2*pi*i*p/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 p.
Fmin=first+second
print(“Summation value:”)
print(Fmin)