微分方程 BVP
differential equations BVP
#including the differential equations and parameters
def model(x,dydx,p):
s=p[0] #first parameter
a=p[1] #second parameter
dydx[0] = -2*(s+a)*y[0]+2*s*y[1]+s/2*y[2]
dydx[1] = +2*(s+a)*y[1]-2*s*y[0]-s/2*y[2]
dydx[2] = -(s+a)*y[2]
return np.vstack(dydx[0],dydx[1],dydx[2])
# boundary conditions
def bc(ya, yb,yc, p):
s=p[0]
a=p[1]
I0=1
return np.array(([ya[0], yb[0],yc[0],a,s]))
#x values
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.zeros((3, x.size))
#p= np.zeros((3, d.size))
#y initial values
y[0]=3
y[1]=3
y[2]=2
I0 = 1
sol = solve_bvp(model, bc,x,y, p=[1,1])
求解三个微分方程的边界条件不知道怎么写
我想解方程并得到 y
值和参数值
根据其他问题,您有固定参数和 3 个边界条件。这需要编码为
# boundary conditions
def bc(y0, yd, I0):
return np.array([y0[0], y0[2]-I0, yd[1]])
那么初始的x
数组需要以边界点
为界
x = np.linspace(0,d,9)
y = np.zeros((3, x.size))
#y initial values
y[0]=3
y[1]=3
y[2]=2
并且需要在没有可变参数的情况下调用求解器,通过 wrappers/partial 评估
将它们全部固定为常量值
sol = solve_bvp(lambda t,y:model(t,y,[s,a]), lambda y0,yd: bc(y0,yd,I0), x,y)
#including the differential equations and parameters
def model(x,dydx,p):
s=p[0] #first parameter
a=p[1] #second parameter
dydx[0] = -2*(s+a)*y[0]+2*s*y[1]+s/2*y[2]
dydx[1] = +2*(s+a)*y[1]-2*s*y[0]-s/2*y[2]
dydx[2] = -(s+a)*y[2]
return np.vstack(dydx[0],dydx[1],dydx[2])
# boundary conditions
def bc(ya, yb,yc, p):
s=p[0]
a=p[1]
I0=1
return np.array(([ya[0], yb[0],yc[0],a,s]))
#x values
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.zeros((3, x.size))
#p= np.zeros((3, d.size))
#y initial values
y[0]=3
y[1]=3
y[2]=2
I0 = 1
sol = solve_bvp(model, bc,x,y, p=[1,1])
求解三个微分方程的边界条件不知道怎么写
我想解方程并得到 y
值和参数值
根据其他问题,您有固定参数和 3 个边界条件。这需要编码为
# boundary conditions
def bc(y0, yd, I0):
return np.array([y0[0], y0[2]-I0, yd[1]])
那么初始的x
数组需要以边界点
x = np.linspace(0,d,9)
y = np.zeros((3, x.size))
#y initial values
y[0]=3
y[1]=3
y[2]=2
并且需要在没有可变参数的情况下调用求解器,通过 wrappers/partial 评估
将它们全部固定为常量值sol = solve_bvp(lambda t,y:model(t,y,[s,a]), lambda y0,yd: bc(y0,yd,I0), x,y)