- #1
Jeffrey Eiyike
- 8
- 0
Yes, please do. It's best if you post it inline using code tags. It should look like this:Jeffrey Eiyike said:I can upload the code if you want to see my attempt.
function dPdt = mRiccati(t,P, B, Q, R)
%computes Phi
P = reshape(P, size(Q)); % Convert from "n^2"-by-1 to "n"-by-"n"
dPdt = -Q + P' * B * R^-1 * B.' * P; % Determine derivative
dPdt = dPdt(:); % Convert from "n"-by-"n" to "n^2"-by-1 or converting to column vector
end
function dhdt = mRiccati2(t, P0, B, h, R)
%compute h
h = reshape(h, size(B)); % Convert from "n^2"-by-1 to "n"-by-"n"
dhdt = 0.5* P0' * B * R^-1 * B.' * h; % Determine derivative
dhdt = dhdt(:); % Convert from "n"-by-"n" to "n^2"-by-1
endfunction dXdt = mRiccati3(t,X, h0, P0, B, R, sigma)
% Compute Chi
X = reshape(X, size(R)); % Convert from "n^2"-by-1 to "n"-by-"n"
dXdt = (1/2)* h0' * B * R^-1 * B.' * h0- ((sigma^2)/2)*trace(-P0) ; % Determine derivative
dXdt = dXdt(:); % Convert from "n"-by-"n" to "n^2"-by-1
end
clear all; close all
% sigma=[1 1 1 0.5 0.5 0.5 0.33];
sigma=[1 1 1 1.4142 1.4142 1.4142 1.7321];
q=[1 1 1 1 1 1 1];
C=[5; 5; 5; 10; 10; 10; 15];
e=[4; 3; 2; 2; 2; 2; 3];
dt=0.1; %step size
B = [1; 1]; % Input vector Matrix
R = 1; %penalty on the optimal U that updates the contract
N = [0 3]; % Final condition Linear term
t_end = 20;
tspan = t_end:(-0.1):0;
%
%Solves the Matrix Differential equation Backwards
for ii=1:length(sigma);%:length(sigma) Q = [q(ii) 0; 0 0]; %Final condition on the quadratic term
%Solution for the first Matrix Differential equation
[T1 P] = ode45(@(t,P)mRiccati(t,P, B, Q, R), tspan, Q);
for i= 1:length(P)
P0 = reshape(P(i,:), size(Q));
%Solution for the second Matrix Differential equation (Phi)
[T2, h] = ode45(@(t,h) mRiccati2(t, P0, B, h, R), tspan, N);% obtain matrix P from last entry (initial value)(h)
h0 = reshape(h(i,:), size(B));
%Solution for the Third Matrix Differential equation(X)
[T3, X] = ode45(@(t,X) mRiccati3(t,X, h0, P0, B, R, sigma(ii)), tspan, 0);
end
% Flips the parameter
h=flipud(h);
P=flipud(P);
X=flipud(X);
% Compute the value function, error and contract integrand
for j= 1: length(P)
% display(num2str(length(P)))
ZZ= [e(ii, j) C(ii, j)]; % State
V(ii, j)= -0.5* ZZ*reshape(P(j,:), size(Q))*ZZ' + reshape(h(j,:), size(B))'*ZZ'- X(j); % Value function
U(ii, j)= inv(R)*B'*(-reshape(P(j,:), size(Q))*ZZ'+ reshape(h(j,:), size(B)));
C(ii, j+1) = C(ii, j) + U(ii, j)*dt; %Contract
e(ii, j+1)=e(ii, j)+ U(ii, j)*dt ;%-sigma(ii)*sqrt(dt)*normrnd(0,1); %error
end
function dPdt = mRiccati(t,P, B, Q, R)
%computes Phi
P = reshape(P, size(Q)); % Convert from "n^2"-by-1 to "n"-by-"n"
...
A Matrix Riccati differential equation is a type of differential equation that involves a matrix function and its derivative. It is commonly used in control theory and system analysis to model the evolution of a system over time.
MATLAB is a popular programming language that is commonly used to solve mathematical problems, including Matrix Riccati differential equations. It has built-in functions and tools for solving differential equations numerically, making it a powerful tool for scientists and engineers.
One of the main advantages of using MATLAB is its versatility and efficiency in solving complex mathematical problems. It also has a user-friendly interface, making it accessible to both experts and beginners. Additionally, MATLAB has a large community of users and resources, making it easier to troubleshoot and find solutions to problems.
Although MATLAB is a powerful tool for solving Matrix Riccati differential equations, it does have some limitations. One of the main limitations is the high cost of the software, which may be a barrier for some users. Additionally, MATLAB may not be the best tool for solving very large or complex systems, as it may require a significant amount of memory and computing power.
Yes, MATLAB can be used to solve a wide range of differential equations, including ordinary differential equations, partial differential equations, and stochastic differential equations. It also has the capability to handle both linear and nonlinear equations. However, the specific methods and techniques for solving these equations may vary.