0

問題があります。私は Octave の初心者で、これらの方程式をこの形式で解く必要があります。

-397.95 = min(k1*rate + k2); 776.37 = max(k1*rate + k2);

ここで、rate はサイズ 10000 の行ベクトルです。必要なのは、他の関数 (最大値と最小値) にあるルートを処理できるオクターブ関数だけです。この質問は少し数学的なものであることは知っていますが、これを解決するための適切な簡単な関数を取得できません...

答えてくれてありがとう

4

3 に答える 3

0

この問題の制約は次のとおりであることは簡単にわかります。

k1 * rate + k2 >= -397.95

k1 * rate + k2 <= 776.37

k1 の値が大きいほど、この方程式の結果の分散が大きくなるため、目的は、これらの制約に従って k1 を最大化することです (-k1 を最小化するのと同じことです)。

これを単純な線形プログラムとして実行できるようになりました。

height = size(rate,1);
c = [-1;0];
A = [rate',ones(height,1); rate',ones(height,1)];
b = [-397.95*ones(height,1); 766.37*ones(height,1)];
lb = [0;-Inf];
ub = [Inf; Inf];
ctype = [repmat("L",height,1); repmat("U",height,1)];
k = glpk (c,A,b,lb,ub,ctype)
k1 = k(1);
k2 = k(2);

編集:レートが行ベクトルであることを見逃しました。適当に転載させていただきました

于 2013-10-14T20:42:55.370 に答える