0

我有一个大型的未定方程系统,我针对任何给定的约束搜索唯一的解决方案。我将我的问题简化为以下问题:

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);
4

2 回答 2

1

我不知道如何将 as 指定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

于 2013-08-30T14:28:57.663 回答
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

无法尝试自己,但快速计算告诉我,这个至少是可以解决的。

于 2013-08-30T14:27:32.823 回答