演算の順序、数値アルゴリズム


10

読んだ

(1)条件の悪い操作は、条件の良い操作の前に実行する必要があります。

例として、乗算はそうで​​はないのに減算は悪条件なので、バツz−yzをとして計算する必要(バツ−y)zがあります。

ただし、両方のアルゴリズムの1次エラー分析では、3倍(*)だけ異なることがわかり、これをステートメント(1)に一般化できる理由もわかりません。また、その重要性を直感的に把握していません。操作の順序。ステートメントは(1)は受け入れられたルールであると思いますか、それについて他の説明がありますか?

*:より具体的には、最初のバージョンには、

eps+3|x|+|y||x|−|y|eps
第二のバージョンの相対誤差がで囲まれている間

3eps+|x|+|y||x|−|y|eps

ここで、epsはマシンの精度です。

ことをこの分析は、仮定に基づいている私番目の中間結果を用いて乗算される(1+εi)(丸め誤差に)、εiによって囲まIIDランダム変数であるeps。「一次」とは、ような高次の項ϵiϵjバツが無視されることを意味します。


どこで読んだの?
— David Ketcheson、2015年

私の講義ノートで
— バナナチ

回答:


8

正確な乗算(×)、加算(+)、および減算(−)の浮動小数点アナログをそれぞれ(私は怠惰な除算演算子を取得しようとして怠惰でした)で示しましょう。我々は仮定します(IEEE-754)は、それらのすべてのための [ X ⊕ Y ] = (X + Y )(1 + δ ⊕)、⊗、⊕、⊖×+−ε M A C H上部四捨五入に相対誤差に結合を与える機械イプシロンです。また、(と仮定し、すべての次の補題を使用します | δ I | ≤ ε mはCの時間、そして mは:簡単に証明することができる大きすぎない) 、M Π iの= 1(1 + δ I)= 1 + θを(

[バツ⊕y]=(バツ+y)(1+δ⊕)、|δ⊕|≤εメートルach、
εメートルach|δ私|≤εメートルachメートル
Π私=1メートル(1+δ私)=1+θ(メートル)、|θ(メートル)|≤メートルεメートルach1−メートルεメートルach

レッツは、真の関数定義実数で動作xは、Y 、Zなどをfバツ、y、z

f(x,y,z)=(x×z)−(y×z)

そして、としてIEEE準拠の浮動小数点演算関数の実装の2つのバージョン及び〜F 2の浮動小数点表現で動作〜X = X (1 + δ X)、〜yは、〜zは、次の通り:f1~f2~x~=x(1+δx),y~,z~

f1~(x~,y~,z~)=(x~⊗z~)⊖(y~⊗z~)、

f2~(x~,y~,z~)=(x~⊖y~)⊗z~.

エラー解析:f1~

f1~=((x(1+δx)×z(1+δz))(1+δ⊗xz)⏟(x~⊗z~)−(y(1+δy)×z(1+δz))(1+δ⊗yz)⏟(y~⊗z~))(1+δ⊖)=xz(1+δx)(1+δz)(1+δ⊗xz)(1+δ⊖)−yz(1+δy)(1+δz)(1+δ⊗yz)(1+δ⊖)=xz(1+θxz,1)−yz(1+θyz,1).
|θxz,1|,|θyz,1|≤4ϵmach1−4ϵmach

f2~

f2~=(((x(1+δx)−y(1+δy)(1+δ⊖xy))×(z(1+δz)))(1+δ⊗)=xz(1+δx)(1+δz)(1+δ⊖xy)(1+δ⊗)−yz(1+δy)(1+δz)(1+δ⊖xy)(1+δ⊗)=xz(1+θx,2)−yz(1+θy,2).
|θx,2|,|θy,2|≤4ϵmach1−4ϵmach

f1~f2~f2~f1~

xy

|f1~−f||f|=|xz+xzθxz,1−yz−yzθyz,1−(xz−yz)||xz−yz|=|xθxz,1−yθyz,1||x−y|≤|x|+|y||x−y|4ϵmach1−4ϵmach,
|f2~−f||f|=|xz+xzθx,2−yz−yzθy,2−(xz−yz)||xz−yz|=|xθx,2−yθy,2||x−y|≤|x|+|y||x−y|4ϵmach1−4ϵmach.

θx,y,z(x−y)xy

x,y,z,f(x,y,z)∈F0F0

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.