predictorcorrectordiffeqsolver.java

来自「一个一元曲线多项式数值演示例子」· Java 代码 · 共 32 行

JAVA
32
字号
package numbercruncher.mathutils;

/**
 * Differential equation solver that implements
 * a predictor-corrector algorithm.
 */
public class PredictorCorrectorDiffEqSolver
    extends DiffEqSolver {
  /**
   * Constructor.
   * @param equation the differential equation to solve
   */
  public PredictorCorrectorDiffEqSolver(DifferentialEquation equation) {
    super(equation);
  }

  /**
   * Return the next data point in the
   * approximation of the solution.
   * @param h the width of the interval
   */
  public DataPoint nextPoint(float h) {
    float predictor = y + Math.abs(h) * equation.at(x);
    float avgSlope = (equation.at(x, y)
                      + equation.at(x + h, predictor)) / 2;

    y += h * avgSlope; // corrector
    x += h;

    return new DataPoint(x, y);
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?