# %% import numpy as np # %% print("Aufgabe 4") def fixpunkt_iteration(f, x=1.0, tol=1e-7, N=1000): x_new = f(x) i = 0 while np.abs(x_new - x) > tol: if i > N: raise RuntimeError("Keine Konvergenz erreicht") x = x_new x_new = f(x) i += 1 return [x_new, i] # Ausgabe print("----------------------------------------------------------------------") print(__file__) print("----------------------------------------------------------------------") f = lambda x: 1 - (1 / 5) * x try: fixpunkt_a, iterationen_a = fixpunkt_iteration(f) except RuntimeError as error: print(f"a) f(x) = 1-(1/5)*x\n{error}") else: print( f"a) f(x) = 1-(1/5)*x\nFixpunkt: {fixpunkt_a}\nIterationen: {iterationen_a}\n" ) f = np.cos try: fixpunkt_b, iterationen_b = fixpunkt_iteration(f) except RuntimeError as error: print(f"b) f(x) = cos(x)\n{error}") else: print(f"b) f(x) = cos(x)\nFixpunkt: {fixpunkt_b}\nIterationen: {iterationen_b}\n") f = lambda x: np.e**-x try: fixpunkt_c, iterationen_c = fixpunkt_iteration(f) except RuntimeError as error: print(f"c) f(x) = e⁻x\n{error}") else: print(f"c) f(x) = e⁻x\nFixpunkt: {fixpunkt_c}\nIterationen: {iterationen_c}\n") print("----------------------------------------------------------------------") ##% # Parameter q = 2.0 a_0 = 1.0 pr = 16 # Funktionen def f(x): y = 0.5 * (x + q / x) return y # Iteration w = 0.0 a = a_0 k = 0 print("----------------------------------------------------------------------") print(__file__) print("----------------------------------------------------------------------") print("Iteration :") print(f"a_{k} = {a:#.16g}") while a != w: w = a k = k + 1 a = f(a) print(f"a_{k} = {a:#.16g}") # Ausgabe : print("----------------------------------------------------------------------") print(f"Wurzel: sqrt({q:#.{pr}g}) = {a:#.{pr}g}") print("----------------------------------------------------------------------")