如何求解包含三对角矩阵的方程组?MATLAB

如何求解包含三对角矩阵的方程组?MATLAB,matlab,matrix,Matlab,Matrix,我不确定这是否是典型的行为,但我正在用反向差分法解决一个有限差分问题 我用适当的对角线项(沿中心对角线和其上下各一个)填充了一个稀疏矩阵,并尝试使用MATLAB的内置方法(B=a\x)解决这个问题,但似乎MATLAB弄错了 此外,如果使用inv()并使用三对角矩阵的逆,我会得到正确的解 为什么会这样 其他信息: (值是选项卡式的,因此更易于阅读) 刚度矩阵K: 1 0 0 0 -0.009 1.018 -0.009 0 0 -0.009 1.018 -0.009 0

我不确定这是否是典型的行为,但我正在用反向差分法解决一个有限差分问题

我用适当的对角线项(沿中心对角线和其上下各一个)填充了一个稀疏矩阵,并尝试使用MATLAB的内置方法(
B=a\x
)解决这个问题,但似乎MATLAB弄错了

此外,如果使用inv()并使用三对角矩阵的逆,我会得到正确的解

为什么会这样

其他信息: (值是选项卡式的,因此更易于阅读) 刚度矩阵K:

1   0   0   0
-0.009  1.018   -0.009  0
0   -0.009  1.018   -0.009
0   0   0   1
d的值:

0
15.55
15.55
86.73
内置输出:

-1.78595556155136e-05
0.00196073713853244
0.00196073713853244
0.0108149483252210
使用inv(K)的输出:

手动输出:

0
15.28
16.18
85.16
代码 以下一行:

U(:,n+1) = d\K;
应该是

U(:,n+1) = K\d;

我错把它们放错了方向,没有注意到,这显然改变了数学表达式,从而导致了错误的答案。

请给出一个具体的例子(包括代码和结果)。我添加了一个,花了一段时间才把我需要的一切都整理好。从我发布的结果来看,似乎使用斜杠只会产生完全错误的结果。。。有史以来最大的脸掌。。。我做了错误的手术。。。抱歉浪费您的时间。哈哈,我正要回答您的问题,告诉您您的内置解决方案大致等于inv()解决方案除以8000
U(:,n+1) = d\K;
U(:,n+1) = K\d;