Python数值计算雅可比矩阵
嗨,我有一个类,目的是求解微分方程组,这个类包含一个名为Rhs(右手边)的类,它包含微分问题的所有特征:初始时间、最终时间、初始值、函数(即包含lambda函数的numpy.array) 当我有一个微分方程系统时,函数是这样管理的:Python数值计算雅可比矩阵,python,differential-equations,Python,Differential Equations,嗨,我有一个类,目的是求解微分方程组,这个类包含一个名为Rhs(右手边)的类,它包含微分问题的所有特征:初始时间、最终时间、初始值、函数(即包含lambda函数的numpy.array) 当我有一个微分方程系统时,函数是这样管理的: eq1 = lambda t,u : a*(u[0]-u[0]*u[1]); eq2 = lambda t,u : -c*(u[1]-u[0]*u[1]); func1 = np.array([eq1,eq2]) y0 = np.array([2.,1
eq1 = lambda t,u : a*(u[0]-u[0]*u[1]);
eq2 = lambda t,u : -c*(u[1]-u[0]*u[1]);
func1 = np.array([eq1,eq2])
y0 = np.array([2.,1.])
system1 = rhs.Rhs(func1, 0,10,y0,500 )
使用Rhs类上面的参数已完成!它有一个返回每个函数值的方法,以及一个计算每个函数导数的方法:
def f(self,ti,ui):
return np.array([function(ti,ui) for function in self.func])
def Df(self,ti,ui):
eps = 10e-12
return (self.f(ti,ui+eps) - self.f(ti,ui-eps) )/(2*eps)
现在我有一个大问题,为了创建一个类来解决隐式方法,我必须计算函数的雅可比矩阵!但我不知道该怎么做!
我写下了这个,但不起作用:
def J(self,ti,ui):
self.t = ti
self.u = ui
Jac = np.zeros((len(ui),len(ui)))
n = len(ui)
eps = 1e-12
for i in range(n):
for j in range(n):
Jac[i,j] = self.Df(ti,ui)
return Jac