我有一个很大的欠定方程系统,我根据任何给定的约束搜索一个独特的解决方案。我将我的问题简化为以下问题:
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 :(得分: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
函数进行处理。
答案 1 :(得分: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
无法尝试自己,但快速计算告诉我,这个至少是可以解决的。