Загрузка данных


import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve, root

# Выражаем x2 из уравнений:
# 1) cos(x1) + x2 - 0.5 = 0  => x2 = 0.5 - cos(x1)
# 2) 1/(x1+1.5) - x2 - 1 = 0 => x2 = 1/(x1+1.5) - 1
f1 = lambda x1: 0.5 - np.cos(x1)
f2 = lambda x1: 1/(x1 + 1.5) - 1

# Построение графиков
x = np.linspace(-1, 2, 500)
plt.plot(x, f1(x), label='x2 = 0.5 - cos(x1)')
plt.plot(x, f2(x), label='x2 = 1/(x1+1.5) - 1')
plt.xlabel('x1')
plt.ylabel('x2')
plt.grid()
plt.legend()

# Система уравнений: x2 - f1(x1) = 0, x2 - f2(x1) = 0
def sys(v):
    return [v[1] - f1(v[0]), v[1] - f2(v[0])]

# Начальное приближение
guess = [0.3, 0.3]

# Решение
sol_fsolve = fsolve(sys, guess)
sol_root = root(sys, guess).x

print(f"fsolve: x1 = {sol_fsolve[0]:.6f}, x2 = {sol_fsolve[1]:.6f}")
print(f"root:   x1 = {sol_root[0]:.6f}, x2 = {sol_root[1]:.6f}")

# Отметим решение на графике
plt.plot(sol_fsolve[0], sol_fsolve[1], 'ro', markersize=8, label='Решение')
plt.legend()
plt.show()