continued with task 4

This commit is contained in:
leobr 2022-10-20 16:25:00 +02:00
parent 26b3523b4d
commit 51163cdf1c
1 changed files with 13 additions and 7 deletions

View File

@ -2,6 +2,10 @@ import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import math import math
# Aufgabe 4a)
# 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.
def h1(x): def h1(x):
try: try:
@ -22,6 +26,9 @@ def h2(x):
def kondnumb(x): def kondnumb(x):
return (np.abs(h1_diff(x)) * np.abs(x)) / np.abs(h1(x)) return (np.abs(h1_diff(x)) * np.abs(x)) / np.abs(h1(x))
def kondnumb2(x):
return (np.abs(h2_diff(x)) * np.abs(x)) / np.abs(h2(x))
xStep = math.pow(10, -7) xStep = math.pow(10, -7)
xStart = 1.1 xStart = 1.1
@ -31,10 +38,12 @@ x = np.arange(xStart, xStop + xStep, xStep)
y1 = [h1(x_val) for x_val in x] y1 = [h1(x_val) for x_val in x]
y2 = [h2(x_val) for x_val in x] y2 = [h2(x_val) for x_val in x]
# y3 = [kondnumb(x_val) for x_val in x] y3 = [kondnumb(x_val) for x_val in x]
y4 = [kondnumb2(x_val) for x_val in x]
# plt.yscale('log', base=10) plt.yscale('log', base=10)
# plt.plot(x, y3, label='Konditionszahl') plt.plot(x, y3, label='Konditionszahl')
plt.plot(x, y4, label='Konditionszahl nach Umformung')
plt.title('4.b)') plt.title('4.b)')
plt.legend() plt.legend()
plt.figure() plt.figure()
@ -46,7 +55,4 @@ plt.xlim(1.099, 1.101)
plt.legend() plt.legend()
plt.show() plt.show()
# Aufgabe 4a)
# 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.