Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- def system_equations(variables):
- x, y = variables
- equation1 = np.sin(y) + 2 * x - 2
- equation2 = np.cos(x - 1) + y - 0.7
- return np.array([equation1, equation2])
- def jacobian_matrix(variables):
- x, y = variables
- # Находим производные
- jacobian = np.array([[2, np.cos(y)], [-np.sin(x - 1), 1]])
- return jacobian
- def newton_method(initial_guess, tolerance=1e-3, max_iterations=100):
- variables = initial_guess
- for i, iteration in enumerate(range(max_iterations)):
- equations = system_equations(variables)
- jacobian = jacobian_matrix(variables)
- delta = np.linalg.solve(jacobian, -equations)
- variables += delta
- # if err < eps
- if np.max(np.abs(delta)) < tolerance:
- return variables, i
- raise ValueError("The method did not converge")
- def main():
- # Solve the system of equations
- initial_guess = np.array([0, 0], dtype=float)
- solution,i = newton_method(initial_guess)
- print("Solution: x =", solution[0], "y =", solution[1], "i= ", i)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement