Está en la página 1de 1

27/9/23, 13:02 Actividad corte 2 - Colaboratory

Dado el siguiente sistema de ecuaciones

tan(x) − y = 1

cos(x) − 3sen(y) = 0

Programe una función en Python modificando la rutina del método de Newton Raphson vista en clase para resolver el sistema usando los
valores iniciales x = 1 y y = 1.

1 import numpy as np
2 import scipy.linalg as la
3
4 def metodo_newton(se, J, x0, tol): #Dónde se es el sistema ecuaciones, J es jacobiano, x0 contiene las condiciones iniciales, tol es la tolerancia
5 for i in range(10):
6 x1 = x0 - np.linalg.solve(J(x0), se(x0)) #Este código me resuelve un sistemas de ecuaciones lineales del tipo Ax = b, que se deriva de aplicar el método
7 if np.linalg.norm(x1 - x0) <= tol: # si es menor que la tolerancia, termina
8 return x1, i + 1 # i + 1 porque queremos contar desde 1
9 x0 = x1
10 return x1, 10 # Devolvemos 10 iteraciones si no se cumple la convergencia
11
12 def sistema_ecuaciones(x):
13 u = np.tan(x[0]) - x[1] - 1
14 v = np.cos(x[0]) - 3 * np.sin(x[1])
15 # print (u) si imprimimos u nos da el resultado del taller (tan(1) − 1 − 1 = −0.4425922753450977)
16 return np.array([u, v])
17
18 def jacobiano(x):
19 df_dx0 = 1 / np.cos(x[0])**2 # Derivada de tan(x) con respecto a x
20 df_dy = -1 # Derivada de tan(x) con respecto a y
21 dg_dx0 = -np.sin(x[0]) # Derivada de cos(x) con respecto a x
22 dg_dy = -3 * np.cos(x[1]) # Derivada de cos(x) con respecto a y
23 return np.array([[df_dx0, df_dy], [dg_dx0, dg_dy]])
24
25 x0 = np.array([1, 1]) # Valores iniciales
26 tolerancia = 1e-10 # Tolerancia para la convergencia
27
28 solucion, iteraciones = metodo_newton(sistema_ecuaciones, jacobiano, x0, tolerancia)
29
30 print('Solución encontrada después de', iteraciones, 'iteraciones:')
31 print('x =', solucion[0], '\n', 'y =', solucion[1]) #NOTA: las soluciones usando 10 iteraciones del método deben ser: (0.8817165072550953, 0.2139007137631178,

Solución encontrada después de 6 iteraciones:


x = 0.8815925944959485
y = 0.2135947145716605

https://colab.research.google.com/drive/1PcfauIw2DRdjEuBOcXEWou4QMdejmPGh#scrollTo=bSF-8zJiWqZL&printMode=true 1/1

También podría gustarte