2. Sattel-Knoten-Bifurkation
   Vektorfeld:

Manipulate[Plot[r+(x^2),{x,-10,10}],{r,-10,10}]

3. Transkritische Bifurkation:
    Vektorfeld:

Manipulate[Plot[r*x-(x^2),{x,-8,8}],{r,-6,6}]

4. 
1) Superkritische Bifurkation:
    Vektorfeld:

Manipulate[Plot[r*x-x^3,{x,-2,2}],{r,-5,5}]

2) Subkritische Bifurkation:
    Vektorfeld:

Manipulate[Plot[r*x+x^3,{x,-2,2}],{r,-3,3}]

Subkritische Bifurkation.2
    Vektorfeld:

Manipulate[Plot[r*x+x^3-x^5,{x,-1,1}],{r,-3,3}]

Bifurkationsdiagramme:

bifurcationPoints[eqn_, par_, var_]:= Cases[{par, var}/.Solve[{D[eqn, var]==0, eqn==0}, {var, par}], {Except[_Complex], Except[_Complex]}]

equilibriumCurvePlots[eqn_, {par_, parMin_, parMax_},{var_, varMin_, varmax_}]:= Module[{bifPoints, criticalPoints, parRanges, equilibriumBranches, eigenValues, stabilityCharacteristics, plotSegments},
bifPoints=bifurcationPoints[eqn, par, var];
criticalPoints= Union[{parMin, parMax}, bifPoints[[All, 1]]];
parRanges=Partition[criticalPoints, 2,1];
equilibriumBranches= Solve[eqn==0, var];
eigenValues=D[eqn, var]/.equilibriumBranches;
stabilityCharacteristics=Flatten@Map[If[Re[#]≤  0, Dashing[{}], Dashing[{0.0025,0.01}]]& , Outer[(#1/.par-> #2)&, eigenValues, Mean /@parRanges], {2}];
plotSegments=Distribute[{var/.equilibriumBranches, parRanges}, List];
MapThread[Plot[#1[[1]], Evaluate@Join[{par}, #1[[2]]],PlotStyle-> {Black, Thick,#2}]&, {plotSegments, stabilityCharacteristics}]
]
normalForms={ {"Sattel-Knoten-Bifurkation", r+(x^2)},{"Transkritische Bifurkation", r* x-(x^2)}, {"Superkritische Pitchfork Bifurkation", r *x-(x^3)}, {"Subkritische Pitchfork Bifurkation", r*x+(x^3)},{"Subkritische Pitchfork Bifurkation.2", x^3 + x*r- x^5}}

Manipulate[
 eqn = normalForms[[type, 2]];
 equilibriumPoints = Quiet@Thread[{par, Select[x /. Solve[(eqn /. r -> par) == 0, x], Element[#, Reals] &]}];
 Show[If[showStreamLines, StreamPlot[{0, eqn}, {r, -3, 3}, {x, -3, 3}, StreamColorFunction -> (ColorData["TemperatureMap"][Arg[#4]] &), StreamColorFunctionScaling -> False], Plot[{}, {r, -3, 3}]], If[showEC, equilibriumCurvePlots[eqn, {r, -3, 3}, {x, -3, 3}], Plot[{}, {r, -3, 3}]], PlotRange -> {{-3, 3}, {-3, 3}}, Axes -> False, AspectRatio -> 1, PlotLabel -> Style[ToString[normalForms[[type, 1]]] <> "\n equilibrium points: " <> ToString[equilibriumPoints]], Epilog -> Join[{PointSize[Large], Point /@  equilibriumPoints}, {PointSize[Large], Brown}, Point /@ bifurcationPoints[eqn, r, x]], Frame -> True, FrameLabel -> {"r", Style["x", Italic]}, ImageSize -> {400, 400}],
 {{type, 3, "\!\(\*FractionBox[\(dx\), \(\(\)\(dt\)\)]\) ="}, Array[Rule[#, normalForms[[#, 2]]] &, Length[normalForms]] , PopupMenu}, {{par, 0, "Bifurkations Parameter r"}, -3, 3, Appearance -> "Lab
   eled"},  {{showEC, True, "show equilibrium curves"}, {True, False}, Checkbox}, {{showStreamLines, True, "show streamlines"}, {True, False}, Checkbox}, 
 ControlPlacement -> {Top, Top, Left, Left}, SaveDefinitions -> True, TrackedSymbols -> True,
 ControllerLinking -> True, 
  Initialization :> {eqn =x^2 + r, normalForms = 
     {{"Sattel-Knoten-Bifurkation", x^2 + r}, {"Transkritische Bifurkation", 
       -x^2 + x*r}, {"Superkritische Pitchfork Bifurkation", -x^3 + x*r}, 
      {"Subkritische Pitchfork Bifurkation", x^3 + x*r},{"Subkritische Pitchfork Bifurkation.2", x^3 + x*r- x^5}}, equilibriumPoints = 
     {{0, 0}, {0, 0}, {0, 0}}, equilibriumCurvePlots[eqn_, {par_, parMin_, parMax_}, 
      {var_, varMin_, varmax_}] := Module[{bifPoints, criticalPoints, parRanges, 
       equilibriumBranches, eigenValues, stabilityCharacteristics, plotSegments}, 
      bifPoints = bifurcationPoints[eqn, par, var]; criticalPoints = 
        Union[{parMin, parMax}, bifPoints[[All,1]]]; 
       parRanges = Partition[criticalPoints, 2, 1]; equilibriumBranches = 
        Solve[eqn == 0, var]; eigenValues = D[eqn, var] /. equilibriumBranches; 
       stabilityCharacteristics = Flatten[Map[If[Re[#1] <= 0, Dashing[{}], 
            Dashing[{0.0025, 0.01}]] & , Outer[#1 /. par -> #2 & , eigenValues, 
           Mean /@ parRanges], {2}]]; plotSegments = 
        Distribute[{var /. equilibriumBranches, parRanges}, List]; 
       MapThread[Plot[#1[[1]], Evaluate[Join[{par}, #1[[2]]]], 
          PlotStyle -> {Black, Thick, #2}] & , {plotSegments, 
         stabilityCharacteristics}]], bifurcationPoints[eqn_, par_, var_] := 
     Cases[{par, var} /. Solve[{D[eqn, var] == 0, eqn == 0}, {var, par}], 
      {Except[_Complex], Except[_Complex]}], Attributes[PlotRange] = 
     {ReadProtected}}]