import os
import matplotlib.pyplot as plt
import numpy as np
import scipy
os.chdir('/home/vg/Downloads/projects/ex17')
os.getcwd()
def f(x):
    return [x[1]-x[0]**3-2*x[0]**2+1,x[1]+x[0]**2-1]

tol=0.1
a,b=-2,2
x=np.linspace(-3,2,5000)
y1=x**3+2*x**2-1
y2=-x**2+1
fig,ax=plt.subplots(figsize=(8,4)) 
ax.plot(x,y1,'k',lw=1.5)
ax.plot(x,y2,'k',lw=1.5)
sol1=scipy.optimize.fsolve(f,[-2,2])
sol2=scipy.optimize.fsolve(f,[1,-1])
sol3=scipy.optimize.fsolve(f,[-2,-5])
sols=[sol1,sol2,sol3]
colors=['r','b','g']
for idx,s in enumerate(sols):
    ax.plot(s[0],s[1],colors[idx]+'*',markersize=15)

for m in np.linspace(-4,3,80):
    for n in np.linspace(-20,20,40):
        x_guess=[m,n]
        sol=scipy.optimize.fsolve(f,x_guess)
        idx = (abs(sols-sol)**2).sum(axis=1).argmin()
        ax.plot(x_guess[0],x_guess[1],colors[idx]+'.')

ax.set_title("Convergence of different initial guesses to different solutions")
plt.savefig("example17.png", dpi=100)
plt.show()
plt.close()

example17