java 微分方程求解_Java中的微分方程
時間序列微分方程可以通過取dt =小數,并使用幾個numerical integration techniques中的一個來數值模擬。 Euler's method或Runge-Kutta。歐拉的方法可能是原始的,但它適用于某些方程式,并且它很簡單,你可以嘗試一下。例如。:
S'(t) = - l(t) * S(t)
I'(t) = l(t) * S(t) - g(t) * I(t)
R'(t) = g(t) * I(t)
int N = 100;
double[] S = new double[N+1];
double[] I = new double[N+1];
double[] R = new double[N+1];
S[0] = /* initial value */
I[0] = /* initial value */
R[0] = /* initial value */
double dt = total_time / N;
for (int i = 0; i < 100; ++i)
{
double t = i*dt;
double l = /* compute l here */
double g = /* compute g here */
/* calculate derivatives */
double dSdt = - I[i] * S[i];
double dIdt = I[i] * S[i] - g * I[i];
double dRdt = g * I[i];
/* now integrate using Euler */
S[i+1] = S[i] + dSdt * dt;
I[i+1] = I[i] + dIdt * dt;
R[i+1] = R[i] + dRdt * dt;
}困難的部分是弄清楚要使用多少步驟。您應該閱讀我鏈接到的其中一篇文章。更復雜的微分方程求解器使用可變步長,以適應每個步驟的精度/穩定性。
我實際上建議使用像R或Mathematica或MATLAB或Octave這樣的數字軟件,因為它們包括ODE求解器,你不需要自己解決所有問題。但是如果你需要在大型Java應用程序中執行此操作,至少首先使用數學軟件進行嘗試,然后了解步長是什么以及解算器的工作原理。
祝你好運!
總結
以上是生活随笔為你收集整理的java 微分方程求解_Java中的微分方程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker启动MySql后连接报125
- 下一篇: java中运算的注意事项