MATLAB: How to take an integral of a matrix

integrationmatrix

I want to find an integral of a matrix:
T=[2 -sqrt(3) -1]';
R=[0.0042 -0.0755];
I=eye(3);
A=diag([7, 5, 2.05]');
B=[1 1 1]';
F=[-30.6722 17.8303 -0.3775];
fun=@(x) T*F*inv(exp(i*x)*I-A-B*F)*B*R*R'*B'*inv(exp(i*x)*I-A-B*F)'*F'*T';
q=integral(fun,0,2.*pi)
Can you please help me to correct the code? It is possible to use this integral function for matrix?

Best Answer

Hi Radik,
I assume you basically want to integrate each element in the resulting product matrix.
Lots of inner and outer products here. Looking at the overall product, R*R' is (row) x (col), a scalar inner product, so you can pull that out as an overall factor [where Matlab uses ' instead of the * that is in the formula]. The quantity
G = F*inv(exp(i*x)*I-A-B*F)*B
is (row) x (matrix) x (col) so it is also a scalar. Now that R*R' is out front, one can pull out G*G' and all that is left is T*T', which is the outer product (col) x (row). It's a matrix of rank 1. All together you have
(T*T')*(R*R')* Integral(G*G')dx
so you only have to integrate a scalar function of x. As Walter pointed out, in general it's better to use
G = F*( (exp(i*x)*I-A-B*F)\B )
instead of inv, but for a 2x2 it probably doesn't matter too much.