例如:下面的方程组 x1^2=x1 x2^2=x2 x3^2=x3 x4^2=x4 x1^2=x1x2x3x4 使用fsolve需要预设初值,并且只能求出一个解,有没有什么较好的方法能求出所有解?(这里所有的解都只能取值0或1)。 返回小木虫查看更多
一共就4个数,每个数还都只能取0和1两种情况,那就穷举法就行了。 换句话说,编个4重循环,一下子就出来了。
没有其他办法了吗?
1stOpt求解:
大概有多少个变量? 比如有n个变量,每个变量时0或者1,一个变量组就相当于一个2进制数字。 共有2^n组变量,要检验2^n次约束方程,1000万次时n=23,得考虑时间问题了。 n很大的话可能要分析约束方程,提取公因子,整体考虑 比如这题约束方程为x1*(1-x2*x3*x4)=0 如果约束方程很复杂的话,从约束方程的系数入手,说不定有一般解法。 约束方程只有一个时,有2^n项,借助线性代数,可能会发现什么。 不知道7楼解法的极限,如果能很随意的求出四五十个变量,二三十个约束方程下的解,那么几乎可以断定有一般解了。
一共就4个数,每个数还都只能取0和1两种情况,那就穷举法就行了。
换句话说,编个4重循环,一下子就出来了。
可得结果
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 1 1 1
,
谢谢,我只是举例,实际情况是方程以及变量都很多,没办法穷举的。但方程的解就只有0或1两种情况,有没有什么较好的办法?
暂时还没有别的想法。
但是我还是固执的认为穷举法对于你的问题来说可能确实是一个很好的方法。
如果问题的规模很大,可以考虑一部分一部分的解决。
没有其他办法了吗?
1stOpt求解:
结果:
No. x1 x2 x3 x4
1 0 1 1 1
2 0 0 0 1
3 0 1 0 0
4 0 0 1 1
5 0 0 1 0
6 0 1 0 1
7 1 1 1 1
8 0 0 0 0
9 0 1 1 0
大概有多少个变量?
比如有n个变量,每个变量时0或者1,一个变量组就相当于一个2进制数字。
共有2^n组变量,要检验2^n次约束方程,1000万次时n=23,得考虑时间问题了。
n很大的话可能要分析约束方程,提取公因子,整体考虑
比如这题约束方程为x1*(1-x2*x3*x4)=0
如果约束方程很复杂的话,从约束方程的系数入手,说不定有一般解法。
约束方程只有一个时,有2^n项,借助线性代数,可能会发现什么。
不知道7楼解法的极限,如果能很随意的求出四五十个变量,二三十个约束方程下的解,那么几乎可以断定有一般解了。