2012-10-10 64 views
1

我使用Matlab的符号工具箱解决功能,并试图解决4个方程的非线性系统,无法非线性方程组求解在Matlab

有4个变量:

x1 y1 x2 y2 

和4个参数

delta1 delta2 alpha beta 

该方程式在下面的描述由于图像: Nonlinear equations

这里是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

解决但是,如果我试图取代双方alphabeta0.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会给出结果。

所以我想:

  1. 是真的方程无法解决?

  2. 如果它可以解决,我用错误的方式使用Matlab符号工具箱? Matlab实际上可以解决它。

  3. 如果Matlab没有足够的能力来解决它,还有其他工具可以解决非线性方程组吗?

回答

3

几乎可以肯定,不,这些都不是解析解。除非alpha和beta是1或0(或者明显是1/2),否则这些方程式相当于分析解决方案的顺序太高,尽管如果不仔细观察,我无法确定。但对于一般的真正的阿尔法,这是太多了。

是的,我知道电脑大,快,强大。他们可以做任何事情,对吧?但是看看当你试图解决像这样的联立多项式方程时会发生什么。

例如,当消除一个未知数时,两个未知数中的两个二次方程将减少到四阶方程。具有非常系数的四阶多项式方程是可解的。但是你有四个方程,每个方程本质上都是二次方程。 (每个方程中都有变量的产品。)因此,其中4个将相当于一个八阶多项式,如果您尝试以符号方式解决它。它将具有一般的非常数系数。而且我们知道五阶多项式或更高阶通常不会有解析解。所以,虽然你可能会很幸运,但可能对于某些特殊值的alpha &测试版,几乎可以肯定的是,没有这样的分析解决方案。

而对于一般真正的阿尔法,情况更糟。根本没有期望解决方案存在。事实是,当你尝试时,它失败了。但是,嘿,一台更大的电脑可能会找到答案。对不起,但并非如此。

2

您应该尝试使用Matlab的mupad命令。它会打开一个类似于Maple的符号编程环境,它比符号库更强大。如果你的方程有解决方案(甚至是一些想象的解决方案,或者如果他们的解决方案真的是特例),符号环境肯定会找到它们。

试试看!

编辑: 看到@woodchips答案你也可以尝试解决已知α+β范围的方程式(似乎知道这个比我多!)。您可以对它们具有的值进行假设,并从一个范围进行迭代。我只是不知道它是否会起作用,这正是我想为你的情况做的。

仍然不放弃与mupad尝试,它可能工作(空间,如果你作出假设,如:assume alpha real样的命令只是检查帮助)