主要内容

このページ最新ではありませ。をクリックし,英语のの最新版版を参照参照し。

丸め误差のと回避

を数値近似する,浮动小数点の结果はは精度によってによって影响影响ををを受ける可能ががありあります。。また,浮动浮动小数点点点でで丸め丸め丸め误差误差误差误差误差误差误差误差误差がの认识回避に役立てる。。

可能なシンボリック计算を使用

计算をシンボリック行うことが推奨の,厳密にシンボリック计算は丸め误差误差が発生しないためためためですですです。。たとえばたとえば,,,,,,,,,,,,以下以下以下以下以下以下以下のののののののようようようようようようななななななななななななななな标准标准标准标准标准标准标准标准标准标准的的

pi sym(pi)
ANS = 3.1416 ANS = PI

必要なの使用避けるようにします。浮动浮动の数字数字はは定数定数定数を近似ますますがが,それそれ自体は定数定数ではありませませませこのこのななな近似近似近似近似近似近似近似近似近似を。たとえば,关数重质は,SYM(PI)の正弦とpiの数値正弦と以下のよう异なるをを返します。

heaviside(sin(sys(pi)))重质(sin(pi))
ans = 1/2 ans = 1

精度をて计算を実行

リーマン予想は,ゼータ关数ζ(z)のすべて非な零点同一の実数部ℜ(z)= 1/2を有しと提唱れいますゼータ关数零点を见つけるにには,,値値値|ζ(1/2 + IY)|をプロットます次のは,ゼータ关数|ζ(1/2 + IY)|の最初のつの非な根をてます。。

符号yfplot(abs(Zeta(1/2 + i*y)),[0 30])

图包含一个轴。轴包含类型函数线的对象。

数値ソルバーvpasolveを使っこのゼータに存在する最初最初のののつつ零点を近似近似します

vpasolve(zeta(1/2 + i*y),y,15)vpasolve(zeta(1/2 + i*y),y,20)vpasolve(zeta(zeta(1/2 + i*y),y,25))
ans = 14.134725141734693790457251983562 ans = 21.022039638771554992628479593897 ans = 25.010857580145688763213790992563

次に同じの実数を少し大きくし, ζ (( 1000000001 2000000000 + 一世 y とします予想,この値値値値値値に対してもががありありませません。。。。有效有效有效有效小数小数桁数桁数桁数桁数vpasolveを使用,は以下のにゼータのの(存在ない)零点零点零点を见つけ见つけ

旧=数字;数字(10)vpasolve(Zeta(1000000001/2000000000 + I*y),y,15)
ANS = 14.13472514

桁数を,结果が不正确がわかります。关数关数 ζ (( 1000000001 2000000000 + 一世 y には,値14 に零点存在しませ。。

数字(15)vpasolve(Zeta(1000000001/2000000000 + I*y),y,15)数字(旧)
ANS = 14.1347251417347 + 0.000000000004999989207306345I

计算をための桁数に戻し。。

数字(旧)

シンボリックとのそれぞれの比较比较

インデックス半整の关数は厳密なシンボリック式を返しこのこのようようなな式式式をを浮动小数点数数でで近似近似するするとと,,结果结果がが不安定不安定不安定不安定になるがありありありありは以下のです。

b = besselj(53/2,sym(pi))
b =(351*2^(1/2)*(119409675/pi^4-20300/pi^2-315241542000/pi^6 ... + 444547570404038750/pi^8-8-36668127942794263762000/pi182947881139051297500/pi^12 - 55720697512636766610000/pi^14... + 10174148683695239020903125/pi^16 - 1060253389142977540073062500/pi^18... + 57306695683177936040949028125/pi^20 - 1331871030107060331702688875000/pi^22... + 8490677816932509614604641578125/pi^24+ 1))/pi^2

この式を,VPA10桁て桁ので近似し。。。

VPA(b,10)
ANS = -2854.225191

に浮动点のパラメーターを指定しベッセルベッセル关数。このこのこのこのこのこのこのつのつのつのつのつの近似近似のの有意有意差は,,どちら

Besselj(53/2,PI)
ANS = 6.9001E-23

数値处理精度を,より正确にbを近似し。

VPA(b,50)
ANS = 0.000000000000000000006900145606917284206862323284139473796597233761161

关数または式プロット

结果をと不正确な近似するの役立ちますます。たとえばたとえば,,次次ののにに关数关数关数ををを数値数値数値

b = besselj(53/2,sym(pi));VPA(b,10)
ANS = -2854.225191

このベッセル关数を53/2周辺のX値についてます。关数プロットをと,が不正确であるであることがが。。。

符号Xfplot(besselj(x,sym(pi)),[26 27])

图包含一个轴。轴包含类型函数线的对象。