Skip to content

Commit

Permalink
Issue #56
Browse files Browse the repository at this point in the history
Enhancement: Renamed some variables
Enhancement: Divided one snippet on three parts
Enhancement: Created some new snippets for creation picture generators
  • Loading branch information
marinapotashenkova committed Feb 24, 2018
1 parent aa62022 commit 30e8a7a
Show file tree
Hide file tree
Showing 7 changed files with 191 additions and 23 deletions.
38 changes: 15 additions & 23 deletions products/+elltool/+doc/+snip/s_chapter06_section07_snippet01.m
Original file line number Diff line number Diff line change
Expand Up @@ -50,31 +50,23 @@
diagMat = diag(alphaVec);
uEllObj = ellipsoid(diagMat);
% define linear systems
linSys=elltool.linsys.LinSysContinuous(aMat, bMat, uEllObj);
linSysObj=elltool.linsys.LinSysContinuous(aMat, bMat, uEllObj);
% initialize direction matrix
nShape = 4;
mSize = 10;
dirMat = 2*(rand(nShape, mSize) - 0.5);
for iElem = 1 : mSize
dirMat(:, iElem) = dirMat(:, iElem) ./ norm(dirMat(:, iElem));
end;
nDims = 4;
nDirs = 1;
dirMeshVec = 0 : (2 * pi / nDirs) : 2 * pi;
dirNum = length(dirMeshVec) ^ nDims;
[a1, a2, a3, a4] = ndgrid(dirMeshVec, dirMeshVec, dirMeshVec, dirMeshVec);
lineDir1Mat = reshape(a1, [1, dirNum]);
lineDir2Mat = reshape(a2, [1, dirNum]);
lineDir3Mat = reshape(a3, [1, dirNum]);
lineDir4Mat = reshape(a4, [1, dirNum]);
dirMat = [lineDir1Mat; lineDir2Mat; lineDir3Mat; lineDir4Mat];
dirMat = dirMat(:, 2 : end);
dirMat = dirMat ./ sqrt(repmat(sum(dirMat .^ 2, 1), nDims, 1));
% set of start coordinates
x0EllObj = 1E-2 * ell_unitball(4) + x0Vec;
% calculate solvability set
timeVec = [endTime, 0];
rsTube = elltool.reach.ReachContinuous(linSys, x0EllObj, dirMat, ...
timeVec, 'isRegEnabled', true, 'isJustCheck', false, 'regTol', 1e-3);
% create projection matrix and draw projection on current axis (z_3, z_4)
v1v2Mat = [0 0 1 0 ; 0 0 0 1]';
prTube = rsTube.projection(v1v2Mat);
prTube.plotByIa();
hold on;
ylabel('z_3'); zlabel('z_4');
rotate3d on;
% create projection matrix and draw projection on current axis (z_3, z_4)
v1v2Mat = [1 0 0 0 ; 0 1 0 0]';
prTube = rsTube.projection(v1v2Mat);
prTube.plotByIa();
hold on;
ylabel('z_1'); zlabel('z_2');
rotate3d on;
rsTubeObj = elltool.reach.ReachContinuous(linSysObj, x0EllObj, dirMat, ...
timeVec, 'isRegEnabled', true, 'isJustCheck', false, 'regTol', 1e-3);
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
% create projection matrix and draw projection on current axis (z_3, z_4)
velBasisMat = [0 0 1 0 ; 0 0 0 1]';
prTubeObj = rsTubeObj.projection(velBasisMat);
prTubeObj.plotByIa();
hold on;
ylabel('z_3'); zlabel('z_4');
title('Elipsoidal reach tube, proj. on subspace [0 0 1 0 ; 0 0 0 1]');
rotate3d on;
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
% create projection matrix and draw projection on current axis (z_1, z_2)
velBasisMat = [1 0 0 0 ; 0 1 0 0]';
prTubeObj = rsTubeObj.projection(velBasisMat);
prTubeObj.plotByIa();
hold on;
ylabel('z_1'); zlabel('z_2');
title('Elipsoidal reach tube, proj. on subspace [1 0 0 0 ; 0 1 0 0]');
rotate3d on;
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
% create projection matrix and draw projection on current axis (z_1, z_3)
velBasisMat = [1 0 0 0 ; 0 0 1 0]';
prTubeObj = rsTubeObj.projection(velBasisMat);
prTubeObj.plotByIa();
hold on;
ylabel('z_1'); zlabel('z_3');
title('Elipsoidal reach tube, proj. on subspace [1 0 0 0 ; 0 0 1 0]');
rotate3d on;
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
% create projection matrix and draw projection on current axis (z_2, z_4)
velBasisMat = [0 1 0 0 ; 0 0 0 1]';
prTubeObj = rsTubeObj.projection(velBasisMat);
prTubeObj.plotByIa();
hold on;
ylabel('z_2'); zlabel('z_4');
title('Elipsoidal reach tube, proj. on subspace [0 1 0 0 ; 0 0 0 1]');
rotate3d on;
72 changes: 72 additions & 0 deletions products/+elltool/+doc/+snip/s_chapter06_section07_snippet06.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
% initialize all variables for this model
mVec = [1; 2];
jVec = [0; 0];
phi0Vec = [0; 0];
lVec = [5; 5];
sVec = [3; 3];
alphaVec = [3; 10];
kVec = [0; 0];
g = 9.8;

a1 = mVec(1) * sVec(1)^2 + jVec(1) + mVec(2) * lVec(1)^2;
a2 = lVec(1) * sVec(2) * cos(phi0Vec(1) - phi0Vec(2));
b1 = lVec(1) * sVec(2) * cos(phi0Vec(1) - phi0Vec(2));
b2 = mVec(2) * sVec(2)^2 + jVec(2);

d1 = (mVec(1) * a1 + mVec(2) * lVec(2)) * g;
d2 = mVec(2) * a2 * g;

x1 = -kVec(1) * a2 / (a2 * b1 - a1 * b2);
x2 = kVec(2) * a1 / (a2 * b1 - a1 * b2);
x3 = a2 / (a2 * b1 - a1 * b2);
x4 = -a1 / (a2 * b1 - a1 * b2);
x5 = -(d1 * a2 + d2 * a1) / (a2 * b1 - a1 * b2);

y1 = -kVec(1) * b2 / (a2 * b1 - a1 * b2);
y2 = kVec(2) * b1 / (a2 * b1 - a1 * b2);
y3 = b2 / (a2 * b1 - a1 * b2);
y4 = -b1 / (a2 * b1 - a1 * b2);
y5 = (d2 * b1 - d1 * b2) / (a2 * b1 - a1 * b2);

x11 = d1 * a2 * sin(phi0Vec(1)) / (a2 * b1 - a1 * b2);
x12 = d2 * a1 * sin(phi0Vec(2)) / (a2 * b1 - a1 * b2);
x13 = (-d1 * a2 * cos(phi0Vec(1)) - d1 * a2 * sin(phi0Vec(1)) * phi0Vec(1)) / ...
(a2 * b1 - a1 * b2) + (-d2 * a1 * cos(phi0Vec(2)) - ...
d2 * a1 * sin(phi0Vec(2)) * phi0Vec(2)) / (a2 * b1 - a1 * b2);

y11 = d1 * b2 * sin(phi0Vec(1)) / (a2 * b1 - a1 * b2);
y12 = -d2 * b1 * sin(phi0Vec(2)) / (a2 * b1 - a1 * b2);
y13 = (d2 * b1 * cos(phi0Vec(2)) + d2 * b1 * sin(phi0Vec(2)) * phi0Vec(2)) / ...
(a2 * b1 - a1 * b2) + (-d1 * b2 * cos(phi0Vec(1)) - ...
d1 * b2 * sin(phi0Vec(1)) * phi0Vec(1)) / (a2 * b1 - a1 * b2);

%initialize A and B relying on theoretical materials
aMat = [0 0 1 0; 0 0 0 1; y11 y12 y1 y2; x11 x12 x1 x2];
bMat = [0 0; 0 0; y3 y4; x3 x4];

x0Vec = [pi ./ 8; pi ./ 8; 0; 0];
endTime=5;
% after initializing we create ellipsoid for control function
diagMat = diag(alphaVec);
uEllObj = ellipsoid(diagMat);
% define linear systems
linSysObj=elltool.linsys.LinSysContinuous(aMat, bMat, uEllObj);
% initialize direction matrix
nDims = 4;
nDirs = 1;
dirMeshVec = 0 : (2 * pi / nDirs) : 2 * pi;
dirNum = length(dirMeshVec) ^ nDims;
[a1, a2, a3, a4] = ndgrid(dirMeshVec, dirMeshVec, dirMeshVec, dirMeshVec);
lineDir1Mat = reshape(a1, [1, dirNum]);
lineDir2Mat = reshape(a2, [1, dirNum]);
lineDir3Mat = reshape(a3, [1, dirNum]);
lineDir4Mat = reshape(a4, [1, dirNum]);
dirMat = [lineDir1Mat; lineDir2Mat; lineDir3Mat; lineDir4Mat];
dirMat = dirMat(:, 2 : end);
dirMat = dirMat ./ sqrt(repmat(sum(dirMat .^ 2, 1), nDims, 1));
% set of start coordinates
x0EllObj = 1E-2 * ell_unitball(4) + x0Vec;
% calculate solvability set
timeVec = [endTime, 0];
rsTubeObj = elltool.reach.ReachContinuous(linSysObj, x0EllObj, dirMat, ...
timeVec, 'isRegEnabled', true, 'isJustCheck', false, 'regTol', 1e-3);
72 changes: 72 additions & 0 deletions products/+elltool/+doc/+snip/s_chapter06_section07_snippet07.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
% initialize all variables for this model
mVec = [1; 2];
jVec = [0; 0];
phi0Vec = [0; 0];
lVec = [5; 5];
sVec = [3; 3];
alphaVec = [10; 10];
kVec = [0; 0];
g = 9.8;

a1 = mVec(1) * sVec(1)^2 + jVec(1) + mVec(2) * lVec(1)^2;
a2 = lVec(1) * sVec(2) * cos(phi0Vec(1) - phi0Vec(2));
b1 = lVec(1) * sVec(2) * cos(phi0Vec(1) - phi0Vec(2));
b2 = mVec(2) * sVec(2)^2 + jVec(2);

d1 = (mVec(1) * a1 + mVec(2) * lVec(2)) * g;
d2 = mVec(2) * a2 * g;

x1 = -kVec(1) * a2 / (a2 * b1 - a1 * b2);
x2 = kVec(2) * a1 / (a2 * b1 - a1 * b2);
x3 = a2 / (a2 * b1 - a1 * b2);
x4 = -a1 / (a2 * b1 - a1 * b2);
x5 = -(d1 * a2 + d2 * a1) / (a2 * b1 - a1 * b2);

y1 = -kVec(1) * b2 / (a2 * b1 - a1 * b2);
y2 = kVec(2) * b1 / (a2 * b1 - a1 * b2);
y3 = b2 / (a2 * b1 - a1 * b2);
y4 = -b1 / (a2 * b1 - a1 * b2);
y5 = (d2 * b1 - d1 * b2) / (a2 * b1 - a1 * b2);

x11 = d1 * a2 * sin(phi0Vec(1)) / (a2 * b1 - a1 * b2);
x12 = d2 * a1 * sin(phi0Vec(2)) / (a2 * b1 - a1 * b2);
x13 = (-d1 * a2 * cos(phi0Vec(1)) - d1 * a2 * sin(phi0Vec(1)) * phi0Vec(1)) / ...
(a2 * b1 - a1 * b2) + (-d2 * a1 * cos(phi0Vec(2)) - ...
d2 * a1 * sin(phi0Vec(2)) * phi0Vec(2)) / (a2 * b1 - a1 * b2);

y11 = d1 * b2 * sin(phi0Vec(1)) / (a2 * b1 - a1 * b2);
y12 = -d2 * b1 * sin(phi0Vec(2)) / (a2 * b1 - a1 * b2);
y13 = (d2 * b1 * cos(phi0Vec(2)) + d2 * b1 * sin(phi0Vec(2)) * phi0Vec(2)) / ...
(a2 * b1 - a1 * b2) + (-d1 * b2 * cos(phi0Vec(1)) - ...
d1 * b2 * sin(phi0Vec(1)) * phi0Vec(1)) / (a2 * b1 - a1 * b2);

%initialize A and B relying on theoretical materials
aMat = [0 0 1 0; 0 0 0 1; y11 y12 y1 y2; x11 x12 x1 x2];
bMat = [0 0; 0 0; y3 y4; x3 x4];

x0Vec = [pi ./ 8; pi ./ 8; 0; 0];
endTime=5;
% after initializing we create ellipsoid for control function
diagMat = diag(alphaVec);
uEllObj = ellipsoid(diagMat);
% define linear systems
linSysObj=elltool.linsys.LinSysContinuous(aMat, bMat, uEllObj);
% initialize direction matrix
nDims = 4;
nDirs = 1;
dirMeshVec = 0 : (2 * pi / nDirs) : 2 * pi;
dirNum = length(dirMeshVec) ^ nDims;
[a1, a2, a3, a4] = ndgrid(dirMeshVec, dirMeshVec, dirMeshVec, dirMeshVec);
lineDir1Mat = reshape(a1, [1, dirNum]);
lineDir2Mat = reshape(a2, [1, dirNum]);
lineDir3Mat = reshape(a3, [1, dirNum]);
lineDir4Mat = reshape(a4, [1, dirNum]);
dirMat = [lineDir1Mat; lineDir2Mat; lineDir3Mat; lineDir4Mat];
dirMat = dirMat(:, 2 : end);
dirMat = dirMat ./ sqrt(repmat(sum(dirMat .^ 2, 1), nDims, 1));
% set of start coordinates
x0EllObj = 1E-2 * ell_unitball(4) + x0Vec;
% calculate solvability set
timeVec = [endTime, 0];
rsTubeObj = elltool.reach.ReachContinuous(linSysObj, x0EllObj, dirMat, ...
timeVec, 'isRegEnabled', true, 'isJustCheck', false, 'regTol', 1e-3);

0 comments on commit 30e8a7a

Please sign in to comment.