This answer does not produce solutions of OP's equation, but it does show how to deal with a similar matrix equation.
NDSolve
can handle equations given with matrices, but in this answer I am showing the generation of a list of equations corresponding to the original matrix one.
First we introduce the functions to be found:
n = 4;
funcs = Table[ToExpression["f" <> ToString[i]], {i, n}];
X = Through[funcs[t]]
(* {f1[t], f2[t], f3[t], f4[t]} *)
dX = D[X, t]
(* {Derivative[1][f1][t], Derivative[1][f2][t],
Derivative[1][f3][t], Derivative[1][f4][t]} *)
Here we define the vector of integral functions -- F[_,_]
will be replaced below.
iX = F[#, t] & /@ funcs
(* {F[f1, t], F[f2, t], F[f3, t], F[f4, t]} *)
Obtain a random matrix for A
:
SeedRandom[1326]
A = RandomChoice[Exp[-Range[0, 6]] -> Range[0, 6], {n, n}];
A = Rescale[A + DiagonalMatrix[ConstantArray[1, n]]];
MatrixForm[A]
Form the equations:
eqs = Thread[dX == DiagonalMatrix[iX].A.X - X];
Next ideally we will do this:
eqs = eqs /. F[f_, t_] :> Integrate[f[x], {x, 0, t}];
or this:
eqs = eqs/.F[f_,t_] :> (t (f[t]+f[0])/2);
(Approximation of the integral using Trapezoidal formula.)
But since NDSolve
can deal with constant delays only, we are going to use this replacement rule:
eqs = eqs/.F[f_,t_] :> (t (f[t]-f[t-1])/2);
ColumnForm[eqs]
Define initial conditions:
initConds = Thread[Through[funcs[t /; t <= 0]] == 1]
(* {f1[t /; t <= 0] == 1, f2[t /; t <= 0] == 1, f3[t /; t <= 0] == 1, f4[t /; t <= 0] == 1} *)
Find the solution:
NDSolve[Join[eqs, initConds], funcs, {t, 0, 10}]