import numpy as np
import math

def horner_schema(v, x):
    n = len(v)
    p = v[-1]
    for i in range(n - 1, 0, -1):
        p = v[i - 1] + x * p
    return p

print(horner_schema([-1, 2, 3, 0, -4, 1], 3))


def horner_schema_aufwand(v, x):
    n = len(v)
    p = v[-1]
    aufwand = 0

    for i in range(n - 1, 0, -1):
        p = v[i - 1] + x * p
        aufwand = aufwand + 2

    print("Aufwand:", aufwand)
    return p

print(horner_schema_aufwand([-1, 2, 3, 0, -4, 1], 3))


def vollstaendiges_horner_schema_aufwand(v, x):
    n = len(v)
    p = np.zeros(n)
    a = np.zeros((n + 1, n))
    a[:, -1] = v[-1]
    a[0, :] = v
    aufwand = 0

    for k in range(n):
        for j in range(n - 1, k, -1):
            a[k + 1, j - 1] = a[k, j - 1] + a[k + 1, j] * x
            aufwand = aufwand + 2

        p[k] = math.factorial(k) * a[k + 1, k]
        aufwand = aufwand + 1

        if k >= 2:
            aufwand = aufwand + (k - 1)

    print("Aufwand:", aufwand)
    return p


print(vollstaendiges_horner_schema_aufwand([-1, 2, 3, 0, -4, 1], 3))


def horner_schema_sym(v, x):
    n = len(v)
    r = v[-1]

    for i in range(n - 1, 0, -2):
        r = v[i - 2] + x**2 * r

    return r

print(horner_schema_sym([-35, 0, 0, 0, -5, 0, 2], 2))


Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: