Bonjour,

je sais comment créer une matrice creuse diagonale; mais je ne parviens pas à créer une matrice creuse diagonale par blocs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
% Création de la matrice B
 
U = ones(n,1);
B = spdiags([-U,4*U,-U],-1:1,n,n);
display(full(B));
 
% Création de la matrice A
 
V = eye(n,n);
display(-V);
A = spdiags([-V,B,-V],-1:1,n*n,n*n);
display(full(A));
Il y a une erreur à la ligne où je définis A,
Index exceeds matrix dimensions.
En lisant l'aide j'ai bien vu que spdiags ne permet pas (ou alors je ne vois pas comment) de créer une matrice diagonale à l'aide de blocs, alors je vous sollicite si vous avez une idée !
Ce que je cherche à avoir, c'est que la diagonale par bloc principale de A contienne les blocs B, et la sur et sous diagonale les blocs -V.

Merci d'avance !