HarmonicOscillator.java package pendulum; import import import import import import java.awt.geom.Point2D; java.io.BufferedWriter; java.io.IOException; java.util.List; myLib.rungeKutta.Dynamics; myLib.utils.FileIO; /** * 調和振動子 * @author tadaki */ public class HarmonicOscillator extends Dynamics { private final double k;//omega^2に相当するパラメタ /** * コンストラクタ * * @param x 振幅の初期値 * @param v 速度の初期値 * @param k 角速度の2乗に相当するパラメタ */ public HarmonicOscillator(double x, double v, double k) { super(2, x, v);//スーパークラスによる初期化 this.k = k; //微分方程式の記述 equation = (double xx, double[] yy) -> { double dy[] = new double[numVar]; dy[0] = yy[1];// dx/dt = v dy[1] = -k * yy[0];// dv/dt = - omega^2 x return dy; }; } /** * @param args the command line arguments * @throws java.io.IOException */ public static void main(String[] args) throws IOException { HarmonicOscillator sys = new HarmonicOscillator(0., 1., 1.); double t = 50.; int nstep = 10000; // 時間50を10000に区分して、積分を実行 // 結果を(t,x)のリストで得る 1/2 ページ HarmonicOscillator.java List<Point2D.Double> points = sys.evolution(t, nstep); // 結果をファイルへ出力 BufferedWriter out = FileIO.openWriter("output.csv"); for (Point2D.Double p : points) { FileIO.writeSSV(out, p.x,p.y); } } } 2/2 ページ
© Copyright 2024 ExpyDoc