How to take an integral of a matrix
    16 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Radik Srazhidinov
 el 14 de En. de 2019
  
    
    
    
    
    Comentada: Radik Srazhidinov
 el 15 de En. de 2019
            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?
2 comentarios
  Walter Roberson
      
      
 el 14 de En. de 2019
				Do not use inv() for this purpose. Use \ instead.
You can precalculate much of that for performance reasons.
And do not do it all in an anonymous function, since the exp(j*x*I - A - BF) has to be calculated twice.
Respuesta aceptada
  David Goodmanson
      
      
 el 14 de En. de 2019
        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.
6 comentarios
  Walter Roberson
      
      
 el 15 de En. de 2019
				Radik:
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];
syms x real     %changed
G=F*((exp(i*x)*I-A-B*F)\B);
W=R*R';
P=T*T';
f = G*G';
L=int(f,[0 2.*pi])
K=W*P*L;
Más respuestas (0)
Ver también
Categorías
				Más información sobre Visualization and Data Export en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


