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