def testTrig (self): "Test sin, cos, tan, and their inverses" assert_eq(Numeric.arccos(-1.0), Numeric.pi) assert_eq(Numeric.sin(self.a), map(math.sin, self.a)) assert_eq(Numeric.cos(self.a), map(math.cos, self.a)) assert_eq(Numeric.tan(self.a), map(math.tan, self.a)) assert_eq(Numeric.arccos(self.a), map(math.acos, self.a)) assert_eq(Numeric.arcsin(self.a), map(math.asin, self.a)) assert_eq(Numeric.arctan(self.a), map(math.atan, self.a)) assert Numeric.sin(self.m).shape == self.m.shape assert Numeric.cos(self.m).shape == self.m.shape assert Numeric.tan(self.m).shape == self.m.shape assert Numeric.arcsin(self.m).shape == self.m.shape assert Numeric.arccos(self.m).shape == self.m.shape assert Numeric.arctan(self.m).shape == self.m.shape assert_eq(Numeric.sin(self.m).flat, map(math.sin, self.m.flat)) assert_eq(Numeric.cos(self.m).flat, map(math.cos, self.m.flat)) assert_eq(Numeric.tan(self.m).flat, map(math.tan, self.m.flat)) assert_eq(Numeric.arcsin(self.m).flat, map(math.asin, self.m.flat)) assert_eq(Numeric.arccos(self.m).flat, map(math.acos, self.m.flat)) assert_eq(Numeric.arctan(self.m).flat, map(math.atan, self.m.flat))
def __init__(self, point1, point2, start, ratio, point_distance, cylinder_radius=0., **attr): axis = (point2 - point1).normal() angle = Numeric.arctan(ratio) if isVector(start): rvect = start - point1 rvect = rvect - (rvect * axis) * axis radius = rvect.length() else: radius = start while 1: direction = axis.cross(randomDirection()) if direction.length() > 1.e-3: break start = point1 + radius * direction.normal() x = point_distance * Numeric.cos(angle) y = point_distance * Numeric.sin(angle) npoints = (point2 - point1).length() / y tr = Translation(y*axis+point1) \ * Rotation(axis, x/(2.*Numeric.pi*radius)) * Translation(-point1) p = start self.start_point = p objects = [] for i in range(npoints): np = tr(p) if cylinder_radius == 0.: objects.append(apply(graphics.Line, (p, np), attr)) else: objects.append( apply(graphics.Cylinder, (p, np, cylinder_radius), attr)) p = np self.end_point = p graphics.Group.__init__(self, objects)
def arctan(self): v = Numeric.arctan(self.value) d = 1./(1.+pow(self.value,2)) return DerivVar(v, map(lambda x,f=d: f*x, self.deriv))
def test1(*s): "Test of basic array creation and arithmetic." x=Numeric.array([1.,1.,1.,-2., pi/2.0, 4., 5., -10., 10., 1., 2., 3.]) y=Numeric.array([5.,0.,3., 2., -1., -4., 0., -10., 10., 1., 0., 3.]) a10 = 10. m1 = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] m2 = [0, 0, 1, 0, 0, 1, 1, 0, 0, 0 ,0, 1] xm = array(x, mask=m1) ym = array(y, mask=m2) z = Numeric.array([-.5, 0., .5, .8]) zm = array(z, mask=[0,1,0,0]) xf = Numeric.where(m1, 1.e+20, x) xm.set_fill_value(1.e+20) for item in [x, y, xm, ym, xf]: item.shape = s assert isMaskedArray(x) == 0 assert isMaskedArray(xm) == 1 assert shape(xm) == s assert xm.shape == s assert size(xm) == reduce(lambda x,y:x*y, s) assert xm.size() == size(xm) assert size(xm,0) == s[0] assert xm.size(0) == size(xm,0) assert count(xm) == len(m1) - reduce(lambda x,y:x+y, m1) if rank(xm) > 1: assert count(xm,0) == size(xm,0) - reduce(lambda x,y:x+y, xm.mask()[0]) alltest(xm, xf) alltest(filled(xm, 1.e20), xf) alltest(x, xm) alltest(-x, -xm) alltest(x + y, xm + ym) alltest(x - y, xm - ym) alltest(x * y, xm * ym) alltest(x / y, xm / ym) alltest(a10 + y, a10 + ym) alltest(a10 - y, a10 - ym) alltest(a10 * y, a10 * ym) alltest(a10 / y, a10 / ym) alltest(x + a10, xm + a10) alltest(x - a10, xm - a10) alltest(x * a10, xm * a10) alltest(x / a10, xm / a10) a2d = array([[1,2],[0,4]], Float) a2dm = masked_array(a2d, [[0,0],[1,0]]) alltest (a2d * a2d, a2d * a2dm) alltest (a2d + a2d, a2d + a2dm) alltest (a2d - a2d, a2d - a2dm) alltest(x**2, xm**2) alltest(abs(x)**2.5, abs(xm) **2.5) alltest(x**y, xm**ym) alltest(Numeric.add(x,y), add(xm, ym)) alltest(Numeric.subtract(x,y), subtract(xm, ym)) alltest(Numeric.multiply(x,y), multiply(xm, ym)) alltest(Numeric.divide(x,y), divide(xm, ym)) alltest(Numeric.cos(x), cos(xm)) alltest(Numeric.cosh(x), cosh(xm)) alltest(Numeric.sin(x), sin(xm)) alltest(Numeric.sinh(x), sinh(xm)) alltest(Numeric.tan(x), tan(xm)) alltest(Numeric.tanh(x), tanh(xm)) alltest(Numeric.sqrt(abs(x)), sqrt(xm)) alltest(Numeric.log(abs(x)), log(xm)) alltest(Numeric.log10(abs(x)), log10(xm)) alltest(Numeric.exp(x), exp(xm)) alltest(Numeric.arcsin(z), arcsin(zm)) alltest(Numeric.arccos(z), arccos(zm)) alltest(Numeric.arctan(z), arctan(zm)) alltest(Numeric.arctan2(x, y), arctan2(xm, ym)) alltest(Numeric.absolute(x), absolute(xm)) alltest(Numeric.equal(x,y), equal(xm, ym)) alltest(Numeric.not_equal(x,y), not_equal(xm, ym)) alltest(Numeric.less(x,y), less(xm, ym)) alltest(Numeric.greater(x,y), greater(xm, ym)) alltest(Numeric.less_equal(x,y), less_equal(xm, ym)) alltest(Numeric.greater_equal(x,y), greater_equal(xm, ym)) alltest(Numeric.conjugate(x), conjugate(xm)) alltest(Numeric.concatenate((x,y)), concatenate((xm,ym))) alltest(Numeric.concatenate((x,y)), concatenate((x,y))) alltest(Numeric.concatenate((x,y)), concatenate((xm,y))) alltest(Numeric.concatenate((x,y,x)), concatenate((x,ym,x))) ott = array([0.,1.,2.,3.], mask=[1,0,0,0]) assert isinstance(count(ott), types.IntType) alltest(3, count(ott)) alltest(1, count(1)) alltest(0, array(1,mask=[1])) ott.shape = (2,2) assert isMaskedArray(count(ott,0)) assert isinstance(count(ott), types.IntType) alltest(3, count(ott)) assert getmask(count(ott,0)) is None alltest([1,2],count(ott,0)) xr = Numeric.ravel(x) #max doesn't work if shaped xmr = ravel(xm) alltest(max(xr), maximum(xmr)) #true because of careful selection of data alltest(min(xr), minimum(xmr)) #true because of careful selection of data alltest(Numeric.add.reduce(x), add.reduce(x)) alltest(Numeric.add.accumulate(x), add.accumulate(x)) alltest(4, sum(array(4))) alltest(4, sum(array(4), axis=0)) alltest(Numeric.sum(x), sum(x)) alltest(Numeric.sum(filled(xm,0)), sum(xm)) alltest(Numeric.sum(x,0), sum(x,0)) alltest(Numeric.product(x), product(x)) alltest(Numeric.product(x,0), product(x,0)) alltest(Numeric.product(filled(xm,1)), product(xm)) if len(s) > 1: alltest(Numeric.concatenate((x,y),1), concatenate((xm,ym),1)) alltest(Numeric.add.reduce(x,1), add.reduce(x,1)) alltest(Numeric.sum(x,1), sum(x,1)) alltest(Numeric.product(x,1), product(x,1))