我有一个以下形式的矩阵:
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
来解决d6 = b6-a6*x7 = b6-a6*(b7/d7)
...然后将其余部分向后移动到第一行。但是,我遇到了一个障碍:
1)如何强调指数中令人困惑的差异
2)如何从反向顺序开始从d7
开始到第一个等式
3)此外,我如何对n
的任何系统进行概括?根据个人阅读材料,我正在进行娱乐活动,n
很奇怪。
有人可以帮我编码吗?
编辑:系数矩阵为A
,x
列向量可以表示为X
,b
列向量可以表示为B
为了方便,如果需要的话。
答案 0 :(得分:1)
让A
成为您的n
- by - 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 = A\B;