我有一个大的欠定方程系统,为此我搜索关于任何给定约束的唯一解。我简化我的问题为以下之一:在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);
我有一个大的欠定方程系统,为此我搜索关于任何给定约束的唯一解。我简化我的问题为以下之一:在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);
你似乎碰到的问题是,没有解决方案,甚至没有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
不能尝试自己,但快速计算告诉我,这是一个至少可解。
当我知道解决方案时,为什么我会试着解决它? – Caniko
如果您不确定如何使用函数,那通常是一个很好的起点。但是,我的观点其实是你最初的问题是不可行的。至少在你定义它的方式中,可能不是你想要的方式。 –
我不知道如何指定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象征性地解决这样的问题...... – Caniko