public override CSP Method(CSP csp0, double x1) { double h = x1 - csp0.x; double y1 = csp0.y + h * f(csp0.x, csp0.y, csp0.z); double z1 = csp0.z + h * g(csp0.x, csp0.y, csp0.z); return(new CSP(x1, y1, z1)); }
static void Test_4_07(double x1) { SODE_4 RG_4 = new SODE_4(csp0, f_07, g_07); CSP csp1 = RG_4.Solve_with_Precision(x1, eps); err = Math.Abs(Sy1 - csp1.y) + Math.Abs(Sz1 - csp1.z); SW.WriteLine($"\r\n Test - MAC_Sys_of_ODE_O1_RungeKutta_2:"); SW.WriteLine($" {csp1.x,8:F4}{csp1.y,14:F9}{Sy1,14:F9}" + $" {csp1.z,14:F9}{Sz1,14:F9}" + $"{err,11:E1} {RG_4.iter}"); }
public override CSP Method(CSP csp0, double x1) { double h = x1 - csp0.x; double k1 = h * f(csp0.x, csp0.y, csp0.z); double l1 = h * g(csp0.x, csp0.y, csp0.z); double k2 = h * f(csp0.x + h, csp0.y + k1, csp0.z + l1); double l2 = h * g(csp0.x + h, csp0.y + k1, csp0.z + l1); double y1 = csp0.y + 0.5 * (k1 + k2); double z1 = csp0.z + 0.5 * (l1 + l2); return(new CSP(x1, y1, z1)); }
public override CSP Method(CSP csp0, double x1) { double h = x1 - csp0.x, h2 = 0.5 * h; double k1 = h * f(csp0.x, csp0.y, csp0.z); double l1 = h * g(csp0.x, csp0.y, csp0.z); double k2 = h * f(csp0.x + h2, csp0.y + k1 * 0.5, csp0.z + l1 * 0.5); double l2 = h * g(csp0.x + h2, csp0.y + k1 * 0.5, csp0.z + l1 * 0.5); double k3 = h * f(csp0.x + h, csp0.y - k1 + 2 * k2, csp0.z - l1 + 2 * l2); double l3 = h * g(csp0.x + h, csp0.y - k1 + 2 * k2, csp0.z - l1 + 2 * l2); double y1 = csp0.y + (k1 + 4 * k2 + k3) / 6.0; double z1 = csp0.z + (l1 + 4 * l2 + l3) / 6.0; return(new CSP(x1, y1, z1)); }
static void Main(string[] args) { //csp0 = new CSP(0.0, 3.0, 5.0); x1 = 0.25; //Sy1 = Sy_00(x1); Sz1 = Sz_00(x1); //Test_1_00(x1); Test_2_00(x1); //Test_3_00(x1); //Test_4_00(x1); csp0 = new CSP(0.0, 1.0, 3.0); x1 = 0.27; Sy1 = Sy_07(x1); Sz1 = Sz_07(x1); Test_1_07(x1); Test_2_07(x1); Test_3_07(x1); Test_4_07(x1); SW.Close(); }
public MAC_Sys_of_ODE_Order_1_RungeKutta_2 (CSP csp, Func <double, double, double, double> f, Func <double, double, double, double> g) : base(csp, f, g) { }
abstract public CSP Method(CSP csp0, double x1);
public MAC_Sys_of_ODE_Order_1 (CSP csp, Func <double, double, double, double> f, Func <double, double, double, double> g) { this.CSPO = new CSP(csp); this.g = g; this.f = f; }