(* ::Package:: *) (************************************************************************) (* This file was generated automatically by the Mathematica front end. *) (* It contains Initialization cells from a Notebook file, which *) (* typically will have the same name as this file except ending in *) (* ".nb" instead of ".m". *) (* *) (* This file is intended to be loaded into the Mathematica kernel using *) (* the package loading commands Get or Needs. Doing so is equivalent *) (* to using the Evaluate Initialization Cells menu command in the front *) (* end. *) (* *) (* DO NOT EDIT THIS FILE. This entire file is regenerated *) (* automatically each time the parent Notebook file is saved in the *) (* Mathematica front end. Any changes you make to this file will be *) (* overwritten. *) (************************************************************************) (* Package pour Mathematica 4 "\!\(\*UnderscriptBox[ RowBox[{\"Propagation\", \"\\\\\", \" \", \"des\", \"\\\\\", \" \", \"incertitudes\"}], \"_\"]\)" par Marcel D\[EAcute]l\[EGrave]ze Coll\[EGrave]ge du Sud, CH 1630 Bulle Version de d\[EAcute]c. 2002 *) BeginPackage["CalculErreur`"] m\[Sigma]::usage= "m\[Sigma][x] o\[UGrave] x = {x1, x2, ..., xn} calcule {m, \!\(\*OverscriptBox[\"\[Sigma]\", \"__\"]\)} o\[UGrave] \n m est la moyenne de x et\n \!\(\*OverscriptBox[\"\[Sigma]\", \"__\"]\)=\!\(\*SqrtBox[FractionBox[ RowBox[{UnderoverscriptBox[\"\[Sum]\", RowBox[{\"j\", \"=\", \"1\"}], \"n\"], SuperscriptBox[ RowBox[{\"(\", RowBox[{SubscriptBox[\"x\", \"j\"], \"-\", \"m\"}], \")\"}], \"2\"]}], RowBox[{\"n\", RowBox[{\"(\", RowBox[{\"n\", \"-\", \"1\"}], \")\"}]}]]]\) l'\[EAcute]cart-type de la moyenne; \n\nm\[Sigma][x,\[Sigma]] o\[UGrave] x = {x1, x2, ..., xn} calcule {m,\!\(\*OverscriptBox[\"\[Sigma]\", \"__\"]\)} o\[UGrave] \n m est la moyenne de x et\n \!\(\*OverscriptBox[\"\[Sigma]\", \"__\"]\)=\!\(\*FractionBox[\"\[Sigma]\", SqrtBox[\"n\"]]\) l'\[EAcute]cart-type de la moyenne; \n\nm\[Sigma][x] o\[UGrave] x = {{x1,\[CapitalDelta]x1,}, {x2,\[CapitalDelta]x2}, ..., {xn,\[CapitalDelta]xn}} calcule {m,\!\(\*OverscriptBox[\"\[Sigma]\", \"__\"]\)} o\[UGrave]\n m est la moyenne de {x1, x2, ...} et\n \!\(\*OverscriptBox[\"\[Sigma]\", \"__\"]\)=\!\(\*SqrtBox[FractionBox[ RowBox[{UnderoverscriptBox[\"\[Sum]\", RowBox[{\"j\", \"=\", \"1\"}], \"n\"], SubsuperscriptBox[\"\[CapitalDelta]x\", \"j\", \"2\"]}], RowBox[{\"n\", RowBox[{\"(\", RowBox[{\"n\", \"-\", \"1\"}], \")\"}]}]]]\) l'estimateur de l'\[EAcute]cart-type de m." resultArrondi::usage= "resultArrondi[{m,\[CapitalDelta]m}] arrondit {m,\[CapitalDelta]m}; \n\n resultArrondi[x] arrondit chaque \[EAcute]l\[EAcute]ment de la liste\n x = {{x1,\[CapitalDelta]x1}, {x2,\[CapitalDelta]x2}, ...}." gauss::usage= "gauss[f,v] calcule la formule de l'incertitude absolue de\n l'expression f par rapport \[AGrave] la liste de variables v." gaussRel::usage= "gaussRel[f,v] calcule la formule de l'incertitude relative de\n l'expression f par rapport \[AGrave] la liste de variables v." evalF::usage= "evalF[f,v,m] calcule les valeurs de l'expression f\n {{f1}, {f2}, ...} en donnant \[AGrave] la liste de variables v les valeurs m." eval\[CapitalDelta]f::usage= "eval\[CapitalDelta]f[f,v,m,i] calcule les incertitudes absolues de l'expression f\n {\[CapitalDelta]f1, \[CapitalDelta]f2, ...} en donnant \[AGrave] la liste de variables v les valeurs m\n et aux incertitudes correspondantes les valeurs i." eval\[CapitalDelta]fRel::usage= "eval\[CapitalDelta]fRel[f,v,m,i] calcule les incertitudes relatives de l'expression f\n {\!\(\*FractionBox[\"\[CapitalDelta]f1\", \"f1\"]\), \!\(\*FractionBox[\"\[CapitalDelta]f2\", \"f2\"]\), ...} en donnant \[AGrave] la liste de variables v les valeurs m\n et aux incertitudes correspondantes les valeurs i." evalF\[CapitalDelta]f::usage= "evalF\[CapitalDelta]f[f,v,m,i] calcule les valeurs et incertitudes absolues de l'expression f\n {{f1,\[CapitalDelta]f1}, {f2,\[CapitalDelta]f2}, ...} en donnant \[AGrave] la liste de variables v les valeurs m\n et aux incertitudes correspondantes les valeurs i." eval\[CapitalDelta]var::usage= "eval\[CapitalDelta]var[v,m,i] calcule les incertitudes absolues sur chaque variable\n {{\[CapitalDelta]x1,\[CapitalDelta]y1,...}, {\[CapitalDelta]x2,\[CapitalDelta]y2}, ...}} en donnant \[AGrave] la liste de variables v les valeurs m\n et aux incertitudes correspondantes les valeurs i." \[GothicCapitalR]::usage= "Plac\[EAcute] dans la d\[EAcute]claration d'une incertitude,\n le symbole \[GothicCapitalR] indique que l'incertitude est relative." substitue::usage= "substitue[v,m] cr\[EAcute]e une liste de substitutions\n o\[UGrave] les variables de la liste v prennent les valeurs de la liste m; \n\nsubstitue[v,m,i] cr\[EAcute]e une liste de substitutions\n o\[UGrave] les variables v prennent les valeurs m et\n les incertitudes correspondantes prennent les valeurs i." graphErr::usage= "graphErr[res] cr\[EAcute]e un graphique avec la liste\n res = {{y1,\[CapitalDelta]y1}, {y2,\[CapitalDelta]y2},...} dont les abscisses sont {1, 2, ...}; \n\n graphErr[absc, res] cr\[EAcute]e un graphique avec les listes\n absc = {x1, x2, ...}, res = {{y1,\[CapitalDelta]y1}, {y2,\[CapitalDelta]y2}, ...}." protege::usage= "protege[v] prot\[EGrave]ge une liste de variables v = {a, b, c, ...} et\n les variables {\[CapitalDelta]a, \[CapitalDelta]b, \[CapitalDelta]c, ...} qui d\[EAcute]signent les incertitudes correspondantes." formatPourcent::usage= "formatPourcent[x] affiche le nombre x au format %.\n Si x est un vecteur, il est converti en une matrice colonne." Off[General::spell1]; Begin["`Private`"] m\[Sigma][x_List]:=Module[{n,m,\[Sigma]}, n=Length[x]; m=Apply[Plus,x]/n; \[Sigma]=Sqrt[Apply[Plus,(x-m)^2]/(n (n-1))]; {N[m],N[\[Sigma]]}]/;VectorQ[x]; m\[Sigma][x_List,\[Sigma]_]:=N[{Apply[Plus,x]/Length[x],\[Sigma]/Sqrt[Length[x]]}]/;VectorQ[x]; m\[Sigma][x_List]:=Module[{n,v,dv,m,\[Sigma]}, n=Length[x]; {v,dv}=Transpose[x]; m=Apply[Plus,v]/n; \[Sigma]=Sqrt[Apply[Plus,dv^2]/(n (n-1))] ; {N[m],N[\[Sigma]]}]/;MatrixQ[x]; resultArrondi[{m_,\[CapitalDelta]m_}]:=Module[{n}, n=Floor[Log[10,Abs[\[CapitalDelta]m]]]; {N[Round[m*10^(-n)]*10^n],N[Round[\[CapitalDelta]m*10^(-n)]*10^n]}/;NumericQ[m]&&NumericQ[\[CapitalDelta]m]] resultArrondi[x_List]:=Map[resultArrondi,x] grad[f_,v_List]:=Table[D[f,v[[j]]],{j,1,Length[v]}] errListe[v_List]:= Table[Symbol[StringInsert[SymbolName[v[[j]]],"\[CapitalDelta]",1]],{j,1,Length[v]}] gauss[f_,v_]:=Abs[D[f,v]*Symbol[StringInsert[SymbolName[v],"\[CapitalDelta]",1]]]/;AtomQ[v] gauss[f_,v_List]:=Sqrt[Apply[Plus,(grad[f,v]*errListe[v])^2]] gaussRel[f_,v_]:=Simplify[Sqrt[(gauss[f,v]/f)^2]] evalF[f_,v_,m_]:=Transpose[{f/.substitue[v,m]}] eval\[CapitalDelta]f[f_,v_,m_,i_]:=gauss[f,v]/.substitue[v,m,i]; eval\[CapitalDelta]fRel[f_,v_,m_,i_]:=eval\[CapitalDelta]f[f,v,m,i]/Flatten[evalF[f,v,m],1] \[GothicCapitalR]; evalF\[CapitalDelta]f[f_,v_,m_,i_]:=Module[{val},val={Flatten[evalF[f,v,m],1], eval\[CapitalDelta]f[f,v,m,i]}; If[MatrixQ[val],Transpose[val],{val}]]; eval\[CapitalDelta]var[v_,m_,i_]:=Transpose[Table[eval\[CapitalDelta]f[v[[k]],v[[k]],Transpose[m][[k]],i[[k]]],{k,1,Length[v]}]]; Protect[\[GothicCapitalR]]; affine[m_,a_*\[GothicCapitalR]+b_]:=a m+b affine[m_,a_*\[GothicCapitalR]]:=a m affine[m_,b_]:=b composante[k_][i_List]:=i[[k]] composante[k_][i_]:=i substitue[v_,m_]:={v->N[m]}/;NumericQ[m] substitue[v_,m_List]:=Table[{v->N[m[[k]]]},{k,1,Length[m]}]/;SameQ[Head[v],Symbol] substitue[v_List,m_List]:=Table[v[[k]]->N[m[[k]]],{k,1,Length[m]}]/;VectorQ[m] substitue[v_List,m_List]:=Table[substitue[v,m[[k]]],{k,1,Length[m]}]/;MatrixQ[m] substitue[v_,m_,i_]:={v->N[m],Symbol[StringInsert[SymbolName[v],"\[CapitalDelta]",1]]->affine[m,i]}/; NumericQ[m] substitue[v_,m_List,i_]:=Table[substitue[v,m[[k]],i],{k,1,Length[m]}]/;SameQ[Head[v],Symbol] substitue[v_List,m_List,i_List]:=Flatten[Table[substitue[v[[k]],m[[k]],i[[k]]],{k,1,Length[m]}]]/;VectorQ[m] substitue[v_List,m_List,i_List]:=Table[substitue[v,m[[k]],Map[composante[k],i]],{k,1,Length[m]}]/;MatrixQ[m] barre[x_,\[CapitalDelta]x_,y_,\[CapitalDelta]y_]:=Line[{{x-\[CapitalDelta]x,y+\[CapitalDelta]y},{x+\[CapitalDelta]x,y+\[CapitalDelta]y},{x,y+\[CapitalDelta]y},{x,y-\[CapitalDelta]y}, {x-\[CapitalDelta]x,y-\[CapitalDelta]y},{x+\[CapitalDelta]x,y-\[CapitalDelta]y}}] graphErr[ordErr_List]:=Module[{a, b, c, dx,p}, p=Transpose[{Range[Length[ordErr]], Transpose[ordErr][[1]], Transpose[ordErr][[2]]}]; a=1-0.1*(Length[ordErr]-1); b = Length[ordErr]+0.1*(Length[ordErr]-1); dx=(b-a)*0.002; c=Min[Table[p[[i,2]]-1.5*p[[i,3]],{i,1,Length[p]}]]; Graphics[ Table[barre[p[[i,1]],dx,p[[i,2]],p[[i,3]]],{i,1,Length[p]}], PlotRange->{{a,b},All}, AxesOrigin->{a,c}, Axes->True, Ticks->{Range[Length[ordErr]],Automatic}, ImageSize->{300, 200}]] graphErr[abscisses_List,ordErr_List]:=Module[{a, b, c,dx, p}, p=Transpose[{abscisses, Transpose[ordErr][[1]], Transpose[ordErr][[2]]}]; a=Min[abscisses]-0.1*(Max[abscisses]-Min[abscisses]); b=Max[abscisses]+0.1*(Max[abscisses]-Min[abscisses]); dx=(b-a)*0.002; c=Min[Table[p[[i,2]]-3*p[[i,3]],{i,1,Length[p]}]]; Graphics[ Table[barre[p[[i,1]],dx,p[[i,2]],p[[i,3]]],{i,1,Length[p]}], PlotRange->{{a,b},All}, PlotRange->{{a,b},All}, AxesOrigin->{a,c}, Axes->True, Ticks->Automatic, ImageSize->{400, 300}]] protege[v_]:=(Map[Protect,v];Map[Protect,errListe[v]];) formatPourcent[x_]:=Transpose[{x/.{\[GothicCapitalR]->100. "%"}}]/;VectorQ[x] formatPourcent[x_]:=x/.{\[GothicCapitalR]->100. "%"}; End[] EndPackage[]