12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
{
#else // !STANDALONE
DEFUN_DLD (mtt_implicit, args, ,
"implicit integration method")
{
#ifdef OCTAVE_DEV
static ColumnVector x = args(0).column_vector_value ();
const ColumnVector dx = args(1).column_vector_value ();
const Matrix AA = args(2).matrix_value ();
const ColumnVector AAx = args(3).column_vector_value ();
const double t = args(4).double_value ();
const int Nx = (int) (args(5).double_value ());
const ColumnVector openx = args(6).column_vector_value ();
#else // !OCTAVE_DEV
static ColumnVector x = args(0).vector_value ();
const ColumnVector dx = args(1).vector_value ();
const Matrix AA = args(2).matrix_value ();
const ColumnVector AAx = args(3).vector_value ();
const double t = args(4).double_value ();
const int Nx = (int) (args(5).double_value ());
const ColumnVector openx = args(6).vector_value ();
#endif // OCTAVE_DEV
#endif // STANDALONE
register int row, col;
for (row = 0; row < Nx; row++)
{
if (0 != openx (row))
{
AAx (row) = 0.0;
dx (row) = 0.0;
for (col = 0; col < Nx; col++)
{
AA (row,col) = 0.0;
}
}
}
x = static_cast<ColumnVector> (xleftdiv (AA, static_cast<Matrix>(AAx + dx * t)));
for (row = 0; row < Nx; row++)
{
if (0 != openx (row))
{
x (row) = 0.0;
}
}
#ifdef STANDALONE
return x;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
{
#else // !STANDALONE
DEFUN_DLD (mtt_implicit, args, ,
"implicit integration method")
{
#ifdef OCTAVE_DEV
static ColumnVector x = args(0).column_vector_value ();
static ColumnVector dx = args(1).column_vector_value ();
static Matrix AA = args(2).matrix_value ();
static ColumnVector AAx = args(3).column_vector_value ();
const double t = args(4).double_value ();
const int Nx = (int) (args(5).double_value ());
const ColumnVector openx = args(6).column_vector_value ();
#else // !OCTAVE_DEV
static ColumnVector x = args(0).vector_value ();
static ColumnVector dx = args(1).vector_value ();
static Matrix AA = args(2).matrix_value ();
static ColumnVector AAx = args(3).vector_value ();
const double t = args(4).double_value ();
const int Nx = (int) (args(5).double_value ());
const ColumnVector openx = args(6).vector_value ();
#endif // OCTAVE_DEV
#endif // STANDALONE
register int row, col;
for (row = 0; row < Nx; row++)
{
if (openx (row) > 0.5)
{
AAx (row) = 0.0;
dx (row) = 0.0;
for (col = 0; col < Nx; col++)
{
AA (row,col) = 0.0;
AA (col,row) = 0.0;
}
}
}
x = static_cast<ColumnVector> (xleftdiv (AA, static_cast<Matrix>(AAx + dx * t)));
for (row = 0; row < Nx; row++)
{
if (openx (row) > 0.5)
{
x (row) = 0.0;
}
}
#ifdef STANDALONE
return x;
|