Beispiel zur Brownschen Brücke

AKVFM Numerische Methoden der Finanz- und Versicherungsmathematik

TU Wien, SS 2009, Reinhold Kainhofer

Definition der BB

$TextStyle={FontFamily->"Helvetica"};

BBridgeInter[{{s_,xs_}, {u_, xu_}}]:=BBridgeInter[{s,xs}, {u, xu}];
BBridgeInter[{s_,xs_}, {u_, xu_}]:=Module[{t=((u+s)/2)},
{t,xs+ ((t-s)/(u-s))(xu-xs)+ (Sqrt[(((u-t)(t-s))/(u-s))])Random[NormalDistribution[0,1]]}
]

ClearAll[vals];

Anfangs- und Endpunkt

vals[i_Integer]/;i==0:=vals[0]={{0.,0.}, {10.,(Sqrt[10]) Random[NormalDistribution[0,1]]}};

Rekursive Definition durch Intervallhalbierung

vals[i_Integer]/;i>0:=vals[i]=Module[{SSS,res,vvv},
res=SSS[#[[1]], BBridgeInter[#]]&/@Partition[vals[i-1],2,1];
AppendTo[res, Last@vals[i-1]]/.SSS[vvv___]:>Sequence[vvv]
];

Werte zuruecksetzen, um neuen Pfad zu erzeugen (die Werte werden ja zwischengespeichert)

resetVals[i_Integer]:=Module[{},
(vals[#]=.)&/@Range[0,i];
];

resetVals[10]

RandomColor[]:=RGBColor[RandomReal[{0,1},{3}]]

Die Werte, rekursiv

vals[1]
vals[2]
vals[3]

recursionDepth=10;
range={Min[#], Max[#]}&[Last/@(Join@@(vals/@Range[0,recursionDepth]))];

plots=ListPlot[vals[#],PlotRange->range, Joined->True,PlotStyle->{RandomColor[]}]&/@Range[0,recursionDepth];

GraphicsGrid[Partition[plots,2], Spacings->0,ImageSize->600]

GraphicsGrid[Partition[Show[Take[plots, #]]&/@Range[recursionDepth], 2], Spacings->0,ImageSize->600]

Print[Show[Take[plots, #]]]&/@Range[recursionDepth];

Animate[Show[Take[plots, k]],{k,1,recursionDepth,1}]

Show[plots]

Print@Show[#]&/@Prepend[Partition[plots, 2, 1], plots[[1]]];

GraphicsGrid[Partition[Show/@Prepend[Partition[plots, 2, 1], plots[[1]]], 2], Spacings->0, ImageSize->600]

Animate[Show[{plots[[k]], plots[[k+1]]}],{k,1,recursionDepth-1,1}]

Alle Werte löschen, damit neuer Pfad erstellt wird:

resetVals[recursionDepth]