Return to Examples Main | Next Example

Use of Random Variables

Lamina stiffness properties as random variables

For examples related to lamination theory, we need the following package from the MSC library.

<<MaterialMinds`laminate`

The package msc`laminate` defines many lamination theory routines. Look at the help for Amat to see how the material properties and laminates get entered.

engineer can be used to get the laminate Young's modulus.

? engineerForm

engineer[prop,stack] computes the inplane stiffness for a laminate in terms of engineering con ... p; The m's correspond to rows of the prop array.\n The result is returned as {e1,e2,g12,nu12}

Lets assume all the material properties are independent random variables (physically impossible, but..). All the standard deviations are 10% of the mean. The stack is quasi-isotropic

prop = {NormalDistribution[20, 2], NormalDistribution[1., .1], NormalDistribution[.85, .085],  ... 0.3, .03]} ;  laminate = {{0, 1, .25}, {Pi/2, 1, .25}, {Pi/4, 1, .25}, {-Pi/4, 1, .25}} ;

Note that when the function returns a vector, errorPropagation will determine the statistics for each element of the vector

TableForm[errorPropogation[engineerForm[prop, laminate], SampleSize2000, FitDistributi ... TableHeadings {{"Ex", "Ey", "Gxy", "Nuxy"}, None}]

Ex NormalDistribution[7.72621, 0.674185]
Ey NormalDistribution[7.72621, 0.674185]
Gxy NormalDistribution[2.99468, 0.254032]
Nuxy NormalDistribution[0.289741, 0.00836792]

The SeriesApproximation method works remarkable well.

TableForm[errorPropogation[engineerForm[prop, laminate], ErrorMethodSeriesApproximatio ... TableHeadings {{"Ex", "Ey", "Gxy", "Nuxy"}, None}]

Ex NormalDistribution[7.70408, 0.672427]
Ey NormalDistribution[7.70408, 0.672427]
Gxy NormalDistribution[2.98664, 0.253688]
Nuxy NormalDistribution[0.289523, 0.00840456]

For this example, there is no difference between analytic and numerical derivatives. The numerical is the default so that more complex models can be inserted without any problem.

TableForm[errorPropogation[engineerForm[prop, laminate], ErrorMethodSeriesApproximatio ... TableHeadings {{"Ex", "Ey", "Gxy", "Nuxy"}, None}]

Ex NormalDistribution[7.70408, 0.672427]
Ey NormalDistribution[7.70408, 0.672427]
Gxy NormalDistribution[2.98664, 0.253688]
Nuxy NormalDistribution[0.289523, 0.00840456]

As expected, the IntervalMath method is lousy.

TableForm[errorPropogation[engineerForm[prop, laminate], ErrorMethodIntervalMath], TableHeadings {{"Ex", "Ey", "Gxy", "Nuxy"}, None}]

Ex NormalDistribution[8.9164, 4.74047]
Ey NormalDistribution[8.9164, 4.74047]
Gxy NormalDistribution[3.56453, 1.98968]
Nuxy NormalDistribution[0.538001, 0.454534]

Define a function that only returns the E1 component

youngs[prop_, stack_] := engineerForm[prop, stack][[1]] ;

Plot the CDF of the Monte Carlo simulation, along with the estimated continuous distribution.

CDFListPlot[errorPropogation[youngs[prop, laminate], SampleSize1000], ContinuousPlotFitNormal]

[Graphics:HTMLFiles/index_11.gif]

⁃Graphics⁃

Behavior of the mean.

An MSC derivation showed that the mean of a laminate property computed using random lamina inputs will always be less than the point value calculated from the mean of the lamina inputs.

Load the composite lamination theory package if not already loaded

Needs["MaterialMinds`laminate`"]

Define a function that only returns the E_1 component

youngs[prop_, stack_] := engineerForm[prop, stack][[1]] ;

Mean values of the lamina stiffness

meanProp = {20, 1., .85, 0.3} ;

E_1 computed from the means

youngs[meanProp, laminate]

7.70432

Mean of Ex computed from random variables with stddev of 10%

prop = {NormalDistribution[20, 2], NormalDistribution[1., .1], NormalDistribution[.85, .085],  ... 0.3, .03]} ; errorPropogation[youngs[prop, laminate], ErrorMethodSeriesApproximation][[1]]

7.70408

Increase standard deviation of each input to 20%

prop = {NormalDistribution[20, 4], NormalDistribution[1., .2], NormalDistribution[.85, .17], N ... .3, .06]} ; errorPropogation[youngs[prop, laminate], ErrorMethodSeriesApproximation][[1]]

7.70333

So the hypothesis holds, but its very weak for this example.

Angle as a random variable

Consider the case of a +/- 30 laminate where the angle is a random variable with a standard deviation of 1 degree

Load the composite lamination theory package if not already loaded

Needs["MaterialMinds`laminate`"]

Define a function that only returns the E_1 component

youngs[prop_, stack_] := engineerForm[prop, stack][[1]] ;

rad = Pi/180. ;

prop = {20., 1, .85, .3} laminate = {{NormalDistribution[30rad, 1 * rad], 1, .5}, {NormalDistribution[-30rad, 1 rad], 1, .5}} ;

{20., 1, 0.85, 0.3}

errorPropogation[youngs[prop, laminate], SampleSize2000, FitDistributionFitNormal, ErrorMethodMonteCarlo, FitDistributionFitNormal]

NormalDistribution[7.34402, 0.337456]

Check the SeriesApproximation method for this case

errorPropogation[youngs[prop, laminate], SampleSize2000, FitDistributionFitNormal, ErrorMethodSeriesApproximation]

NormalDistribution[7.34337, 0.334966]

Make sure the distribution still looks normal.

PDFListPlot[errorPropogation[youngs[prop, laminate], SampleSize2000], ContinuousPlotFitNormal]

[Graphics:HTMLFiles/index_35.gif]

⁃Graphics⁃


Created by Mathematica  (March 7, 2004)