我正在使用 Matlab Symbolic Toolbox 及其求解函数并尝试求解4个方程的非线性系统,
有4个变量:
x1 y1 x2 y2
和4个参数
delta1 delta2 alpha beta
方程如下图所示:
这是Matlab代码:
syms x1 x2 y1 y2 alpha beta delta1 delta2
[x1,y1,x2,y2] = solve('delta1 * x1^alpha * y1^(1 - alpha) = (1 - x2)^alpha * (1 - y2)^(1-alpha)',...
'delta2 * x2^alpha * y2^(1 - alpha) = (1 - x1)^beta* (1 - y1)^(1-beta)',...
'alpha / (1-alpha) * (1 - y2) / (1 - x2) = beta / (1 - beta) * y2/x2',...
'alpha / (1-alpha) * y1 / x1 = beta / (1 - beta) * (1 - y1) / (1 - x1)','x1','y1','x2','y2')
Matlab回归:
警告:找不到明确的解决方案。
>在81解决
但是,如果我尝试将alpha
和beta
替换为0.5
。
[x1,y1,x2,y2] = solve('delta1 * x1^0.5 * y1^ 0.5 = (1 - x2)^0.5* (1 - y2)^0.5',...
'delta2 * x2^0.5 * y2^0.5 = (1 - x1)^0.5* (1 - y1)^0.5',...
'(1 - y2) / (1 - x2) = y2/x2',...
'y1 / x1 = (1 - y1) / (1 - x1)','x1','y1','x2','y2')
然后Matlab将给出结果。
所以我想知道:
这些方程式真的无法解决吗?
如果它可以解决,我是否以错误的方式使用Matlab Symbolic Toolbox? Matlab实际上可以解决它。
如果Matlab没有足够的能力来解决它,是否有其他工具可以解决非线性方程系统?
答案 0 :(得分:3)
几乎可以肯定,不,这些在分析上是不可解决的。除非alpha和beta为1或0(或明显为1/2),否则方程式将等同于分析解决方案的过高,但如果不仔细观察我就无法确定。但是对于一般的真正的alpha,这是太多了。
是的,我知道电脑很大,速度快,功能强大。他们可以做任何事,对吧?但是看看当你试图解决这样的同时多项式方程时会发生什么。
例如,当您消除其中一个未知数时,两个未知数中的两个二次方程将减少到四阶方程。具有非常数系数的四阶多项式方程是可解的。但是你有四个方程式,每个方程式本质上都是二次方程式。 (每个等式中都有变量的乘积。)因此,如果你试图象征性地求解它们,那么它们中的4个将等价于八阶多项式。它将具有一般的非常数系数。并且我们知道5阶多项式或更高阶通常不具有解析解。所以,虽然你很幸运,也许是因为某些特殊的alpha& amp; beta,几乎可以肯定,没有这样的分析解决方案。
对于一般真正的alpha,情况更糟。根本没有期望存在解决方案。事实上,当你尝试时,它失败了。但是,嘿,更大的计算机可能会找到答案。对不起,但不是真的。
答案 1 :(得分:2)
您应该尝试使用Matlab的mupad
命令。它打开了一个类似于Maple的符号编程环境,它比符号库更强大。如果你的方程式有解(甚至是一些虚构的解,或者如果它们的解决方案确实是特定的情况),那么符号环境肯定会找到它们。
试一试!
修改强> 看到@woodchips答案(这似乎比我知道得多!)你也可以尝试解决已知alpha beta范围的方程式。您可以假设它们具有哪些值并从范围迭代。我只是不知道它是否会起作用,这正是我在你的情况下会尝试做的事情。
仍然没有放弃尝试使用mupad
,它可能会起作用(如果您做出假设,则可以使用空间,例如:assume alpha real
类型的命令。只需查看帮助)