From 5912373856606654999f29ffd42f8888e68b85b9 Mon Sep 17 00:00:00 2001 From: leobr Date: Thu, 20 Oct 2022 15:50:45 +0200 Subject: [PATCH] continued with task 4 --- Schenk_Brandenberger_S3_Aufg4.py | 33 +++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/Schenk_Brandenberger_S3_Aufg4.py b/Schenk_Brandenberger_S3_Aufg4.py index 5116285..41b22fc 100644 --- a/Schenk_Brandenberger_S3_Aufg4.py +++ b/Schenk_Brandenberger_S3_Aufg4.py @@ -2,31 +2,50 @@ import numpy as np import matplotlib.pyplot as plt import math + def h1(x): - return math.sqrt(100 * math.pow(x,2) - 200 * x + 99) + try: + return math.sqrt(100 * math.pow(x, 2) - 200 * x + 99) + except: + return + def h1_diff(x): return (100 * x - 100) / math.sqrt(100 * math.pow(x, 2) - 200 * x + 99) + def h2(x): return math.sqrt((10 * x - 9) * (10 * x - 11)) -xStep = math.pow(10,-7) -xStart = 1.1 + xStep + +def kondnumb(x): + return (np.abs(h1_diff(x)) * np.abs(x)) / np.abs(h1(x)) + + +xStep = math.pow(10, -7) +xStart = 1.1 xStop = 1.31 - -x = np.arange(xStart,xStop + xStep,xStep) +x = np.arange(xStart, xStop + xStep, xStep) y1 = [h1(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] + +plt.yscale('log', base=10) +plt.plot(x, y3, label='Konditionszahl') +plt.title('4.b)') +plt.legend() +plt.figure() + plt.plot(x, y1, label='h1(x)') plt.plot(x, y2, label='h2(x)') -plt.yscale('log', base=10) +plt.xlim(1.099, 1.101) + plt.legend() 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. \ No newline at end of file +# Somit kann die Wurzel für diesen x Werte nicht berechnet werden.