scikits.bvp_solver生成ValueError:要解压缩的值太多

时间:2015-07-02 21:13:05

标签: python-2.7 scipy scikits

我将从一个非常简单的ODE开始,它通过使用scikits.bvp_solver生成相同的错误代码,因为我应用于复杂的ODE。以下是ODE和边界条件:

f''''(x)=f(x), f(0)=0, f'(1)=1, f''(0)=1, f'''(1)=1

解决此ODE的代码:

import numpy
import scikits.bvp_solver as bvp
def Fode(x,y):
    return numpy.array([y[1],y[2],y[3],y[0]])
def Fbc(ya,yb):
    return (numpy.array([ya[0]]),numpy.array([yb[1]-1]),
            numpy.array([ya[2]-1]),numpy.array([yb[3]-1]))
guess=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,1),
                               function=Fode,boundary_conditions=Fbc)
solution=bvp.solve(bvp_problem=problem,solution_guess=guess)

当我运行此代码时,我收到:

enter image description here

我无法弄清楚是什么问题,因为相同的代码适用于二阶ODE。任何评论都表示赞赏。

1 个答案:

答案 0 :(得分:1)

你的Fbc函数应该正好返回两个数组,一个包含左边界条件的函数值差异,另一个包含右边的值。

请参阅https://pythonhosted.org/scikits.bvp_solver/tutorial.html#defining-the-problem

https://pythonhosted.org/scikits.bvp_solver/examples/examples.example4.html