GDIAMA_8 octubre

239 days ago by etlopez18

Resolución de sistemas no lineales

Ejercicio 5 de la lista

 
       
F(x,y)=(exp(x*y)-6*x*y,-exp(y)+6*x); F 
       
(x, y) |--> (-6*x*y + e^(x*y), 6*x - e^y)
(x, y) |--> (-6*x*y + e^(x*y), 6*x - e^y)

Una solución al sistema es una solución a las dos ecuaciones. Podemos dibujar las ecuaciones usando implicit_plot. Donde se corten las dos curvas será la solución buscada.

curvas=implicit_plot(-6*x*y + e^(x*y)==0,(x,0,1),(y,0,1))+implicit_plot(F(x,y)[1]==0,(x,0,1),(y,0,1),color='red') curvas 
       

Partimos del punto inicial $(1,1)$.

x0,y0=1.0,1.0 
       

Calculamos la matriz jacobiana en el punto $x_0$. Resolvemos el sistema $J x=-F(x_0,y_0)$ que nos da la diferencia entre $x_{n+1}$ y $x_n$. Para obtener $x_{n+1}$, sumamos la solución del sistema anterior a $x_n$.

show(F.diff()) 
       

                                
                            

                                
J0=matrix(RDF,F.diff()(x0,y0)) J0 
       
[-3.281718171540955 -3.281718171540955]
[               6.0 -2.718281828459045]
[-3.281718171540955 -3.281718171540955]
[               6.0 -2.718281828459045]
-F(x0,y0) 
       
(3.28171817154095, -3.28171817154095)
(3.28171817154095, -3.28171817154095)
J0=matrix(RDF,F.diff()(x0,y0)) xd1,yd1=J0.solve_right(-F(x0,y0)); xd1,yd1 
       
(-0.6882089978342097, -0.3117910021657904)
(-0.6882089978342097, -0.3117910021657904)
x1,y1=x0+xd1,y0+yd1 x1,y1 
       
(0.311791002165790, 0.688208997834210)
(0.311791002165790, 0.688208997834210)

Repetimos el proceso para obtener una segunda aproximación.

J1=matrix(RDF,F.diff()(x1,y1)) xd2,yd2=J1.solve_right(-F(x1,y1)); x2,y2=x1+xd2,y1+yd2 x2,y2 
       
(0.317071167272466, 0.644131382828457)
(0.317071167272466, 0.644131382828457)
F(x1,y1) 
       
(0.0312500000000000, 0.343750000000000)
(0.0312500000000000, 0.343750000000000)

Y una tercera

J2=matrix(RDF,F.diff()(x2,y2)) xd3,yd3=J2.solve_right(-F(x2,y2)); x3,y3=x2+xd3,y2+yd3 x3,y3 
       
(0.317413905041866, 0.644210809738408)
(0.317413905041866, 0.644210809738408)

Finalmente, dibujamos los puntos obtenidos para comprobar que convergen a la solución buscada.

points([(x0,y0),(x1,y1),(x2,y2),(x3,y3)],size=20,color='black')+curvas 
       

Practica:

Aproximar un cero del sistema

$\left.\begin{array}{r} x^3-y^2=0  \\ x^2+3y^2-1=0   \end{array}\right\}$

mediante tres pasos del método de Newton, tomando como valor inicial $(1,1)$.

 
       
help(implicit_plot3d)