How can I perform this definite integral (int not working)?
2 次查看(过去 30 天)
显示 更早的评论
Hello, everyone,
I'm currently trying to solve some LTI and LTV equations that are related to each other, I have the logic on how to solve them with the general solution (I know I can work with ODE solvers but I'm making a comparison of the methods); but the main problem here is that I'm trying to solve an definite integral with int but Matlab is giving me the exact same expression as the line I typed. I read about it in other posts and about numerical integration, but the problem here is that I need to integrate this expression in terms of a symbolic variable.
Here's the code of what I'm trying to do, thanks in advance!
%% Sol. for Lyapunov, Gamma y Lambda. %%
% System:
A=[-1 0;0 -1];
B=[0;1];
C=[1 1];
CT = transpose(C);
D=0;
%% Sol. Lyapunov:
syms Q
% Gain rho:
EiA = eig(A);
crho = -2*min(real(EiA))
rho = crho + 0.001;
A_bS = 0.5*rho*eye(2) + A;
A_bST = transpose(A_bS);
Q_bS = CT*Q*C;
D_S = [1 0; 0 1]; % initial conditions of S(0)
% -- Analytic solution for Lyapunov:
syms t tau
t0 = 0;
tf = 10;
% Lyapunov solution:
S = expm(-A_bST*(t - t0))*D*expm(-A_bS*(t-t0)) + int(expm(-A_bST*(t-tau))*Q_bS*expm(-A_bS*(t-tau)),tau,t0,t)
vpa(S,4)
%% Lambda:
Si = inv(S);
A_bL = (A - Si*CT*Q*C);
% State-transition matrix:
syms x1_0 x2_0
X = [x1_0; x2_0];
dx = A_bL*X;
x1= int(dx(1),tau,t0,t)
x2= int(dx(2),tau,t0,t)
% Espec. of X:
x1_0 = 1; x2_0 = 0;
x1_1 = eval(x1);
x2_1 = eval(x2);
x1_0 = 0; x2_0 = 1;
x1_2 = eval(x1);
x2_2 = eval(x2);
X = [x1_1 x2_1;
x1_2 x2_2];
clear t0
syms t0
X_t0 = subs(X,t,t0);
Io = X*inv(X_t0); % State-transition matrix Io(t,t0)
vpa(Io,4)
t0 = tau;
X_tau = subs(X,t,tau);
Io_tau = X*inv(X_tau); % State-transition matrix Io(t,tau)
vpa(Io_tau,4)
% -- Analytic solution of Lambda:
x0_L = [1; 0]; % Initial conditions for X
clear t0
t0 = 0;
syms Di
phi = [Di];
Lmb = Io*x0_L + int(Io_tau*B*phi,tau,t0,tf) % hERE'S THE DEFINITE INTEGRAL I'M DEALING WITH
vpa(Lmb,4)
3 个评论
Walter Roberson
2020-3-27
Shrug. Most functions do not have closed form integrals.
Also your t0 is 0, and both of your formula in Io_tau*B_L*phi go to one of the infinities as tau approaches 0. When I substitute in concrete numbers for the constants, and ask for a numeric integration, sure enough the result is one of the infinities.
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Computations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!