@@ -406,16 +406,16 @@ def rho(self, z):
406
406
Returns
407
407
-------
408
408
rho : ndarray
409
- rho(z) = a*(1-cos(z/a)) for \|z\| <= a*pi
409
+ rho(z) = a**2 * (1-cos(z/a)) for \|z\| <= a*pi
410
410
411
- rho(z) = 2*a for \|z\| > a*pi
411
+ rho(z) = 2*a for \|z\| > a*pi
412
412
"""
413
413
414
414
a = self .a
415
415
z = np .asarray (z )
416
416
test = self ._subset (z )
417
- return (test * a ** 2 * (0 - np .cos (z / a )) +
418
- (1 - test ) * 2 * a )
417
+ return (test * a ** 2 * (1 - np .cos (z / a )) +
418
+ (1 - test ) * a ** 2 * 2 )
419
419
420
420
def psi (self , z ):
421
421
r"""
@@ -431,7 +431,7 @@ def psi(self, z):
431
431
Returns
432
432
-------
433
433
psi : ndarray
434
- psi(z) = sin(z/a) for \|z\| <= a*pi
434
+ psi(z) = a * sin(z/a) for \|z\| <= a*pi
435
435
436
436
psi(z) = 0 for \|z\| > a*pi
437
437
"""
@@ -455,9 +455,9 @@ def weights(self, z):
455
455
Returns
456
456
-------
457
457
weights : ndarray
458
- weights(z) = sin(z/a)/ (z/a) for \|z\| <= a*pi
458
+ weights(z) = sin(z/a) / (z/a) for \|z\| <= a*pi
459
459
460
- weights(z) = 0 for \|z\| > a*pi
460
+ weights(z) = 0 for \|z\| > a*pi
461
461
"""
462
462
a = self .a
463
463
z = np .asarray (z )
@@ -527,12 +527,12 @@ def rho(self, z):
527
527
rho : ndarray
528
528
rho(z) = (1/2.)*z**2 for \|z\| <= c
529
529
530
- rho(z) = 0 for \|z\| > c
530
+ rho(z) = (1/2.)*c**2 for \|z\| > c
531
531
"""
532
532
533
533
z = np .asarray (z )
534
534
test = self ._subset (z )
535
- return test * z ** 2 * 0.5
535
+ return test * z ** 2 * 0.5 + ( 1 - test ) * self . c ** 2 * 0.5
536
536
537
537
def psi (self , z ):
538
538
r"""
@@ -635,13 +635,13 @@ def rho(self, z):
635
635
Returns
636
636
-------
637
637
rho : ndarray
638
- rho(z) = (1/2.)* z**2 for \|z\| <= a
638
+ rho(z) = z**2 / 2 for \|z\| <= a
639
639
640
- rho(z) = a*\|z\| - 1/2.*a**2 for a < \|z\| <= b
640
+ rho(z) = a*\|z\| - 1/2.*a**2 for a < \|z\| <= b
641
641
642
- rho(z) = a*(c* \|z\|-(1/2.)*z**2)/(c-b) for b < \|z\| <= c
642
+ rho(z) = a*(c - \|z\|)**2 / (c - b) / 2 for b < \|z\| <= c
643
643
644
- rho(z) = a*(b + c - a) for \|z\| > c
644
+ rho(z) = a*(b + c - a) / 2 for \|z\| > c
645
645
"""
646
646
a , b , c = self .a , self .b , self .c
647
647
@@ -654,7 +654,8 @@ def rho(self, z):
654
654
v = np .zeros (z .shape , dtype = dt )
655
655
z = np .abs (z )
656
656
v [t1 ] = z [t1 ]** 2 * 0.5
657
- v [t2 ] = (a * (z [t2 ] - a ) + a ** 2 * 0.5 )
657
+ # v[t2] = (a * (z[t2] - a) + a**2 * 0.5)
658
+ v [t2 ] = (a * z [t2 ] - a ** 2 * 0.5 )
658
659
v [t3 ] = a * (c - z [t3 ])** 2 / (c - b ) * (- 0.5 )
659
660
v [t34 ] += a * (b + c - a ) * 0.5
660
661
@@ -694,14 +695,11 @@ def psi(self, z):
694
695
dt = np .promote_types (z .dtype , "float" )
695
696
v = np .zeros (z .shape , dtype = dt )
696
697
s = np .sign (z )
697
- z = np .abs (z )
698
+ za = np .abs (z )
698
699
699
- v [t1 ] = z [t1 ] * s [ t1 ]
700
+ v [t1 ] = z [t1 ]
700
701
v [t2 ] = a * s [t2 ]
701
- v [t3 ] = a * s [t3 ] * (c - z [t3 ]) / (c - b )
702
- # v = (t1 * z*s +
703
- # t2 * a*s +
704
- # t3 * a*s * (c - z) / (c - b))
702
+ v [t3 ] = a * s [t3 ] * (c - za [t3 ]) / (c - b )
705
703
706
704
if z_isscalar :
707
705
v = v [0 ]
@@ -721,13 +719,13 @@ def weights(self, z):
721
719
Returns
722
720
-------
723
721
weights : ndarray
724
- weights(z) = 1 for \|z\| <= a
722
+ weights(z) = 1 for \|z\| <= a
725
723
726
- weights(z) = a/\|z\| for a < \|z\| <= b
724
+ weights(z) = a/\|z\| for a < \|z\| <= b
727
725
728
726
weights(z) = a*(c - \|z\|)/(\|z\|*(c-b)) for b < \|z\| <= c
729
727
730
- weights(z) = 0 for \|z\| > c
728
+ weights(z) = 0 for \|z\| > c
731
729
"""
732
730
a , b , c = self .a , self .b , self .c
733
731
0 commit comments