0

ここに式があります:

E = T*(1-W)*U + X*W*F + S*W*C*D

TWSXおよびDはすべて定数でありU、 、FおよびCは変数であり、FおよびCは互いに関連しているとしましょう。

ここでの目的は、とEのさまざまな組み合わせに基づいてのさまざまな値を見つけることです。UFC

たとえば、次の変数の値があります。

U = 2.02,  1,     3,      4
F = 6,     4,     3.03
C = 0.5,   0.4,   0.3

FCが互いに関連していることに注意してください。たとえば、when thenF=6またはC=0.5if F=4thenC=0.4などです。

matlabでこれを実行して、matlabがE変数のすべての可能な組み合わせの値を計算できるようにする方法を教えてください。

4

3 に答える 3

2

関係を見つけた

F = 10*(exp(C)-1.06);

あなたのデータから。それがあなたの期待と一致しているかどうかはわかりません。とにかく、C、F、および U の範囲と個々の変数をサンプリングするステップのサイズを選択したら、関数の位相空間を次のように計算できます。

%%%% modify me %%%%
T = 1;
W = 1;
S = 1;
X = 1;
D = 1;
%%%%%%%%%%%%%

Nstep = 10;

U = [2.02, 1, 3 , 4];
F = [6, 4, 3.03];
C = [0.5, 0.4, 0.3];

Umin = min(U);
Umax = max(U);
Cmin = min(C);
Cmax = max(C);
Fmin = min(F);
Fmax = max(F);

Ustep = (Umax-Umin)/Nstep;
Fstep = (Fmax-Fmin)/Nstep;
Cstep = (Cmax-Cmin)/Nstep;

U = [Umin:Ustep:Umax];
C = [Cmin:Cstep:Cmax];
F = [Fmin:Fstep:Fmax];
[C,F,U] = MESHGRID(C,F,U);

E = T.*(1-W).*U + X.*W.*F + S.*W.*C.*D;

残りの変数 T、W、S、X、D がスカラーでない場合は、それらを保持する配列のサイズを調整する必要があります。

于 2013-08-01T12:12:17.537 に答える
1

あなたの質問を正しく理解できたかどうかわかりません。既知の値を持つ 3 つの変数をループしたいだけで、そのうちの 2 つが相関している場合は、たとえば次のように使用できます。

U = [2.02 1 3  4];
F = [6 4 3.03];
C = [0.5 0.4 0.3];
T = 1; W = 2; S = 3; X = 4; D = 5; %example values

for j=1:size(U,2)
    for i=1:size(F,2)
        E = T*(1-W)*U(j) + X*W*F(i) + S*W*C(i)*D; disp (E);
    end
end

それ以外の場合は、F と C の関係についてもう少し詳しく説明する必要があります。

于 2013-08-01T12:25:51.710 に答える
0

これはあまり最適化されていませんが、理解しやすいはずです。

U = [2.02 1 3  4];
F = [6 4 3.03];
C = [0.5 0.4 0.3];
[W, T, D, X, S] = deal(1); %Assign dummy values for now
minLength =  min(min(numel(U),numel(F)),numel(C)); %As U is not the same length as F and C here
E = zeros(minLength,1);
for k = 1:minLength
    E(k) = T*(1-W)*U(k) + X*W*F(k) + S*W*C(k)*D;
end

次のようにして、最小値を見つけることができます。

find(E == min(E))
于 2013-08-01T13:26:30.310 に答える