2017-06-08 4 views
0

を私はオクターブのベクトルの要素へのアクセスに問題があります。不便ベクトルの値にアクセスするとき - オクターブ

>> den = [1 2 1 2] 
>> poles = roots(den) 
>> poles = 

    -2.00000 + 0.00000i 
    0.00000 + 1.00000i 
    0.00000 - 1.00000i 
>> poles(2) 
ans = 4.1633e-016 + 1.0000e+000i 

代わり1I + 0を返すので、それは4.1633e-016 + 1.0000E +を返します。 000i。どうして?

どうすれば解決できますか?

+0

このFAQエントリを読んでくださいhttp://wiki.octave.org/FAQ#Why_is_this_floating_point_computation_wrong.3F – Andy

答えて

1

最初の結果に表示される内容は正しいものです。プレゼンテーションの精度は最大5桁の精度です。結果を見る2番目の呼び出しでは、科学的な形式で表示されるので、プレゼンテーションの限られた形式で表示される内容の真価を知ることができます。

私は、ゼロを意味する非常に小さい値を得ることがあると言及するべきですが、計算上のエラーのためにゼロの代わりに非常に小さい値を得ていることに言及すべきです。あなたのコードの前にformat long Eを使用して、詳細な科学的フォーマットで結果を得ることができます。

+0

私は理解します。どうすればそれを解決できますか? – cortigeronimo

+0

解決したい問題はありません!それはプレゼンテーションの精度です。あなたは 'format long E'を使ってあなたが望むものを受け取ることができます。 – OmG

関連する問題