I am having trouble with my indices in a nested for loop. Python is spitting out an index error telling me my index is out of bounds.
Below are my code and subsequent error:
from math import *
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
import os
croot = 1
ctip = 1
span = 1
thetaroot = 0
thetatip = 0
a0root = 0.11
a0tip = 0.11
alpha = 0
alpha0root = -2.5
alpha0tip = -2.5
thetaroot = thetaroot * arctan(1.) / 45.
thetatip = thetatip * arctan(1.) / 45.
alpha = alpha * arctan(1.) / 45.
alpha0root = alpha0root * arctan(1.) / 45.
alpha0tip = alpha0tip * arctan(1.) / 45.
n = 10
theta = np.empty(n, dtype = object)
y = np.empty(n, dtype = object)
c = np.empty(n, dtype = object)
cl = np.empty(n, dtype = object)
alp = np.empty(n, dtype = object)
a = np.empty(n, dtype = object)
rhs = np.empty(n, dtype = object)
b = np.empty(n, dtype = object)
a = np.empty(n, dtype = object)
rhs = rhs[:,None]
b = b[:,None]
a = a[:,None]
#
# Define properties at n span stations
#
pi = 4. * arctan(1.)
for i in range(0,n):
theta[i] = i * pi / (2. * n)
y[i] = span * 0.5 * cos(theta[i])
c[i] = croot + (ctip - croot) * y[i] * 2. / span
alp[i] = alpha + thetaroot - (alpha0root + (alpha0tip - alpha0root + thetaroot - thetatip) * y[i] * 2. / span)
a[i] = a0root + (a0tip - a0root) * y[i] * 2. / span
pi = 4. * arctan(1.)
# Set up 2n x 2n system of equations for A1, A3 , ... A2n-1
for j in range(0,n):
mu = c[j] * a[j] / (4. * span); print('mu=',mu)
rhs[j,0] = alp[j] * sin(theta[j]) * c[j] * a[j] / (4 * span)
for i in range(0,n):
l = 2 * i - 1
b[j,i] = sin(l * theta[j]) * (mu * l + sin(theta[j]))
I then receive the error:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-70-b5bd95e69bb5> in <module>()
45 for i in range(0,n):
46 l = 2 * i - 1
---> 47 b[j,i] = sin(l * theta[j]) * (mu * l + sin(theta[j]))
48
49
IndexError: index 1 is out of bounds for axis 1 with size 1
How can I effectively call out both indices? In MATLAB, b(j,i) is the normal syntax.
Any help is appreciated, thanks!
bis(n,1). If something close to this worked in MATLAB its because that language expands an array if indexed beyond the current size. Innumpyyou have to initialize it to the correct final shape.