In[]:=
ff[args__]:=(​​a={{{args}[[1]],{args}[[2]]},{{args}[[3]],{args}[[4]]}};​​fhelper[a]);​​fhelper[a_]:=Max[Re[Eigenvalues[a]]];​​av0={{1.,1.},{1.,1.}};​​varex0=Flatten[{av0}];​​nder1[f_]:=(Derivative@@Flatten[{{1,0},{0,0}}])[f];​​nder2[f_]:=(Derivative@@Flatten[{{0,1},{0,0}}])[f];​​varexf=Flatten[{Table[av[i][t],{i,2}],Table[1.0,{i,3,4}]}];​​varexNDsolve=Table[av[i][t],{i,2}];​​eqnlist={​​Derivative[1][av[1]][t]nder1[f][Sequence@@varexf],Derivative[1][av[2]][t]nder2[f][Sequence@@varexf],av[1][0]av0[[1,1]],av[2][0]av0[[1,2]]};​​solDEsuper=NDSolve[eqnlist/.f->ff,varexNDsolve,{t,0,0.1}]
NDSolve
:Encountered non-numerical value for a derivative at t == 0..
Out[]=
NDSolve
′
av[1]
[t]
1
2
1-
-2.+2av[1][t]
2
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]
′
Re
1.+av[1][t]-
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]

0.+Reav[1][t]-
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]
-Reav[1][t]+
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]
≥0
1
2
1+
-2.+2av[1][t]
2
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]
′
Re
1.+av[1][t]+
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]

True
,
′
av[2]
[t]
-
1.
′
Re
1.+av[1][t]-
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]

1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]
0.+Reav[1][t]-
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]
-Reav[1][t]+
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]
≥0
1.
′
Re
1.+av[1][t]+
1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]

1.-2.av[1][t]+
2
av[1][t]
+4.av[2][t]
True
,av[1][0]1.,av[2][0]1.,{av[1][t],av[2][t]},{t,0,0.1}
In[]:=
nder2[ff][Sequence@@varex0]
Out[]=
0.5
′
Re
[4.]
In[]:=
ff[args__]:=(​​a={{{args}[[1]],{args}[[2]]},{{args}[[3]],{args}[[4]]}};​​fhelper[a]);​​fhelper[a_]:=Max[Eigenvalues[a]];​​av0={{1.,1.},{1.,1.}};​​varex0=Flatten[{av0}];​​nder1[f_]:=(Derivative@@Flatten[{{1,0},{0,0}}])[f];​​nder2[f_]:=(Derivative@@Flatten[{{0,1},{0,0}}])[f];​​varexf=Flatten[{Table[av[i][t],{i,2}],Table[1.0,{i,3,4}]}];​​varexNDsolve=Table[av[i][t],{i,2}];​​eqnlist={​​Derivative[1][av[1]][t]nder1[f][Sequence@@varexf],Derivative[1][av[2]][t]nder2[f][Sequence@@varexf],av[1][0]av0[[1,1]],av[2][0]av0[[1,2]]};​​solDEsuper=NDSolve[eqnlist/.f->ff,varexNDsolve,{t,0,0.1}]
Out[]=
av[1][t]InterpolatingFunction
Domain: {{0.,0.1}}
Output: scalar
[t],av[2][t]InterpolatingFunction
Domain: {{0.,0.1}}
Output: scalar
[t]