Changes in / [a66b004:b669b49] in sasmodels
- Files:
-
- 2 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/guide/pd/polydispersity.rst
r75e4319 reda8b30 42 42 calculations are generally more robust with more data points or more angles. 43 43 44 The following sixdistribution functions are provided:44 The following five distribution functions are provided: 45 45 46 46 * *Rectangular Distribution* 47 * *Uniform Distribution*48 47 * *Gaussian Distribution* 49 48 * *Lognormal Distribution* 50 49 * *Schulz Distribution* 51 50 * *Array Distribution* 52 * *Boltzmann Distribution*53 51 54 52 These are all implemented as *number-average* distributions. … … 87 85 Rectangular distribution. 88 86 89 Uniform Distribution90 ^^^^^^^^^^^^^^^^^^^^^^^^91 92 The Uniform Distribution is defined as93 94 .. math::95 96 f(x) = \frac{1}{\text{Norm}}97 \begin{cases}98 1 & \text{for } |x - \bar x| \leq \sigma \\99 0 & \text{for } |x - \bar x| > \sigma100 \end{cases}101 102 where $\bar x$ is the mean of the distribution, $\sigma$ is the half-width, and103 *Norm* is a normalization factor which is determined during the numerical104 calculation.105 106 Note that the polydispersity is given by107 108 .. math:: \text{PD} = \sigma / \bar x109 110 .. figure:: pd_uniform.jpg111 112 Uniform distribution.113 114 87 .. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 115 88 … … 210 183 ^^^^^^^^^^^^^^^^^^ 211 184 212 This user-definable distribution should be given as a simple ASCII text185 This user-definable distribution should be given as as a simple ASCII text 213 186 file where the array is defined by two columns of numbers: $x$ and $f(x)$. 214 187 The $f(x)$ will be normalized to 1 during the computation. … … 229 202 given for the model will have no affect, and will be ignored when computing 230 203 the average. This means that any parameter with an array distribution will 231 not be fitable. 232 233 .. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 234 235 Boltzmann Distribution 236 ^^^^^^^^^^^^^^^^^^^^^^ 237 238 The Boltzmann Distribution is defined as 239 240 .. math:: 241 242 f(x) = \frac{1}{\text{Norm}} 243 \exp\left(-\frac{ | x - \bar x | }{\sigma}\right) 244 245 where $\bar x$ is the mean of the distribution and *Norm* is a normalization 246 factor which is determined during the numerical calculation. 247 The width is defined as 248 249 .. math:: \sigma=\frac{k T}{E} 250 251 which is the inverse Boltzmann factor, 252 where $k$ is the Boltzmann constant, $T$ the temperature in Kelvin and $E$ a 253 characteristic energy per particle. 254 255 .. figure:: pd_boltzmann.jpg 256 257 Boltzmann distribution. 204 not be fittable. 258 205 259 206 .. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -
sasmodels/weights.py
r2d81cfe r2d81cfe 97 97 return x, px 98 98 99 class UniformDispersion(Dispersion):100 r"""101 Uniform dispersion, with width $\sigma$.102 103 .. math::104 105 w = 1106 """107 type = "uniform"108 default = dict(npts=35, width=0, nsigmas=1)109 def _weights(self, center, sigma, lb, ub):110 x = self._linspace(center, sigma, lb, ub)111 x = x[np.fabs(x-center) <= np.fabs(sigma)]112 return x, np.ones_like(x)113 99 114 100 class RectangleDispersion(Dispersion): … … 204 190 return x, px 205 191 206 class BoltzmannDispersion(Dispersion):207 r"""208 Boltzmann dispersion, with $\sigma=k T/E$.209 210 .. math::211 212 w = \exp\left( -|x - c|/\sigma\right)213 """214 type = "boltzmann"215 default = dict(npts=35, width=0, nsigmas=3)216 def _weights(self, center, sigma, lb, ub):217 x = self._linspace(center, sigma, lb, ub)218 px = np.exp(-np.abs(x-center) / np.abs(sigma))219 return x, px220 192 221 193 # dispersion name -> disperser lookup table. … … 224 196 MODELS = OrderedDict((d.type, d) for d in ( 225 197 RectangleDispersion, 226 UniformDispersion,227 198 ArrayDispersion, 228 199 LogNormalDispersion, 229 200 GaussianDispersion, 230 201 SchulzDispersion, 231 BoltzmannDispersion232 202 )) 233 203 … … 276 246 import pylab 277 247 278 <<<<<<< HEAD279 if any(len(dispersity)>1 for value, dispersity, weights in mesh):280 labels = [p.name for p in model_info.parameters.call_parameters]281 #pylab.interactive(True)282 pylab.figure()283 for (v,x,w), s in zip(mesh, labels):284 =======285 248 if any(len(dispersity) > 1 for value, dispersity, weights in mesh): 286 249 labels = [p.name for p in model_info.parameters.call_parameters] … … 288 251 pylab.figure() 289 252 for (v, x, w), s in zip(mesh, labels): 290 >>>>>>> master291 253 if len(x) > 1: 292 254 pylab.plot(x, w, '-o', label=s)
Note: See TracChangeset
for help on using the changeset viewer.