# [SOLVED] Not defined variable in numpy

## Issue

I’m trying to run the code below but I get a NameError when running the code. The issue is that q seems not to be defined but this should not be true.

class SimpleNamespace():
pass

#Question 1

#i)
#Defining the parameters using SimpleNameSpace. par = Parameters
par = SimpleNamespace()
par.y = 1 #assets
par.p = 0.2 #probability
par.theta = -2 #elasticity

#Defining utility function for agent
def utility(z,par):
return (z**(1+par.theta))/(1+par.theta)

return par.p*q

#Defining expected value
#Note that z_1, z_2 represents first and second part of the objective function - just in a compressed version
def exp_value (i,q,par):
return par.p*utility(z_1,par)+(1-par.p)*utility(z_2,par)

def opt_q(i,q,par):
obj = lambda q: -exp_value(i,q,par) #defining the objective function
solution = optimize.minimize_scalar(obj, bounds=(0,0.9), method="bounded") #bounded solution within [0.01, 0.9]
q = solution.x
return q

for i in np.linspace(0.01,0.9,num=100):
res = opt_q(i,q,par)
print(res)

## Solution

You are getting the NameError because you are not passing the q to opt_q in the last for-loop. Since it is already defined inside opt_q just remove q from its arguments and don’t pass it in the for-loop as well as follows:

def opt_q(i,par):
obj = lambda q: -exp_value(i,q,par) #defining the objective function
solution = minimize_scalar(obj, bounds=(0,0.9), method="bounded") #bounded solution within [0.01, 0.9]
q = solution.x
return q

for i in np.linspace(0.01,0.9,num=100):
res = opt_q(i,par)
print(res)