0

diffは離散導関数を計算することを知っています。つまり、ベクトルの必然的なコンポーネント間の差を言いましょう。

変数を定義しない

x=-4:1/10:4;
y=diff(diff(x));

1.e-15*ゼロ以外のベクトルの行を取得するのはなぜですか? Matlabは、どういうわけかそれを表示することで正直です.計算x=-4:1/10:4;では、いくつかの数字をy=(diff(x));丸めました.オフ -4+0.1 または -3.9 以外の量 ???)。では、標準出力を取得するにはどうすればよいでしょうか。この場合のように、実際にゼロである場合に 0 を取得するにはどうすればよい1*e-...ですか?

それが不可能な場合、 diff が実際にゼロの場合、 real/ actualdiff(x,2)、または少なくとも正確な符号とゼロを計算するにはどうすればよいですか? cosine誤解を招くような値の代わりに、関数の実際の離散導関数を取得しますか?

diff を使用して変曲点を計算する必要があります。

4

1 に答える 1

0

要するに、これは MATLAB でeps(つまり、イプシロン) によって与えられる浮動小数点の精度によるものです。得られる結果はどれもこの正確さであり、それ以上ではありません。あなたの質問に関しては、すべての要素を丸めるか、ほぼゼロの要素をゼロにすることで、結果をきれいにすることができます。たとえば、10ε より小さいすべての要素をゼロに設定するには、次のようにします。

y = diff(x, 2);
y(abs(y) < 10 * eps) = 0;

詳細については、重複した質問の回答を参照してください。

于 2013-03-17T14:46:46.380 に答える