0
私の友人の一人が、なぜ簡単な等価式が異なる結果をもたらすか尋ねました。コードは少し長いですが、興味深い部分は99行と100行だけです。ここにはformulasとcodeがあります。 コードを確認しました。問題はf = 1
です。 問題は99行と100行です。コードを実行するのに約10秒かかります。 ガイドまたはコメントありがとうございました。等価式はMATLABで異なる結果を示します
私の友人の一人が、なぜ簡単な等価式が異なる結果をもたらすか尋ねました。コードは少し長いですが、興味深い部分は99行と100行だけです。ここにはformulasとcodeがあります。 コードを確認しました。問題はf = 1
です。 問題は99行と100行です。コードを実行するのに約10秒かかります。 ガイドまたはコメントありがとうございました。等価式はMATLABで異なる結果を示します
シンプルです。これは丸め誤差のためです。あなたがコメントアウトされていることはそう、fplus~=1
を行い、エラーオフいくつかのラウンドを持っています
E = log((1 - 1")/1) >= log(eps) >= -36.0437.
実際の値がされるべきである:
E = log((1 - 1)/1) = log(0) = -Inf
だからここに簡略化した形が良いです。それは 'log'の虚数部の問題ですか?また、丸め誤差のため。 – Abolfazl
@Abolfazlのコードでは、 'fminus'と' fplus'の両方が正です。虚数部はありません。そして、ログを計算するとき、丸め誤差はいくつかの特殊な値にのみ影響します。つまり、数値はほぼ0または1になります( 'log1p'を使うべきです)。 – eulerleibniz