HM1_Aufgabenserie2/Schenk_Brandenberger_S2_Auf...

56 lines
1.4 KiB
Python
Raw Normal View History

2022-09-30 13:45:59 +02:00
import numpy as np
import matplotlib.pyplot as plt
2022-09-30 14:00:57 +02:00
# Aufgabe 2a
2022-09-30 13:45:59 +02:00
xmin = 1.99
xmax = 2.01
x_number_of_points = 500
xsteps = (xmax - xmin) / x_number_of_points
2022-09-30 15:33:35 +02:00
def f1(x):
2022-09-30 13:45:59 +02:00
return x ** 7 - 14 * x ** 6 + 84 * x ** 5 - 280 * x ** 4 + 560 * x ** 3 - 672 * x ** 2 + 448 * x - 128
2022-09-30 15:33:35 +02:00
def f2(x):
2022-09-30 13:45:59 +02:00
return (x - 2) ** 7
2022-09-30 15:33:35 +02:00
x1 = np.arange(xmin, xmax + xsteps, xsteps)
yf1 = np.array([])
yf2 = np.array([])
for x_value in x1:
yf1 = np.append(yf1, f1(x_value))
yf2 = np.append(yf2, f2(x_value))
plt.plot(x1, yf1)
plt.plot(x1, yf2)
plt.legend(["f1(x)", "f2(x)"])
plt.figure()
print("min f1: ", min(yf1), "max f1: ", max(yf1))
print("min f2: ", min(yf2), "max f2: ", max(yf2))
2022-09-30 13:55:20 +02:00
2022-09-30 14:00:57 +02:00
# Die Werte sind sehr klein (von -e-14 bis e-14)
2022-09-30 13:55:20 +02:00
# sodass Rundungsfehler entstehen wenn die Werte als Fliesskommazahlen
2022-09-30 15:33:35 +02:00
# zwischengespeichert werden. In den zwei Funktionen f1 und f2 werden die
2022-09-30 14:00:57 +02:00
# Rechenoperationen in einer anderen Reihenfolge ausgeführt
# Aufgabe 2b
2022-09-30 15:33:35 +02:00
xmin = -10 ** -14
xmax = 10 ** -14
xsteps = 10 ** -17
def g(x):
return x / (np.sin(1 + x) - np.sin(1))
x2 = np.arange(xmin, xmax + xsteps, xsteps)
yg = np.array([])
for x_value in x2:
yg = np.append(yg, g(x_value))
plt.plot(x2, yg)
plt.legend(["g(x)"])
plt.figure()
print("min g: ", min(yg), "max g: ", max(yg))
# Die Berechnung des Grenzwertes für x --> 0 g(x) ist nicht stabil.
# Der Grenzwert scheint unendlich gross / klein zu sein.
# Aufgabe 2c
plt.show()