Compare commits
12
Commits
fe87b3f2c8
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33d4cf66eb | ||
|
|
5eb8cb5797 | ||
|
|
51163cdf1c | ||
|
|
26b3523b4d | ||
|
|
ecd625aaff | ||
|
|
5912373856 | ||
|
|
d1e1daca18 | ||
|
|
bed9e0c562 | ||
|
|
e108ba6f08 | ||
|
|
dff6d7b7b4 | ||
|
|
1d49cdbaf6 | ||
|
|
7921fabe3b |
@@ -0,0 +1,69 @@
|
|||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import math
|
||||||
|
|
||||||
|
def h1(x):
|
||||||
|
try:
|
||||||
|
return math.sqrt(100 * math.pow(x, 2) - 200 * x + 99)
|
||||||
|
except:
|
||||||
|
return
|
||||||
|
|
||||||
|
def h2(x):
|
||||||
|
return math.sqrt((10 * x - 9) * (10 * x - 11))
|
||||||
|
|
||||||
|
def h1_diff(x):
|
||||||
|
try:
|
||||||
|
return (100 * x - 100) / math.sqrt(100 * math.pow(x, 2) - 200 * x + 99)
|
||||||
|
except:
|
||||||
|
return
|
||||||
|
|
||||||
|
def h2_diff(x):
|
||||||
|
return (100 * x - 100) / math.sqrt((10*x-11)*(10*x-9))
|
||||||
|
|
||||||
|
def kondnumb1(x):
|
||||||
|
try:
|
||||||
|
return (np.abs(h1_diff(x)) * np.abs(x)) / np.abs(h1(x))
|
||||||
|
except:
|
||||||
|
return
|
||||||
|
|
||||||
|
def kondnumb2(x):
|
||||||
|
return (np.abs(h2_diff(x)) * np.abs(x)) / np.abs(h2(x))
|
||||||
|
|
||||||
|
|
||||||
|
xStep = math.pow(10, -7)
|
||||||
|
xStart = 1.1
|
||||||
|
xStop = 1.31
|
||||||
|
|
||||||
|
x = np.arange(xStart, xStop + xStep, xStep)
|
||||||
|
yh1 = [h1(x_val) for x_val in x]
|
||||||
|
yh2 = [h2(x_val) for x_val in x]
|
||||||
|
ykondnumb1 = [kondnumb1(x_val) for x_val in x]
|
||||||
|
ykondnumb2 = [kondnumb2(x_val) for x_val in x]
|
||||||
|
|
||||||
|
# Aufgabe 4a)
|
||||||
|
plt.plot(x, yh1, label='h1(x)')
|
||||||
|
plt.plot(x, yh2, label='h2(x)')
|
||||||
|
plt.title("h(x) für Aufgabe 4a")
|
||||||
|
plt.legend()
|
||||||
|
plt.figure()
|
||||||
|
# Da die Operation nicht gut konditioniert ist, erhält man für den Ausdruck inder Wurzel
|
||||||
|
# bei x = 1.1, -1.4e-14 => ein kleiner Rundungsfehler
|
||||||
|
# Somit kann die Wurzel für diesen x Werte nicht berechnet werden.
|
||||||
|
|
||||||
|
|
||||||
|
# Aufgabe 4b)
|
||||||
|
plt.plot(x, ykondnumb1, label='Konditionszahl')
|
||||||
|
plt.plot(x, ykondnumb2, label='Konditionszahl nach Umformung')
|
||||||
|
plt.yscale('log', base=10)
|
||||||
|
plt.title('Aufgabe 4b)')
|
||||||
|
plt.legend()
|
||||||
|
plt.figure()
|
||||||
|
|
||||||
|
# Aufgabe 4c)
|
||||||
|
# Die umgeformte Algebraisch umgeformte Funktion h2 ist besser konditioniert.
|
||||||
|
# Für den Audruck in der Wurzel wird genau 0.0 berechnet (bei x = 1.1).
|
||||||
|
# Es entstehen keine Rundungsfehler mehr.
|
||||||
|
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user