如何求解包含三对角矩阵的方程组?MATLAB
我不确定这是否是典型的行为,但我正在用反向差分法解决一个有限差分问题 我用适当的对角线项(沿中心对角线和其上下各一个)填充了一个稀疏矩阵,并尝试使用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
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;