code improvement ideas
This commit is contained in:
parent
388773f989
commit
ea59d8ab22
|
@ -160,3 +160,4 @@ cython_debug/
|
||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
#.idea/
|
#.idea/
|
||||||
|
|
||||||
|
/Leo_2.py
|
||||||
|
|
|
@ -6,19 +6,28 @@ xmin = 1.99
|
||||||
xmax = 2.01
|
xmax = 2.01
|
||||||
x_number_of_points = 500
|
x_number_of_points = 500
|
||||||
xsteps = (xmax - xmin) / x_number_of_points
|
xsteps = (xmax - xmin) / x_number_of_points
|
||||||
|
|
||||||
|
|
||||||
def f1(x):
|
def f1(x):
|
||||||
return x ** 7 - 14 * x ** 6 + 84 * x ** 5 - 280 * x ** 4 + 560 * x ** 3 - 672 * x ** 2 + 448 * x - 128
|
return x ** 7 - 14 * x ** 6 + 84 * x ** 5 - 280 * x ** 4 + 560 * x ** 3 - 672 * x ** 2 + 448 * x - 128
|
||||||
|
|
||||||
|
|
||||||
def f2(x):
|
def f2(x):
|
||||||
return (x - 2) ** 7
|
return (x - 2) ** 7
|
||||||
|
|
||||||
|
|
||||||
x1 = np.arange(xmin, xmax + xsteps, xsteps)
|
x1 = np.arange(xmin, xmax + xsteps, xsteps)
|
||||||
|
|
||||||
|
#todo yf1 = [f1(x_value) for x_value in x1]
|
||||||
|
#todo yf2 = [f2(x_value) for x_value in x1]
|
||||||
yf1 = np.array([])
|
yf1 = np.array([])
|
||||||
yf2 = np.array([])
|
yf2 = np.array([])
|
||||||
for x_value in x1:
|
for x_value in x1:
|
||||||
yf1 = np.append(yf1, f1(x_value))
|
yf1 = np.append(yf1, f1(x_value))
|
||||||
yf2 = np.append(yf2, f2(x_value))
|
yf2 = np.append(yf2, f2(x_value))
|
||||||
plt.plot(x1, yf1)
|
plt.plot(x1, yf1, label='f1(x)')
|
||||||
plt.plot(x1, yf2)
|
plt.plot(x1, yf2, label='f2(x)')
|
||||||
plt.legend(["f1(x)", "f2(x)"])
|
plt.legend()
|
||||||
plt.title("Aufgabe 2a")
|
plt.title("Aufgabe 2a")
|
||||||
plt.figure()
|
plt.figure()
|
||||||
|
|
||||||
|
@ -29,7 +38,7 @@ print("min f2: ", min(yf2), "max f2: ", max(yf2))
|
||||||
# sodass Rundungsfehler entstehen wenn die Werte als Fliesskommazahlen
|
# sodass Rundungsfehler entstehen wenn die Werte als Fliesskommazahlen
|
||||||
# zwischengespeichert werden. In den zwei Funktionen f1 und f2 werden die
|
# zwischengespeichert werden. In den zwei Funktionen f1 und f2 werden die
|
||||||
# Rechenoperationen in einer anderen Reihenfolge ausgeführt.
|
# Rechenoperationen in einer anderen Reihenfolge ausgeführt.
|
||||||
# bei f1 werden die Terme addiert. Entsprechend ist beim Runden nur der Termin mit dem
|
# bei f1 werden die Terme addiert. Entsprechend ist beim Runden nur der Term mit dem
|
||||||
# grössten Exponent dominant.
|
# grössten Exponent dominant.
|
||||||
# bei f2 erhält man immer eine Zahl nahe bei 0.
|
# bei f2 erhält man immer eine Zahl nahe bei 0.
|
||||||
|
|
||||||
|
@ -37,15 +46,22 @@ print("min f2: ", min(yf2), "max f2: ", max(yf2))
|
||||||
xmin = -10 ** -14
|
xmin = -10 ** -14
|
||||||
xmax = 10 ** -14
|
xmax = 10 ** -14
|
||||||
xsteps = 10 ** -17
|
xsteps = 10 ** -17
|
||||||
|
|
||||||
|
|
||||||
def g1(x):
|
def g1(x):
|
||||||
return x / (np.sin(1 + x) - np.sin(1))
|
return x / (np.sin(1 + x) - np.sin(1))
|
||||||
|
|
||||||
|
|
||||||
x2 = np.arange(xmin, xmax + xsteps, xsteps)
|
x2 = np.arange(xmin, xmax + xsteps, xsteps)
|
||||||
|
# todo yg1 = [g1(x_value) for x_value in x2] ?
|
||||||
yg1 = np.array([])
|
yg1 = np.array([])
|
||||||
for x_value in x2:
|
for x_value in x2:
|
||||||
yg1 = np.append(yg1, g1(x_value))
|
yg1 = np.append(yg1, g1(x_value))
|
||||||
plt.plot(x2, yg1)
|
plt.plot(x2, yg1, label='g1(x)')
|
||||||
|
#todo print(f'min g1: {min(yg1)} max g1: {max(yg1)}')
|
||||||
print("min g1: ", min(yg1), "max g1: ", max(yg1))
|
print("min g1: ", min(yg1), "max g1: ", max(yg1))
|
||||||
|
|
||||||
|
|
||||||
# Die Berechnung des Grenzwertes für x --> 0 g(x) ist nicht stabil.
|
# Die Berechnung des Grenzwertes für x --> 0 g(x) ist nicht stabil.
|
||||||
# Der Grenzwert scheint unendlich gross / klein zu sein.
|
# Der Grenzwert scheint unendlich gross / klein zu sein.
|
||||||
|
|
||||||
|
@ -53,12 +69,16 @@ print("min g1: ", min(yg1), "max g1: ", max(yg1))
|
||||||
# a = 1+x, b = 1
|
# a = 1+x, b = 1
|
||||||
def g2(x):
|
def g2(x):
|
||||||
return x / (2 * np.cos((1 + x + 1) / 2) * np.sin((x) / 2))
|
return x / (2 * np.cos((1 + x + 1) / 2) * np.sin((x) / 2))
|
||||||
|
|
||||||
|
#todo yg2 = [g2(x_value) for x_value in x2]
|
||||||
yg2 = np.array([])
|
yg2 = np.array([])
|
||||||
|
|
||||||
for x_value in x2:
|
for x_value in x2:
|
||||||
yg2 = np.append(yg2, g2(x_value))
|
yg2 = np.append(yg2, g2(x_value))
|
||||||
plt.plot(x2, yg2)
|
plt.plot(x2, yg2, label='g2(x)')
|
||||||
|
#todo print(f'min g2: {min(yg2)} max g2: {max(yg2)}')
|
||||||
print("min g2: ", min(yg2), "max g2: ", max(yg2))
|
print("min g2: ", min(yg2), "max g2: ", max(yg2))
|
||||||
plt.legend(["g1(x)", "g2(x)"])
|
plt.legend()
|
||||||
plt.title("Aufgabe 2bc")
|
plt.title("Aufgabe 2bc")
|
||||||
|
|
||||||
# Der Grenzwert für x = 0 beträgt 1.85. Die Funktion ist nun stabil. Bei g1 ist der Nenner 0 wenn x = 0
|
# Der Grenzwert für x = 0 beträgt 1.85. Die Funktion ist nun stabil. Bei g1 ist der Nenner 0 wenn x = 0
|
||||||
|
@ -67,5 +87,3 @@ plt.title("Aufgabe 2bc")
|
||||||
|
|
||||||
|
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue