Examples Inverse Functions
Inv
VAR
Inv:Inv;
matSquare:ARRAY [1..5,1..5] OF REAL:=
[0.2760, 0.4980, 0.7510, 0.9590, 0.8410,
0.6800, 0.9600, 0.2550, 0.5470, 0.2540,
0.6550, 0.3400, 0.5060, 0.1390, 0.8140,
0.1630, 0.5850, 0.6990, 0.1490, 0.2440,
0.1190, 0.2240, 0.8910, 0.2580, 0.9290];
InverseMatrix:ARRAY [1..5,1..5] OF REAL;
END_VAR
PROGRAM
Inv(matSquare:=matSquare ,
InverseMatrix=>InverseMatrix );
END_PROGRAM
OUTPUT:
InverseMatrix =
[2.0137, -2.8012, 3.8725, 2.5972, -5.1323,
-2.6019, 3.7756, -3.1079, -2.2397, 4.6346,
2.0027, -3.2799, 2.3245, 3.8437, -3.9626,
2.1237, -1.1381, 0.5447, 0.6036, -2.2472,
-2.1412, 2.9102, -2.1274, -3.6468, 5.0409]
LuDecomposition
VAR
LuDecomposition:LuDecomposition;
A_1:ARRAY [1..4,1..4] OF REAL:=
[6, 7, 2, 2,
6, -5, 5, 1,
1, -1, 0, 6,
5, -4, 9, 7];
L_1:ARRAY [1..4,1..4] OF REAL;
U_1:ARRAY [1..4,1..4] OF REAL;
END_VAR
PROGRAM
LuDecomposition(A:=A_1 ,
L:=L_1 , U:=U_1 );
END_PROGRAM
OUTPUT:
L_1 =
[1, 0, 0, 0,
1, 1, 0, 0,
0.1666, 0.1805, 1, 0,
0.8333, 0.8194, -5.5714, 1];
U_1 =
[6, 7, 2, 2,
0, -12, 3, -1,
0, 0, -0.875, 5.8472,
0, 0, 0, 38.7301];
LuInverse
VAR
LuInverse:LuInverse;
L_2:ARRAY [1..4,1..4] OF REAL:=
[1, 0, 0, 0,
1, 1, 0, 0,
0.1666, 0.1805, 1, 0,
0.8333, 0.8194, -5.5714, 1];
u_2:ARRAY [1..4,1..4] OF REAL:=
[6, 7, 2, 2,
0, -12, 3, -1,
0, 0, -0.875, 5.8472,
0, 0, 0, 38.7301];
LuInv_Matrix:ARRAY [1..4,1..4] OF REAL;
d_2:ARRAY [1..4,1..4] OF REAL;
eye4:ARRAY [1..4,1..4] OF REAL:=
[1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1];
END_VAR
PROGRAM
LuInverse(
L:=L_2 ,
u:=u_2 ,
a:=LuInv_Matrix ,
d:=d_2 ,
eyeN:=eye4 );
END_PROGRAM
OUTPUT:
LuInv_Matrix =
[0.07213116, 0.176229522, 0.07950821, -0.113934427,
0.08196721, -0.106557377, -0.05737705, 0.0409836061,
-0.00491803465, -0.108606562, -0.181557387, 0.172540992,
0.00163934508, -0.0471311472, 0.143852457, 0.0258196723];
pInv
VAR
pInv:pInv;
matrix:ARRAY [1..6,1..5] OF REAL:=
[0.2760, 0.4980, 0.7510, 0.9590, 0.8410,
0.6800 , 0.9600, 0.2550, 0.5470, 0.2540,
0.6550, 0.3400, 0.5060, 0.1390, 0.8140,
0.1630, 0.5850, 0.6990, 0.1490, 0.2440,
0.1190, 0.2240, 0.8910, 0.2580, 0.9290,
7.2200, -3.5400, -2.6400, -2.8700, 4.8400];
pInvMatrix:ARRAY [1..5,1..6] OF REAL;
END_VAR
PROGRAM
pInv(matrix:=matrix ,
pInvMatrix=>pInvMatrix );
END_PROGRAM
OUTPUT:
pInvMatrix =
[1.5218, -0.9412, -1.2723, 3.2966, -2.1499, 0.2454,
-2.1481, 2.0594, 1.6386, -2.8850 , 1.8831, -0.2264,
1.6529, -1.9569, -1.3346, 4.3412, -1.8414, 0.1745,
1.9717, -0.5632, -1.0454, 0.8198, -1.3254, 0.0758,
-1.7700, 1.5065, 1.7551, -4.1746, 2.7903, -0.1852];