Мне нужно создать трехдиагональную матрицу блока в Scilab. Точнее я хотел бы создать M^2 & times; M^2 матрица формата:Matlab/Scilab/R: Создание блочной трехдиагональной матрицы в Scilab
B C 0 ... 0 0
D B C 0 ... 0
0 D B C ... 0
0 ... ... ... ...
0 0 ... D B C
0 0 0 ... D B
, где В, С и D являются матрицами М х М.
Я знаю, как создать диагональную матрицу блока с помощью функции «sysdiag», но я не нашел ссылки для простого создания трехдиагонального блока.
Кстати, учитывая матрицы B, C и D, я знаю, как создать матрицу выше.
auxA = sysdiag(B,B);
auxC = C;
auxD = D;
for i=1:2*M-1
auxA = sysdiag(auxA,B);
auxC = sysdiag(auxC,C);
auxD = sysdiag(auxD,D);
end
A = auxA + [zeros((2*M+1)^2 -(2*M+1),2*M+1) auxC ;zeros(2*M+1,2*M+1) zeros(2*M+1,(2*M+1)^2 -(2*M+1)) ] + [zeros(2*M+1,(2*M+1)^2 -(2*M+1)) zeros(2*M+1,2*M+1); auxD zeros((2*M+1)^2 -(2*M+1),2*M+1)];
Я все еще хотел бы knwo, если есть функция, которая делает это непосредственно в Scilab, Matlab или R. Может кто-нибудь помочь мне с этим, пожалуйста?
Все советы приветствуются.
Большое спасибо
Не похоже, что есть. Единственная полезность, которую я знаю, порождает тридиагональную матрицу, но не с элементами, являющимися матрицами ... только скалярами. Однако это обращение к MATLAB FEX Джоном Д'Эрико представляет особый интерес: http://www.mathworks.com/matlabcentral/fileexchange/10603--block--tri-diagonal-matrices – rayryeng