import numpy as np
# Вектор функций F(x, y, z)
def F(X):
x, y, z = X
return np.array([
x**2 + x - y*z - 0.1,
-3*y + y**2 - x*z + 0.2,
2*z + z**2 + x*y - 0.3
], dtype=float)
# Базовое отображение φ0 (без релаксации)
def phi0(X):
x, y, z = X
return np.array([
-x**2 + y*z + 0.1,
(y**2 - x*z + 0.2) / 3.0,
(-z**2 - x*y + 0.3) / 2.0
], dtype=float)
# Релаксированное отображение φ = X + λ(φ0(X) - X)
def phi(X, lam=0.24):
return X + lam * (phi0(X) - X)
def simple_iterations(x0, eps=1e-6, lam=0.24, max_iter=100):
X = np.array(x0, dtype=float)
print("Метод простых итераций (λ = %.2f)" % lam)
print("k\t x_k\t\t y_k\t\t z_k\t\tmax|F_i(x_k)|")
for k in range(1, max_iter + 1):
X_new = phi(X, lam)
r = F(X_new)
r_max = np.max(np.abs(r))
print(f"{k:2d}\t{X_new[0]: .8f}\t{X_new[1]: .8f}\t"
f"{X_new[2]: .8f}\t{r_max: .2e}")
if r_max < eps:
print("Достигнута точность ε =", eps)
break
X = X_new
return X_new
# Старт из аналитического приближения
x0 = [0.10, 0.07, 0.15]
root_iter = simple_iterations(x0)
print("\nИтог (метод простых итераций):")
print("x =", root_iter[0])
print("y =", root_iter[1])
print("z =", root_iter[2])
print("Невязки F(x):", F(root_iter))