-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Enhancement: Renamed some variables Enhancement: Divided one snippet on three parts Enhancement: Created some new snippets for creation picture generators
- Loading branch information
1 parent
aa62022
commit 30e8a7a
Showing
7 changed files
with
191 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 8 additions & 0 deletions
8
products/+elltool/+doc/+snip/s_chapter06_section07_snippet02.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
8 changes: 8 additions & 0 deletions
8
products/+elltool/+doc/+snip/s_chapter06_section07_snippet03.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
8 changes: 8 additions & 0 deletions
8
products/+elltool/+doc/+snip/s_chapter06_section07_snippet04.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
8 changes: 8 additions & 0 deletions
8
products/+elltool/+doc/+snip/s_chapter06_section07_snippet05.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
72
products/+elltool/+doc/+snip/s_chapter06_section07_snippet06.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
72
products/+elltool/+doc/+snip/s_chapter06_section07_snippet07.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); |