HM1_Serien/serie1/IT19ta_ZH7_S1_Aufg2.py
2020-09-26 15:30:35 +02:00

81 lines
1.9 KiB
Python
Executable File

#!/usr/bin/env python3
import numpy
import matplotlib.pyplot as plt
STEPS = 1
def gen_polynom(x, coefficients, derivativ=False, integral=False):
if derivativ is True:
n = len(coefficients) - 1
deriv_coefficients = coefficients
for index, coefficient in enumerate(coefficients):
deriv_coefficients[index] = coefficient * n
n -= 1
coefficients = deriv_coefficients
n = len(coefficients) - 2
elif integral is True:
n = len(coefficients) - 1
integral_coefficients = coefficients
for index, coefficient in enumerate(coefficients):
integral_coefficients[index] = coefficient * (1 / (n + 1))
n -= 1
coefficients = integral_coefficients
n = len(coefficients)
else:
n = len(coefficients) - 1
y = 0
for coefficient in coefficients:
if n < 0:
break
elif n == 0:
y += coefficient * x
else:
y += coefficient * (x ** n)
n -= 1
return y
def calc_func(vector, xmin, xmax, derivativ=False, integral=False):
x = numpy.arange(xmin, xmax, STEPS)
y = gen_polynom(x, vector)
plt.plot(x, y, label="f(x)")
if derivativ is True:
y = gen_polynom(x, vector, derivativ=derivativ)
plt.plot(x, y, label="f'(x)")
if integral is True:
y = gen_polynom(x, vector, integral=integral)
plt.plot(x, y, label="F(x)")
def check_values(vector, xmin, xmax):
if not vector or not xmin or not xmax:
raise Exception("Fehler")
if len(numpy.shape(vector)) > 1:
raise Exception("Fehler")
if __name__ == "__main__":
vector = [2, 1, 3]
xmin = -5
xmax = 5
check_values(vector, xmin, xmax)
calc_func(vector, xmin, xmax)
plt.grid()
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()