簡體   English   中英

在Matlab中象征性地求解非線性最小化方程

[英]Solving nonlinear minimization equations symbolically in 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);

我不知道如何將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

無法試一試,但快速計算告訴我,這個至少可以解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM