f(x)= sqrt(1 + x) - sqrt(1-x)のような関数では、特定の範囲のx値に対して望ましくない結果が得られます。しかし、方程式を元の方程式と新しい方程式を区分的に書き換えることができます。浮動小数点演算の不安定性
どのようにx値の範囲を調べ、これらのような質問の代わりの式を見つけることができますか? (オンラインでの研究から、関数が本質的に特定の値を「取り消す」ことを望んでいないことがわかったのですが、それはすべて私たちが探しているものですか?たとえばf(x)= e^x-
f(x)= sqrt(1 + x) - sqrt(1-x)のような関数では、特定の範囲のx値に対して望ましくない結果が得られます。しかし、方程式を元の方程式と新しい方程式を区分的に書き換えることができます。浮動小数点演算の不安定性
どのようにx値の範囲を調べ、これらのような質問の代わりの式を見つけることができますか? (オンラインでの研究から、関数が本質的に特定の値を「取り消す」ことを望んでいないことがわかったのですが、それはすべて私たちが探しているものですか?たとえばf(x)= e^x-
残念ながら、ここには黄金の弾丸はありません。普通の方法は、多くの実験と精巧なエラー分析です。f(x)= 0?便利なツール:
BigFloat
タイプを提供しています。ハービーはそれが役に立つ前にはるかに洗練された(またはバギーの少ない)必要があると思う。 OPの式を入力すると、この表現がどんなドメインで役に立つかもしれないことの兆候なしで、 '1/8 x^3/+(7/128 x^5 + x)'が返されました。 –
それは奇妙です:小さなウェブアプリのこと、それは質問に質問で示唆した答えを与えた: '(x + x)/(sqrt(1 + x)+ sqrt(1-x))'。 –
うーん、それは奇数です。私は以前と同じ結果を得ています(テイラー級数0の周りでの展開)。しかし、アルゴリズムにはランダムな入力があるようです。多分それはそれを説明します。 –
この質問は書かれている限りはあまりにも広すぎます。より具体的になりますか? –
f(x)= sqrt(1 + x) - sqrt(1-x)は、浮動小数点演算を使用して評価すると結果が悪くなるxの範囲を指定できますか? 「キャンセルエラー」が発生しないように、xのこれらの値に対してf(x)の代わりの式を指定します。 – Brainpower2049
@ Brainpower2049:小さな 'x'は問題があります。たとえば、 'f(1e-17)'は '0.0 'を返しますが、' f(1e-16) 'は' 1.1102230246251565e-16'を返します。数値的には等価ではない式は '2 * x /(sqrt(1 + x)+ sqrt(1-x))'です。これは、ドメイン['-1.0、1.0]'全体にわたって数値的に良い結果をもたらします。 –