feat: Heron Verfahren implementiert
This commit is contained in:
parent
c241c2c695
commit
f0efc806e6
@ -1,14 +1,15 @@
|
|||||||
#%%
|
# %%
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
# %%
|
# %%
|
||||||
print("Aufgabe 4")
|
print("Aufgabe 4")
|
||||||
|
|
||||||
|
|
||||||
def fixpunkt_iteration(f, x=1.0, tol=1e-7, N=1000):
|
def fixpunkt_iteration(f, x=1.0, tol=1e-7, N=1000):
|
||||||
x_new = f(x)
|
x_new = f(x)
|
||||||
i = 0
|
i = 0
|
||||||
|
|
||||||
while(np.abs(x_new-x) > tol):
|
while np.abs(x_new - x) > tol:
|
||||||
if i > N:
|
if i > N:
|
||||||
raise RuntimeError("Keine Konvergenz erreicht")
|
raise RuntimeError("Keine Konvergenz erreicht")
|
||||||
|
|
||||||
@ -17,18 +18,21 @@ def fixpunkt_iteration(f, x=1.0, tol=1e-7, N=1000):
|
|||||||
i += 1
|
i += 1
|
||||||
return [x_new, i]
|
return [x_new, i]
|
||||||
|
|
||||||
|
|
||||||
# Ausgabe
|
# Ausgabe
|
||||||
print("----------------------------------------------------------------------")
|
print("----------------------------------------------------------------------")
|
||||||
print(__file__)
|
print(__file__)
|
||||||
print("----------------------------------------------------------------------")
|
print("----------------------------------------------------------------------")
|
||||||
|
|
||||||
f = lambda x: 1-(1/5)*x
|
f = lambda x: 1 - (1 / 5) * x
|
||||||
try:
|
try:
|
||||||
fixpunkt_a, iterationen_a = fixpunkt_iteration(f)
|
fixpunkt_a, iterationen_a = fixpunkt_iteration(f)
|
||||||
except RuntimeError as error:
|
except RuntimeError as error:
|
||||||
print(f"a) f(x) = 1-(1/5)*x\n{error}")
|
print(f"a) f(x) = 1-(1/5)*x\n{error}")
|
||||||
else:
|
else:
|
||||||
print(f"a) f(x) = 1-(1/5)*x\nFixpunkt: {fixpunkt_a}\nIterationen: {iterationen_a}\n")
|
print(
|
||||||
|
f"a) f(x) = 1-(1/5)*x\nFixpunkt: {fixpunkt_a}\nIterationen: {iterationen_a}\n"
|
||||||
|
)
|
||||||
|
|
||||||
f = np.cos
|
f = np.cos
|
||||||
try:
|
try:
|
||||||
@ -47,3 +51,38 @@ else:
|
|||||||
print(f"c) f(x) = e⁻x\nFixpunkt: {fixpunkt_c}\nIterationen: {iterationen_c}\n")
|
print(f"c) f(x) = e⁻x\nFixpunkt: {fixpunkt_c}\nIterationen: {iterationen_c}\n")
|
||||||
|
|
||||||
print("----------------------------------------------------------------------")
|
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("----------------------------------------------------------------------")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user