我有一个大型的未定方程系统,我针对任何给定的约束搜索唯一的解决方案。我将我的问题简化为以下问题:
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);
我有一个大型的未定方程系统,我针对任何给定的约束搜索唯一的解决方案。我将我的问题简化为以下问题:
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);
我不知道如何将 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
您似乎遇到的问题是没有解决方案,甚至 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
无法尝试自己,但快速计算告诉我,这个至少是可以解决的。