none
26012017-kpwe2

    Question

  • //dane paramterow obwodu elektrycznego double E = 10, R = 2, C = 10E-3; //funkcja opisujaca pochodna dUc/dt = f(t,y) double f(double t, double y) { return (E - y) / (R * C); } private void button1_Click(object sender, EventArgs e) { //deklaracje pozostałych zmiennych double h = 4E-3, t, Ucn, Ucp; //do metody RK4 double UcnRK, UcpRK, f1, f2, f3, f4; //warunek poczatkowy t = 0; Ucp = 0; UcpRK = 0; do { //Euler - wyznaczenie przebiegu Uc Ucn = Ucp + h * f(t, Ucp); chart1.Series[0].Points.AddXY(t, Ucp); //Uc-wzorzec chart1.Series[1].Points.AddXY(t, E * (1 - Math.Exp(-t / (R * C)))); //metoda RK4 - Uc f1 = h * f(t, UcpRK); f2 = h * f(t + h / 2, UcpRK + f1 / 2); f3 = h * f(t + h / 2, UcpRK + f2 / 2); f4 = h * f(t + h, UcpRK+f3); UcnRK = UcpRK + (f1 + 2 * f2 + 2 * f3 + f4) / 6; chart1.Series[2].Points.AddXY(t, UcpRK); //przejscie do nastepnego kroku t += h; Ucp = Ucn; //w nast. kroku korzystamy z poprzedniej wartosci funkcji UcpRK = UcnRK; } while (t<=80E-3); //obliczenia wykonujemy dla 4 okresow }
    Thursday, January 26, 2017 11:45 AM