
import numpy
import scikits.bvp_solver as bvp
epsilon=10**(-6)
b=0.3
k=10
def Fode(x,y):
return numpy.array([y[1],y[2],y[3],(((y[1]**2-y[0]*y[2])/16.0+(y[1]**2)/4.0)*y[2]-y[0]*(k**2)*((k**2)*(y[2]**2)/4.0+(x**2-b**2)/2.0))/epsilon-(-2*(k**2)*y[2]+(k**4)*y[0])])
def Fbc(ya,yb):
bca=numpy.array([ya[2],epsilon*(-ya[3]+2*(k**2)*ya[1])+ya[1]*((ya[1]**2)/4.0+(ya[1]**2-ya[0]*ya[2])/16.0)])
bcb=numpy.array([yb[2],epsilon*(-yb[3]+2*(k**2)*yb[1])+yb[1]*((yb[1]**2)/4.0+(yb[1]**2-yb[0]*yb[2])/16.0)])
return bca, bcb
def guess_y(x):
if x<0.3:
return numpy.array([(2*(b**2-x**2))**(0.5)/k,
-2**(0.5)*x/(k**(b**2-x**2)**(0.5)),
-(2)**(0.5)*b**2/(k*(b**2-x**2)**(1.5)),
-3*(2)**(0.5)*b**2*x/(k*(b**2-x**2)**(2.5))])
else:
return numpy.array([0.0,0.0,0.0,0.0])
problem=bvp.ProblemDefinition (num_ODE=4, num_parameters=0,
num_left_boundary_conditions=2,boundary_points=(0,0.5),
function=Fode,boundary_conditions=Fbc)
solution=bvp.solve(bvp_problem=problem,solution_guess=guess_y,trace=1)