1
いくつかの積分方法を検討しています。私は長方形の統合方法(すなわち、オイラーの方法)に遭遇しました。私が読んでいる本によると、実際のアルゴリズムは長方形積分法でこのパーセント誤差を計算するには
コード自明です。この例では、dxdt=cos(t)
の初期値はx(0)=0
です。分析解はx=sin(t)
です。私たちは、t=1
で誤差を計算することができますし、実際、著者は次の表にそれを提供しています。
問題は、私の次のコードでは、誤差は9.1%であるということですが、上記の表では、エラーを実際に2.6である。私は間違いを犯しましたか?
#include <iostream>
#include <cmath>
int main()
{
double x(0.0), dxdt, t(0.0), T(0.1), stopTime(1.0);
for (; t <= stopTime; t += T){
dxdt = cos(t);
x += dxdt*T;
if (t > 0.9)
std::cout << "Time: " << t << " Error: " << fabs((x - sin(t)) /sin(t))*100.0 << std::endl;
}
return 0;
}
パーフェクトのように、との手順です不平等で境界を選択することで、どちらか、
t
インクリメントで丸め誤差の下でループを安定させる必要があります。ありがとうございました。 – CroCo