Insektenflug

Problem

Ein Insekt hat ein Facettenauge. Das Auge besteht aus vielen Facetten. Eine Facette ist vorstellbar als dünnes Rohr, das sich nach unten verengt. Angenommen, das Insekt fixiert mit einer Facette eine Lampe, die sie für die Sonne hält. Es fliegt bezüglich der Lampe immer geradeaus, sodass der Winkel zwischen Flugrichtung und Lampenrichtung immer konstant bleibt. 
 Problem 1: Welche Kure entsteht?
 Problem 2: Kann man durch eine Simuation zeigen, dass das Insekt immer resp. meistens auf der Lampe landet, wenn es auch zwischendurch ab und zu zufällig den Richtungswinkel (d.h. die Facette) ändert? (Die Sonne ist ja unendlich weit weg, die Lampe jedoch nicht...)
Zur Differentialgleichung: Sei α = Winkel zwischen Kurventangente und Kreistangente (Kreis mit Zentrum Lampe durch den Ort des Insekts).
α= const., also auch tan α = const.. t = Zeit, r = Radius zum Insekt.
Beziehung: Δr / (Δt * r) = tan α = const. = k. Somit: dr / dt *1/r = k, d.h. r' = k * r. Somit Lösung: r(t) = C * (e^(k*t)).  Start:  r(t0) = r0 = C * (e^(k*t0)) , C = r0 *  (e^(-k*t0))
Somit r(t) = r0 *  (e^((t - t0)*k))= r0 *  (e^((t - t0) * tan α))

Eine Lösung (Programmentwicklung):

Remove["Global`*"];
f[α_, r0_, t_, t0_] := r0 E^(Tan[α] (t - t0));  
    f[α, r0, t, t0]

step = 11 ;

a=Table[
        Random[Real, {-Pi/4, Pi/4}], {j, 1, step}]

tt=Table[Random[Real, {0, 3}], {j, 1, step}]

rs = 5;  q3 = 1; t0 = 0; r = step;  
    z = Array[p, step - 1]

For[i = 1, 
      i ≤ step - 1, i++, 
If[
        Abs[f[a[[i]], rs, Sum[tt[[j]], {j, 1, i}], t0]*q3] <= 0.5, 
        ex = 1; msg = "Insekt hat Pech", ex = 0; 
        msg = "Insekt hat Glück"]; 
p[i] = 
        ParametricPlot[{Cos[t], Sin[t]} f[a[[i]], rs, t, t0]*q3, {t, 
            Sum[tt[[j]], {j, 1, i - 1}], Sum[tt[[j]], {j, 1, i}]}, 
          DisplayFunction -> Identity]; 
Append[z, 
        p[i]]; 
q3 = (Abs[
              f[a[[i]], rs, Sum[tt[[j]], {j, 1, i}], t0]*
                q3])/(Abs[
              f[a[[i + 1]], rs, Sum[tt[[j]], {j, 1, i}], 
                t0]]); 
If[ex == 1, r = i;  
        i = step;, r = i;];]

===> Animate   !!!!

Table[{Show[Take[z, h], 
          Graphics[
            Disk[{0, 0}, 
              0.5]], {DisplayFunction -> $DisplayFunction}];  
        Print[msg];}, {h, 1, r}]

===> Immer wieder neu: Animate   !!!!

Remove["Global`*"];
f[α_, r0_, t_, t0_] := r0 E^(Tan[α] (t - t0));  
    step = 30; a = Table[Random[Real, {-Pi/4, Pi/4}], {j, 1, step}] ; 
    tt = Table[
        Random[Real, {0, 3}], {j, 1, step}] ;
rs = 5;  q3 = 1; t0 = 0; r = step;  
    z = Array[p, step - 1];
For[i = 1, 
        i ≤ step - 1, i++, 
If[
          Abs[f[a[[i]], rs, Sum[tt[[j]], {j, 1, i}], t0]*q3] <= 0.5, 
          ex = 1; msg = "Insekt hat Pech", ex = 0; 
          msg = "Insekt hat Glück"]; 
p[
            i] = ParametricPlot[{Cos[t], Sin[t]} f[a[[i]], rs, t, t0]*
              q3, {t, Sum[tt[[j]], {j, 1, i - 1}], 
              Sum[tt[[j]], {j, 1, i}]}, 
            DisplayFunction -> Identity]; 
Append[z, 
          p[i]]; 
q3 = (Abs[
                f[a[[i]], rs, Sum[tt[[j]], {j, 1, i}], t0]*
                  q3])/(Abs[
                f[a[[i + 1]], rs, Sum[tt[[j]], {j, 1, i}], 
                  t0]]); 
If[ex == 1, r = i;  
          i = step;, r = i;];];
Table[{Show[Take[z, h], 
          Graphics[
            Disk[{0, 0}, 
              0.5]], {DisplayFunction -> $DisplayFunction}];  
        Print[msg];}, {h, 1, r}]

Verfolgungskurve, Parameter nach Erich

Hund verfolgt Läufer, Läufer auf Ellipse

Remove[u,v,uu,vv]

a  v Hund = 10, kleiner v Läufer

X[t_]:=10+20 Cos[t];  Y[t_]:=10+15 Sin[t];
a1=ParametricPlot[{X[t],Y[t]},{t,0,2 Pi},AspectRatio->Automatic];

w=10;
glei1 = (u'[t]== w (X[t]-u[t])/Sqrt[(X[t]-u[t])^2 + (Y[t]-v[t])^2])

glei2 = (v'[t]== w (Y[t]-v[t])/Sqrt[(X[t]-u[t])^2 + (Y[t]-v[t])^2])

glei3=(u[0]==60);  glei4=(v[0]==70);

loes=Flatten[NDSolve[{glei1,glei2,glei3,glei4},{u[t],v[t]},{t,0,20}]]

q[t_]:= {u[t],v[t]} /. loes;   q[t]

a2=ParametricPlot[q[t],{t,0,20},AspectRatio->Automatic];

Show[a1,a2];

a  v Hund = 20, grösser v Läufer

w=20;
glei1 = (u'[t]== w (X[t]-u[t])/Sqrt[(X[t]-u[t])^2 + (Y[t]-v[t])^2])

glei2 = (v'[t]== w (Y[t]-v[t])/Sqrt[(X[t]-u[t])^2 + (Y[t]-v[t])^2])

glei3=(u[0]==60);  glei4=(v[0]==70);

loes=Flatten[NDSolve[{glei1,glei2,glei3,glei4},{u[t],v[t]},{t,0,20}]]

q[t_]:= {u[t],v[t]} /. loes;   q[t]

a2=ParametricPlot[q[t],{t,0,20},AspectRatio->Automatic];

Show[a1,a2];