1
0
Files
computational-math/Л2-В6/Матвей/сomputational_mathematics.py
2024-03-19 14:03:49 +03:00

78 lines
1.6 KiB
Python

def half_div_method(f, f_d, a, b, max_iter=10_000, eps=0.00001):
x_n = (a + b) / 2
i = 0
while abs(f(x_n)) >= eps and i < max_iter:
x_n = (a + b) / 2
f_ = f(x_n)
if f_ == 0:
break
if f(a) * f_ < 0:
b = x_n
else:
a = x_n
i += 1
return x_n
def chord_method(f, f_d, f_dd, a, b, max_iter=1_000_000, eps=0.01):
x_n = (a + b) / 2
i = 0
while abs(f(x_n)) >= eps and i < max_iter:
X = a
if f(X) * f_dd(X) <= 0:
X = b
if f(X) * f_dd(X) <= 0:
return None
x_n = x_n - f(x_n) * (X - x_n) / (f(X) - f(x_n))
i += 1
return x_n
def newtons_method(f, f_d, a, b, max_iter=10_000, eps=0.00001):
x_n = a
i = 0
while abs(f(x_n)) >= eps and i < max_iter:
x_n = x_n - f(x_n) / f_d(x_n)
i += 1
return x_n
def modified_newtons_method(f, f_d, a, b, max_iter=1_000_000, eps=0.01):
x_n = a
f_d_0 = f_d(x_n)
i = 0
while abs(f(x_n)) >= eps and i < max_iter:
x_n = x_n - f(x_n) / f_d_0
i += 1
return x_n
def combined_method(f, f_d, a, b, max_iter=10_000, eps=0.00001):
x_n = a
y_n = b
i = 0
while abs(x_n - y_n) >= eps and i < max_iter:
x_n = x_n - f(x_n) / f_d(x_n)
y_n = y_n - f(y_n) * (x_n - y_n) / (f(x_n) - f(y_n))
i += 1
return (x_n + y_n) / 2
def iterative_method(f, f_d, a, b, max_iter=10_000, eps=0.0001):
def phi(x):
return x - f(x) / f_d(x)
i = 0
x = phi(a)
while abs(f(x)) >= eps and i < max_iter:
x = phi(x)
i += 1
return x