Witam. Mógłby mi ktoś pomóc i naprowadzić mnie, gdzie w tym kodzie jest błąd? Co każdy krok podaje mi taką samą wartość początkową funkcji, niezależnie od jej wzoru.
class Rownanie
{
double t, y, dt, cel, z;
public Rownanie(double t, double y, double dt, double cel)
{
this.t = t;
this.y = y;
this.dt = dt;
this.cel = cel;
}
public void Run()
{
MK4 n = new MK4();
while (t < cel)
{
y= n.RK(t, y, dt, funkcja);
Console.WriteLine("t: {0}, y: {1}", t, y);
t = t + dt;
}
}
public static double funkcja(double t, double y)
{
return y;
}
class MK4
{
public delegate double Calc(double t, double y);
public double RK(double t, double y, double dt, Calc yp)
{
double k1 = dt * yp(t, y);
double k2 = dt * yp(t + 0.5 * dt, y + k1 * 0.5);
double k3 = dt * yp(t + 0.5 * dt, y + k2 * 0.5);
double k4 = dt * yp(t + dt, y + k3);
return (y + (1 / 6) * (k1 + 2 * k2 + 2 * k3 + k4));
}
}
Dziękuję za pomoc oraz pozdrawiam!