コード例 #1
0
def model(T, h, x0, y0):
    # Inicjacja tablic
    times = mh.createArray(0, T, h)

    d = 1

    xs = [x0]  #y
    ys = [y0]  #u
    es = [d - xs[0]]
    całka = es[0] * h
    kp = 1
    ki = 0.9
    kd = 0.5

    a = -1. / 2.

    # Symulacja wypełniająca tablice
    for i in range(0, len(times) - 1):
        es.append(d - xs[i])
        xs.append(xs[i] + h * (a * xs[i] + ys[i]))
        całka += es[i + 1] * h

        ys.append(kp * (es[i + 1]) + ki * (całka) + kd *
                  ((es[i + 1] - es[i]) / h))
    return (times, xs, ys)
コード例 #2
0
def model(T, h, y0, u0, d, kp, ki, kd, delay):
    # Inicjacja tablic
    times = mh.createArray(0, T, h)

    ys = [y0]
    es = [d - y0]
    us = [u0]
    a = 5

    calka = 0

    stepsDelayed = mh.delayToSteps(delay, h)

    # Symulacja wypełniająca tablice
    for i in range(0, len(times) - 1):
        if i > stepsDelayed:
            ys.append(ys[i] + h * (a * ys[i] + us[i]))
            es.append(d - ys[i + 1])
            calka += (es[i - stepsDelayed]) * h
            us.append(kp * es[i + 1 - stepsDelayed] + kd *
                      ((es[i + 1 - stepsDelayed] - es[i - stepsDelayed]) / h) +
                      ki * calka)
        else:
            ys.append(ys[i] + h * (a * ys[i] + us[i]))
            es.append(d - ys[i + 1])
            calka += (es[i]) * h
            us.append(0)

    return (times, ys, es, us, (kp, ki, kd))
コード例 #3
0
def model(T, h, x0, y0):
    # Inicjacja tablic
    times = mh.createArray(0, T, h)
    xs = [x0]  #y
    ys = [y0]  #u

    a = -1. / 2.
    d = 0.4
    treshhold = 0.05
    speed = 1

    lastRising = True

    # Symulacja wypełniająca tablice
    for i in range(0, len(times) - 1):
        # xs.append(xs[i] + h * (    ))
        # ys.append(ys[i] + h * (    ))
        if not lastRising and d - treshhold - xs[i] > 0:
            lastRising = True
            print("Treshold passed. Start rising")
        elif lastRising and d + treshhold - xs[i] <= 0:
            lastRising = False
            print("Treshold passed. Stop rising")

        if lastRising:
            ys.append(speed)
            print("Rising")
        else:
            ys.append(0)
            print("Falling")
            print(3)
        xs.append(xs[i] + h * (a * xs[i] + ys[i + 1]))
    return (times, xs, ys)
コード例 #4
0
def model(T, h, x0, y0):
    # Inicjacja tablic
    times = mh.createArray(0, T, h)
    xs = [x0]
    ys = [y0]

    # Symulacja wypełniająca tablice
    for i in range(0, len(times) - 1):
            # xs.append(xs[i] + h * (    ))
            # ys.append(ys[i] + h * (    ))
        xs.append(xs[i] + h * (1 / 2 * xs[i] - ys[i] - 1 / 2 * (xs[i] ** 3 + xs[i] * ys[i] ** 2)))
        ys.append(ys[i] + h * (xs[i + 1] + 1 / 2 * ys[i] - 1 / 2 * (ys[i] ** 3 + ys[i] * xs[i + 1] ** 2)))
    return (times, xs, ys)
コード例 #5
0
def model(T, h, x0, y0, z0):
    # Inicjacja tablic
    times = mh.createArray(0, T, h)
    xs = [x0]
    ys = [y0]
    zs = [z0]

    s = 10
    r = 28
    b = 8/3

    # Symulacja wypełniająca tablice
    for i in range(0, len(times) - 1):
            # xs.append(xs[i] + h * (    ))
            # ys.append(ys[i] + h * (    ))
        xs.append(xs[i] + h * (s * (ys[i] - xs[i])))
        ys.append(ys[i] + h * (r * xs[i+1] - ys[i] - xs[i+1] * zs[i]))
        zs.append(zs[i] + h * (-1 * b * zs[i] + xs[i+1] * ys[i+1]))
    return (times, xs, ys, zs)
コード例 #6
0
def modelOld(T, h, y0, u0, d, kp, ki, kd):
    # Inicjacja tablic
    times = mh.createArray(0, T, h)

    ys = [y0]
    es = [d - y0]
    us = [u0]
    a = 5

    calka = 0

    # Symulacja wypełniająca tablice
    for i in range(0, len(times) - 1):
        ys.append(ys[i] + h * (a * ys[i] + us[i]))
        es.append(d - ys[i + 1])
        calka += (es[i]) * h
        us.append(kp * es[i + 1] + kd * ((es[i + 1] - es[i]) / h) + ki * calka)

    return (times, ys, es, us, (kp, ki, kd))