我有一个线性方程式xA = b,其中
A=[1/4 1/4 0 1/2
1/3 1/3 1/3 0
0 1/4 1/2 1/4
1/2 0 1/4 1/4]
和
x=[x1 x2 x3 x4]
和b=[x1 x2 x3 x4]
如何获得解决方案
x2 = 3/4 x1 X3 = X1 X4 = X1
添加x1+x2+x3+x4=1
的更多条件。如何找到x1=4/15...
我想用MATLAB解决上述两个问题?你能告诉我MATLAB代码吗?谢谢
答案 0 :(得分:4)
这是典型的最小二乘问题。如果您认为b
为I*b
并将其移至左侧,则您有(A-I)*x=0
,并且总和可以表示为x次幂必须等于1的行向量。
将它们结合起来你就得到了
>> [A-eye(4);ones(1,4)]\[zeros(4,1);1]
ans =
0.2500
0.2500
0.2500
0.2500
检查这是否是一个解决方案
>> A*ans
ans =
0.2500
0.2500
0.2500
0.2500
对于等式xA = y
,您只需使用矩阵A
>> [A'-eye(4);ones(1,4)]\[zeros(4,1);1]
ans =
0.2667
0.2000
0.2667
0.2667
>> A'*ans
ans =
0.2667
0.2000
0.2667
0.2667
与您的解决方案相匹配
您还可以将另一行的未知数值强制执行。通过
说x=4/15
[A'-eye(4);ones(1,4);eye(4,1)']\[zeros(4,1);1;4/15]
答案 1 :(得分:1)
clc
clear all
A = sym('a%d%d', [4 4], 'real');
x = sym('x%d%d', [4 1], 'real');
B = sym('b%d%d', [4 1], 'real');
rank(A)
A(4,:) = 2*A(1,:)
B(4) = 2*B(1)
%confirm rank deficiency
rank(A)
% equaion system is A*x==B
%Solve case 1:
sol1= solve(A*x==B, [x(2), x(3), x(4)])
%solve case 2:
sol2 = solve([A*x==B, x(1)+x(2)+x(3)+x(4)==1], [x(1) x(2), x(3), x(4)])