在 Matlab (GNU Octave) 中求解特殊的线性方程组
Solve special system of linear equations in Matlab (GNU Octave)
我有一个矩阵,假设 5x5 看起来像这样:
0 0 0 1 0
0 0 0 4/5 1/5
3/5 1/5 1/5 0 0
1/5 2/5 1/5 1/5 0
1/10 1/10 2/5 1/5 1/5
我需要它来解决像这样的线性方程组(我可以自己转置它,但是然后将它与符号变量相乘会让我遇到麻烦):
0 * a + 0 * b + 3/5 * c + 1/5 * d + 1/10 + e = a
0 * a + 0 * b + 1/5 * c + 2/5 * d + 1/10 + e = b
0 * a + 0 * b + 1/5 * c + 1/5 * d + 2/5 + e = c
1 * a + 4/5 * b + 0 * c + 1/5 * d + 1/5 + e = d
0 * a + 1/5 * b + 0 * c + 0 * d + 1/5 + e = e
a + b + c + d + e = 1
我可以在 wxMaxima 中轻松解决这个问题,但是我必须在那里手动写入所有值,这对于更大的矩阵来说越来越乏味。
有没有办法在使用 matlab 运算符 \
求解线性方程组的一些步骤后得到结果?
你能解方程组没有?
>>[A-eye(5);ones(1,5)]\[0,0,0,0,0,1]'
ans =
0.1729
0.2061
0.1345
0.4350
0.0515
>> sum(ans)
ans =
1.0000
还有一个象征性的解决方案:
M=sym(A);
v=sym('[a;b;c;d;e]');
sol=solve(M*v==v,sum(v)==1);
returns 形式的解决方案 sol.a
、sol.b
、...
我有一个矩阵,假设 5x5 看起来像这样:
0 0 0 1 0
0 0 0 4/5 1/5
3/5 1/5 1/5 0 0
1/5 2/5 1/5 1/5 0
1/10 1/10 2/5 1/5 1/5
我需要它来解决像这样的线性方程组(我可以自己转置它,但是然后将它与符号变量相乘会让我遇到麻烦):
0 * a + 0 * b + 3/5 * c + 1/5 * d + 1/10 + e = a
0 * a + 0 * b + 1/5 * c + 2/5 * d + 1/10 + e = b
0 * a + 0 * b + 1/5 * c + 1/5 * d + 2/5 + e = c
1 * a + 4/5 * b + 0 * c + 1/5 * d + 1/5 + e = d
0 * a + 1/5 * b + 0 * c + 0 * d + 1/5 + e = e
a + b + c + d + e = 1
我可以在 wxMaxima 中轻松解决这个问题,但是我必须在那里手动写入所有值,这对于更大的矩阵来说越来越乏味。
有没有办法在使用 matlab 运算符 \
求解线性方程组的一些步骤后得到结果?
你能解方程组没有?
>>[A-eye(5);ones(1,5)]\[0,0,0,0,0,1]'
ans =
0.1729
0.2061
0.1345
0.4350
0.0515
>> sum(ans)
ans =
1.0000
还有一个象征性的解决方案:
M=sym(A);
v=sym('[a;b;c;d;e]');
sol=solve(M*v==v,sum(v)==1);
returns 形式的解决方案 sol.a
、sol.b
、...