ВУЗ:
Составители:
18 Глава 2. Построение сеток в MatLab
предположении, что А не содержит нулевых столбцов).
1)
[ i , j , a ] = fi n d (A) ; % get the c oo r di n a te form o f A ( i , j have no copy )
p = f i n d ( d i f f ( [ 0 ; j ; s i z e (A,2 ) + 1 ] ) ) '
p =
1 3 5 6
Проверим этот код на предыдущем примере:
f o r j = 1 : n
f p r i n t f (' j=%d : \ n i a\n' , j ) ;
di s p ( [ i ( p ( j ) : p( j +1)−1) a ( p ( j ) : p ( j +1) −1)])
end
j =1:
i a
1 1
3 2
j =2:
i a
1 3
2 4
j =3:
i a
3 5
Разберем 2) способ, учитывая внутреннее хранение А. Рассмотрим
код
A=sp a r s e ( n , n ) ; % 1)
. . . .
A( i1 , j 1 )=a1 ; % 2)
. . . .
A( i2 , j 2 )=a2 ; % 3)
. . . .
Команда 1) определяет матрицу A размера nхn, массивы (i, p, a),
определяющие формат ее хранения, являются пустыми. На шаге 2)
включается элемент а1, происходит формирование массивов (i, p, a).
На 3-ем шаге включается новый элемент а2, что приводит к пере-
формированию векторов (i, p, a): они меняют длину, выделяется па-
мять для них, части старых (i, p, a) копируются, вставляется новый
элемент и т.д. Этот способ, как видим, оказывается дорогим, если
nnz(A) — число ненулевых элементов А, является большим числом.
Очевидный метод реализации 3) способа основывается на упоря-
дочении триплета (i, j, a) по возрастанию индекса i, суммирования
1)
если x = [x
1
, . . . , x
n
], то вектор y = dif f(x) имеет координаты x
i+1
− x
i
, i = 1, . . . , n − 1.
18 Глава 2. Построение сеток в MatLab предположении, что А не содержит нулевых столбцов).1) [ i , j , a ] = f i n d (A ) ; % g e t t h e c o o r d i n a t e form o f A ( i , j have no copy ) p = f i n d ( d i f f ( [ 0 ; j ; s i z e (A, 2 ) + 1 ] ) ) ' p = 1 3 5 6 Проверим этот код на предыдущем примере: for j = 1:n f p r i n t f ( ' j=%d : \ n i a \n' , j ) ; d i s p ( [ i ( p ( j ) : p ( j +1)−1) a ( p ( j ) : p ( j +1) −1)]) end j =1: i a 1 1 3 2 j =2: i a 1 3 2 4 j =3: i a 3 5 Разберем 2) способ, учитывая внутреннее хранение А. Рассмотрим код A=s p a r s e ( n , n ) ; % 1) . . . . A( i 1 , j 1 )=a1 ; % 2) . . . . A( i 2 , j 2 )=a2 ; % 3) . . . . Команда 1) определяет матрицу A размера nхn, массивы (i, p, a), определяющие формат ее хранения, являются пустыми. На шаге 2) включается элемент а1, происходит формирование массивов (i, p, a). На 3-ем шаге включается новый элемент а2, что приводит к пере- формированию векторов (i, p, a): они меняют длину, выделяется па- мять для них, части старых (i, p, a) копируются, вставляется новый элемент и т.д. Этот способ, как видим, оказывается дорогим, если nnz(A) — число ненулевых элементов А, является большим числом. Очевидный метод реализации 3) способа основывается на упоря- дочении триплета (i, j, a) по возрастанию индекса i, суммирования 1) если x = [x1 , . . . , xn ], то вектор y = dif f (x) имеет координаты xi+1 − xi , i = 1, . . . , n − 1.
Страницы
- « первая
- ‹ предыдущая
- …
- 16
- 17
- 18
- 19
- 20
- …
- следующая ›
- последняя »