如何在matlab中动态表示左边的矩阵,允许我对给定的n迭代地增长它。
答案 0 :(得分:1)
给定n
,以下代码构造您显示的矩阵,前提是模式保持不变。
n = 5;
d(n) = -12;
d(1) = 12;
d(2:end-1) = 6;
b1(n-1) = 6;
b1(1:end-1) = -4;
b2(n-2) = 4/3;
b2(1:end-1) = 1;
a1 = b1(end:-1:1);
a1(1) = -a1(1);
A = diag(d) + diag(b1, -1) + diag(b2, -2) + diag(a1, 1) + diag(b2(end:-1:1), 2)
n=5
的输出:
A =
12.0000 -6.0000 1.3333 0 0
-4.0000 6.0000 -4.0000 1.0000 0
1.0000 -4.0000 6.0000 -4.0000 1.0000
0 1.0000 -4.0000 6.0000 -4.0000
0 0 1.3333 6.0000 -12.0000
n=8
的输出:
A =
12.0000 -6.0000 1.3333 0 0 0 0 0
-4.0000 6.0000 -4.0000 1.0000 0 0 0 0
1.0000 -4.0000 6.0000 -4.0000 1.0000 0 0 0
0 1.0000 -4.0000 6.0000 -4.0000 1.0000 0 0
0 0 1.0000 -4.0000 6.0000 -4.0000 1.0000 0
0 0 0 1.0000 -4.0000 6.0000 -4.0000 1.0000
0 0 0 0 1.0000 -4.0000 6.0000 -4.0000
0 0 0 0 0 1.3333 6.0000 -12.0000
要使用A
的稀疏表示,您可以使用传递给命令spdiags
四个参数:
B
,其列为A
的对角线。d
,d(j)
是A
中的对角线,其元素将填充B(:,j)
中的元素({{1}的第j列}})。B
中的行数。A
。我使用以A
(上图)开头的名称作为超对角线,以及以a
(下方)开头的名称,用于子对角线(我不使用{{1} }(上)和b
(下)因为l在我的编辑器中看起来很像1。这是相关的代码。
u