我有一个以下形式的矩阵:
d1 0 0 0 0 0 0 x1 b1
a1 d2 0 0 0 0 0 x2 b2
0 a2 d3 0 0 0 0 x3 b3
0 0 a3 d4 a4 0 0 * x4 = b4
0 0 0 0 d5 a5 0 x5 b5
0 0 0 0 0 d6 a6 x6 b6
0 0 0 0 0 0 d7 x7 b7
我需要编写一个代码来解决这个系统而不进行正向消除。我假设你可以解决x7 = b7/d7
.然后通过设置我们第一次迭代的d6 = b6-a6*x7 = b6-a6*(b7/d7)
来解决d6
...然后将其余的向后抬到第一排。但是,我遇到了一个障碍:
1)如何硬核指数中令人困惑的差异
2)如何从d7
到第一个方程的反向顺序开始
3)此外,我如何将其推广到任何n
系统?根据我为娱乐而做的个人阅读,n
很奇怪。
任何人都可以帮助我编写代码吗?
编辑:系数矩阵是A
的,x
列向量可以表示为X
,如果需要,b
列向量可以表示为B
以方便使用。
让A
成为你的n
n
双对角矩阵,并B
你的等式的右侧。您可以使用此循环求解:
n = size(A,1);
x = zeros(n,1); %// pre-allocate for solution x
x(n) = B(n)/A(n,n); %// get the last element
for ii=(n-1):-1:1
x(ii) = (B(ii)-x(ii+1)*A(ii,ii+1))/A(ii,ii); %// iteratively solve
end
当然,最好使用内置函数
x = AB;