2013-08-30 87 views
0

我有一个大的欠定方程系统,为此我搜索关于任何给定约束的唯一解。我简化我的问题为以下之一:在matlab中象征性地求解非线性最小化方程

x²-4=0, 
y²-9=0, 
x*y=myMin, 
x+y=myMin. 

什么是在Matlab象征性地实现这一目标的最佳方式,所以它返回

x=2 
y=-3 

我在寻找类似

syms x y 
S=solve(... 
x²-4==0,... 
y²-9==0,... 
x*y==myMin,... 
x+y==myMin); 
+0

你试过'帮助解决'吗?当你尝试使用求解器时会发生什么?没有符号工具箱可用,但它应该适用于符号方程式。 –

+0

它说这是不可能用matlab象征性地解决这样的问题...... – Caniko

回答

0

你似乎碰到的问题是,没有解决方案,甚至没有matlab可以处理。

试试这样说:

myMin = -6; 

syms x y 
S=solve(... 
x²-4==0,... 
y²-9==0,... 
x*y==myMin,... 
x+y==myMin + 5); %Note the +5 to make it feasible 

不能尝试自己,但快速计算告诉我,这是一个至少可解。

+0

当我知道解决方案时,为什么我会试着解决它? – Caniko

+0

如果您不确定如何使用函数,那通常是一个很好的起点。但是,我的观点其实是你最初的问题是不可行的。至少在你定义它的方式中,可能不是你想要的方式。 –

1

我不知道如何指定min作为函数命令solve。但这里的是解决方程,然后后处理,根据您的约束结果的方法:

syms x y 
S=solve(x^2-4==0,y^2-9==0); 

[~,idx] = min(double(S.x .* S.y)+double(S.x + S.y)); 

X = double(S.x(idx)) 
Y = double(S.y(idx)) 

这给:

X = 
    2 

Y = 
-3 

的符号结果有使用double命令允许转换处理与min功能。

+0

假设您正确猜测了提问者想要的内容(使用前两个方程作为约束条件,将其他两个方程的总和作为目标函数),此解决方案非常好! –

+0

@DennisJaheruddin这是一种直觉,两种限制可以这样表达。 – Schorsch

+0

结构S有2个符号2×1向量。这就是为什么你可以将它们相互重叠并与它们一起作为矢量来使用。但在我的情况下,变量将取决于对方,以便您不能将其转换为双精度。你的回答是为我的例子做的,但不是一个优化问题。 – Caniko