Matlab 求解2个方程-9个未知量,带约束。

Matlab 求解2个方程-9个未知量,带约束。,matlab,linear-algebra,Matlab,Linear Algebra,我正试图用matlab解一个谜。 这实际上更多的是关于matlab,而不是谜语本身(谜语摘自日报) 谜语给出两个3位数的数字,用字母表示。我需要找到未参与的数字(0-9) aba dcc=efe;aba+dcc=ghi 现在,我有两个方程,有9个未知数。 我通过检查向量0:9的所有排列,在一个while循环中,成功地解决了这个问题 vecAns = 0:9; P = perms(vecAns); P = P(:,1:9); A = [ 101 10 -100 -11 -101 -10 0 0

我正试图用matlab解一个谜。 这实际上更多的是关于matlab,而不是谜语本身(谜语摘自日报)

谜语给出两个3位数的数字,用字母表示。我需要找到未参与的数字(0-9)

aba dcc=efe;aba+dcc=ghi

现在,我有两个方程,有9个未知数。 我通过检查向量0:9的所有排列,在一个while循环中,成功地解决了这个问题

vecAns = 0:9;
P = perms(vecAns);
P = P(:,1:9);

A = [ 101 10 -100 -11 -101 -10 0 0 0 ;...
        101 10 100 11 0 0 -100 -10 -1];

resVec = [0;0];
found=false;

i=1;
h = waitbar(0,'Computing');
while found==false
        Res=A*P(i,:)';
        if (Res(1)==0)&&(Res(2)==0)
            break;
        end
        i=i+1;
        waitbar(i/length(P),h,sprintf('%d%%',i/length(P)*100));
end
close(h) 
有没有办法(不加数学考虑)解决这个问题。 例如,我知道所有的未知数必须是整数,并且在0-9范围内


如果没有办法。如何提高效率

您不必列举所有排列。您可以从前4位开始(
a
b
c
d
),并检查它们是否产生与
efe
ghi
匹配的差和和。您还需要确保所有数字都是不同的

我不太擅长编写matlab代码,因此我将用C#代码演示:

//aba dcc=efe
//aba+dcc=ghi

对于(int a=1;a您不必枚举所有排列。您可以从前4位开始(
a
b
c
d
),并检查它们是否产生与
efe
ghi
匹配的差和和。您还需要确保所有数字都是不同的

我不太擅长编写matlab代码,因此我将用C#代码演示:

//aba dcc=efe
//aba+dcc=ghi

对于(int a=1;a)这很好。我对其进行了一些改进,以适应更一般的情况,但我一直在寻找仅使用4位数字的想法。谢谢!这很好。我对其进行了一些改进,以适应更一般的情况,但仅使用4位数字的想法是我一直在寻找的。谢谢!
717-233=484 ; 717+233=950