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;
}
完美的選擇範圍在中間的步驟進行循環下舍入誤差穩定。謝謝。 – CroCo