9 using namespace mathfce;
14 elm =
new double[ nc * nr ];
20 elm =
new double[ nc * nr ];
27 elm =
new double[nc*nr];
28 memcpy(elm,x.
elm,nc*nr*
sizeof(
double));
37 elm =
new double[size];
43 elm =
new double[size];
44 memcpy(elm,x.
elm,size*
sizeof(
double));
52 for (
int i = 1; i <= M.
nr; i++) {
53 for (
int j = 1; j <= M.
nc; j++) {
54 stream << M.
Get(i, j) <<
" ";
62 for (
int i = 1; i <= V.
size; i++) {
63 stream << V.
elm[ i - 1 ] <<
"\n";
70 THROW( ExcAssertMsg() << EI_Message(
"Number of the row is greater than number of rows in the matrix.") );
72 THROW( ExcAssertMsg() << EI_Message(
"Number of the column is greater than number of columns in the matrix.") );
73 elm[ (row - 1) * nc + col - 1 ] = value;
79 THROW( ExcAssertMsg() << EI_Message(
"Number of the row is greater than number of rows in the matrix.") );
81 THROW( ExcAssertMsg() << EI_Message(
"Number of the column is greater than number of columns in the matrix.") );
82 return elm[ (row - 1) * nc + col - 1 ];
86 if (r1 > nr || r2 > nr) {
87 THROW( ExcAssertMsg() << EI_Message(
"Number of the row is greater than number of rows in the matrix.") );
90 for (
int i = 1; i <= nc; i++) {
91 double tmp = Get(r1, i);
92 Set(r1, i, Get(r2, i));
100 if (i1 > size || i2 > size) {
101 THROW( ExcAssertMsg() << EI_Message(
"Number of the element is greater than size of the vector.") );
104 double tmp = elm[ i1 - 1 ];
105 elm[ i1 - 1 ] = elm[ i2 - 1 ];
113 THROW( ExcAssertMsg() << EI_Message(
"Number of the element is greater than size of the vector.") );
122 THROW( ExcAssertMsg() << EI_Message(
"Number of the element is greater than size of the vector.") );
123 elm[ i - 1 ] = value;
140 for (
int i = 1; i < M.
NRows(); i++) {
141 double tmp = fabs(M.
Get(i, i));
143 for (
int j = i + 1; j <= M.
NRows(); j++)
144 if (fabs(M.
Get(j, i)) > tmp) {
145 tmp = fabs(M.
Get(j, i));
158 for (
int j = i + 1; j <= M.
NRows(); j++) {
159 tmp = M.
Get(j, i) / M.
Get(i, i);
160 for (
int k = i; k <= M.
NCols(); k++) {
161 M.
Set(j, k, M.
Get(j, k) - tmp * M.
Get(i, k));
167 for (
int i = M.
NRows(); i >= 1; i--) {
168 double tmp = b.
Get(i);
170 for (
int k = i + 1; k <= M.
NCols(); k++) {
171 tmp -= M.
Get(i, k) * X->
Get(k);
182 X->
Set(i, tmp / M.
Get(i, i));