.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_calibration/least_squares_and_gaussian_calibration/plot_calibration_deflection_tube.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_calibration_least_squares_and_gaussian_calibration_plot_calibration_deflection_tube.py: Calibration of the deflection of a tube ======================================= .. GENERATED FROM PYTHON SOURCE LINES 6-8 We consider a calibration of the deflection of a tube as described :ref:`here `. .. GENERATED FROM PYTHON SOURCE LINES 10-16 .. code-block:: default import openturns as ot import openturns.viewer as viewer from matplotlib import pylab as plt ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 17-19 Create a calibration problem ---------------------------- .. GENERATED FROM PYTHON SOURCE LINES 21-22 We load the model from the use case module : .. GENERATED FROM PYTHON SOURCE LINES 22-25 .. code-block:: default from openturns.usecases import deflection_tube as deflection_tube dt = deflection_tube.DeflectionTube() .. GENERATED FROM PYTHON SOURCE LINES 26-27 We create a sample out of our input distribution : .. GENERATED FROM PYTHON SOURCE LINES 27-31 .. code-block:: default sampleSize = 100 inputSample = dt.inputDistribution.getSample(sampleSize) inputSample[0:5] .. raw:: html
ForceLengthLocationExternal diameterInternal diameterYoung Modulus
00.91720191.510.80.1201371.2
10.9804121.510.80.1199257.1
21.1072031.510.80.1201831.9
31.0597261.510.80.1200776.3
40.91384371.510.80.1200931.2


.. GENERATED FROM PYTHON SOURCE LINES 32-33 We take the image of our input sample by the model : .. GENERATED FROM PYTHON SOURCE LINES 33-36 .. code-block:: default outputDeflection = dt.model(inputSample) outputDeflection[0:5] .. raw:: html
DeflectionLeft angleRight angle
0-6.294212e-06-1.258842e-051.573553e-05
1-6.799368e-06-1.359874e-051.699842e-05
2-7.580733e-06-1.516147e-051.895183e-05
3-7.293815e-06-1.458763e-051.823454e-05
4-6.284898e-06-1.25698e-051.571224e-05


.. GENERATED FROM PYTHON SOURCE LINES 37-42 .. code-block:: default observationNoiseSigma = [0.1e-6,0.05e-5,0.05e-5] observationNoiseCovariance = ot.CovarianceMatrix(3) for i in range(3): observationNoiseCovariance[i,i] = observationNoiseSigma[i]**2 .. GENERATED FROM PYTHON SOURCE LINES 43-48 .. code-block:: default noiseSigma = ot.Normal([0.,0.,0.],observationNoiseCovariance) sampleObservationNoise = noiseSigma.getSample(sampleSize) observedOutput = outputDeflection + sampleObservationNoise observedOutput[0:5] .. raw:: html
DeflectionLeft angleRight angle
0-6.291812e-06-1.197505e-051.597891e-05
1-6.746338e-06-1.423263e-051.611792e-05
2-7.639595e-06-1.608291e-051.940262e-05
3-7.402455e-06-1.499955e-051.723244e-05
4-6.222688e-06-1.303563e-051.532097e-05


.. GENERATED FROM PYTHON SOURCE LINES 49-55 .. code-block:: default observedInput = ot.Sample(sampleSize,2) observedInput[:,0] = inputSample[:,0] # F observedInput[:,1] = inputSample[:,5] # E observedInput.setDescription(["Force","Young Modulus"]) observedInput[0:5] .. raw:: html
ForceYoung Modulus
00.9172019201371.2
10.980412199257.1
21.107203201831.9
31.059726200776.3
40.9138437200931.2


.. GENERATED FROM PYTHON SOURCE LINES 56-62 .. code-block:: default fullSample = ot.Sample(sampleSize,5) fullSample[:,0:2] = observedInput fullSample[:,2:5] = observedOutput fullSample.setDescription(["Force","Young","Deflection","Left Angle","Right Angle"]) fullSample[0:5] .. raw:: html
ForceYoungDeflectionLeft AngleRight Angle
00.9172019201371.2-6.291812e-06-1.197505e-051.597891e-05
10.980412199257.1-6.746338e-06-1.423263e-051.611792e-05
21.107203201831.9-7.639595e-06-1.608291e-051.940262e-05
31.059726200776.3-7.402455e-06-1.499955e-051.723244e-05
40.9138437200931.2-6.222688e-06-1.303563e-051.532097e-05


.. GENERATED FROM PYTHON SOURCE LINES 63-66 .. code-block:: default graph = ot.VisualTest.DrawPairs(fullSample) view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_deflection_tube_001.png :alt: plot calibration deflection tube :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 67-69 Setting up the calibration -------------------------- .. GENERATED FROM PYTHON SOURCE LINES 71-78 .. code-block:: default XL = 1.4 # Exact : 1.5 Xa = 1.2 # Exact : 1.0 XD = 0.7 # Exact : 0.8 Xd = 0.2 # Exact : 0.1 thetaPrior = [XL, Xa, XD, Xd] .. GENERATED FROM PYTHON SOURCE LINES 79-90 .. code-block:: default sigmaXL = 0.1 * XL sigmaXa = 0.1 * Xa sigmaXD = 0.1 * XD sigmaXd = 0.1 * Xd parameterCovariance = ot.CovarianceMatrix(4) parameterCovariance[0,0] = sigmaXL**2 parameterCovariance[1,1] = sigmaXa**2 parameterCovariance[2,2] = sigmaXD**2 parameterCovariance[3,3] = sigmaXd**2 parameterCovariance .. raw:: html

[[ 0.0196 0 0 0 ]
[ 0 0.0144 0 0 ]
[ 0 0 0.0049 0 ]
[ 0 0 0 0.0004 ]]



.. GENERATED FROM PYTHON SOURCE LINES 91-94 .. code-block:: default calibratedIndices = [1,2,3,4] calibrationFunction = ot.ParametricFunction(dt.model, calibratedIndices, thetaPrior) .. GENERATED FROM PYTHON SOURCE LINES 95-97 .. code-block:: default sigmaObservation = [0.2e-6,0.03e-5,0.03e-5] # Exact : 0.1e-6 .. GENERATED FROM PYTHON SOURCE LINES 98-103 .. code-block:: default errorCovariance = ot.CovarianceMatrix(3) errorCovariance[0,0] = sigmaObservation[0]**2 errorCovariance[1,1] = sigmaObservation[1]**2 errorCovariance[2,2] = sigmaObservation[2]**2 .. GENERATED FROM PYTHON SOURCE LINES 104-108 .. code-block:: default calibrationFunction.setParameter(thetaPrior) predictedOutput = calibrationFunction(observedInput) predictedOutput[0:5] .. raw:: html
DeflectionLeft angleRight angle
0-2.667796e-06-8.892653e-061.445056e-05
1-2.881906e-06-9.606352e-061.561032e-05
2-3.213087e-06-1.071029e-051.740422e-05
3-3.091476e-06-1.030492e-051.67455e-05
4-2.663848e-06-8.879493e-061.442918e-05


.. GENERATED FROM PYTHON SOURCE LINES 109-111 Calibration with gaussian non linear least squares -------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 113-115 .. code-block:: default algo = ot.GaussianNonLinearCalibration(calibrationFunction, observedInput, observedOutput, thetaPrior, parameterCovariance, errorCovariance) .. GENERATED FROM PYTHON SOURCE LINES 116-118 .. code-block:: default algo.run() .. GENERATED FROM PYTHON SOURCE LINES 119-121 .. code-block:: default calibrationResult = algo.getResult() .. GENERATED FROM PYTHON SOURCE LINES 122-124 Analysis of the results ----------------------- .. GENERATED FROM PYTHON SOURCE LINES 126-129 .. code-block:: default thetaMAP = calibrationResult.getParameterMAP() thetaMAP .. raw:: html

[1.50015,1.00142,0.799882,0.19988]



.. GENERATED FROM PYTHON SOURCE LINES 130-131 Compute a 95% confidence interval for each marginal. .. GENERATED FROM PYTHON SOURCE LINES 133-139 .. code-block:: default thetaPosterior = calibrationResult.getParameterPosterior() alpha = 0.95 dim = thetaPosterior.getDimension() for i in range(dim): print(thetaPosterior.getMarginal(i).computeBilateralConfidenceInterval(alpha)) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none [1.48002, 1.52078] [0.97709, 1.02634] [0.795846, 0.803887] [0.199877, 0.199915] .. GENERATED FROM PYTHON SOURCE LINES 140-143 .. code-block:: default graph = calibrationResult.drawObservationsVsInputs() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_deflection_tube_002.png :alt: plot calibration deflection tube :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 144-147 .. code-block:: default graph = calibrationResult.drawObservationsVsPredictions() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_deflection_tube_003.png :alt: plot calibration deflection tube :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 148-151 .. code-block:: default graph = calibrationResult.drawResiduals() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_deflection_tube_004.png :alt: , Residual analysis, Residual analysis, Residual analysis :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 152-156 .. code-block:: default graph = calibrationResult.drawParameterDistributions() view = viewer.View(graph) plt.show() .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_deflection_tube_005.png :alt: plot calibration deflection tube :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 6.439 seconds) .. _sphx_glr_download_auto_calibration_least_squares_and_gaussian_calibration_plot_calibration_deflection_tube.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_calibration_deflection_tube.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_calibration_deflection_tube.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_