問題があります。私は Octave の初心者で、これらの方程式をこの形式で解く必要があります。
-397.95 = min(k1*rate + k2);
776.37 = max(k1*rate + k2);
ここで、rate はサイズ 10000 の行ベクトルです。必要なのは、他の関数 (最大値と最小値) にあるルートを処理できるオクターブ関数だけです。この質問は少し数学的なものであることは知っていますが、これを解決するための適切な簡単な関数を取得できません...
答えてくれてありがとう
この問題の制約は次のとおりであることは簡単にわかります。
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);
編集:レートが行ベクトルであることを見逃しました。適当に転載させていただきました