4

ベクトルを評価するとき、何が私にとって予期しない動作であるかに気付きました。ループ内でインデックスを作成するのとは、直接行うのとはまったく異なるようです。誰でもこれについて助けてもらえますか?おそらく、各操作の作成方法で説明されていることを知っているので、それを探す方法についていくつかのキーが必要です

アドバイスありがとうございます よろしくお願いします

例:

x=[0.05:.01:3];
n=size(x,2);
y1 = (8*x-1)/(x)-(exp(x));

for i=1:n
    y2(i)=(8*x(i)-1)/(x(i))-(exp(x(i)));
end

a1=[x;y1];
a2=[x;y2];

plot(x,y1, 'red')
hold on
plot(x,y2, 'blue')

ここにプロット: http://i.stack.imgur.com/qAHD6.jpg

結果:

a2:
0.05   -13.0513
0.06   -9.7285
0.07   -7.3582
0.08   -5.5833
0.09   -4.2053
0.10   -3.1052
0.11   -2.2072
0.12   -1.4608
0.13   -0.8311
0.14   -0.2931
0.15   0.1715
0.16   0.5765




a1:
0.05   6.4497
0.06   6.4391
0.07   6.4284
0.08   6.4177
0.09   6.4068
0.10   6.3958
0.11   6.3847
0.12   6.3734
0.13   6.3621
0.14   6.3507
0.15   6.3391
0.16   6.3274
4

2 に答える 2

6

あなたが欲しいものは:

 y1 = (8*x-1)./(x)-(exp(x));   % note the ./

それ以外の:

 y1 = (8*x-1)/(x)-(exp(x)); 

補足として、入力help /して、元の最初のステートメントが実際に何をしていたかを確認できます。それは効果的に実行されていまし(x'\(8*x-1)')'た(バックスラッシュに注意してください)。

于 2012-05-29T23:05:37.593 に答える
3

エラーは、y1の最初のベクトル計算にあります。問題は、xで割る部分にあります。ベクトル/行列の除算は単一要素の除算とは異なり、ベクトル/行列の結果を返します。

解決策は、これらのベクトルの要素ごとの除算を行うことです。このためのベクトル表記のショートカットは、。/(dot-divide)を使用することです。

y3 = (8*x-1)./(x)-(exp(x));

これで、y2とy3が同一であることがわかります。

于 2012-05-29T23:05:36.753 に答える