如何求解一组不含伪逆矩阵的包含奇异矩阵的线性微分方程?

问题描述

我正在尝试使用 scipy 的 solve_ivp 函数以矩阵形式求解一组微分方程:L* dx/dt = B*u - R*x

    L_inv = np.linalg.pinv(L)

    def func(t,x,B,u,L_inv,R):
        
        # Calculate derivatives
        dx = np.dot(L_inv,(np.dot(B,u) - np.dot(R,x)))
        
        return dx

    x = solve_ivp(func,[min(time),max(time)],y0,t_eval=time,args=(B,R),vectorized=True)

问题是,L 几乎总是一个奇异矩阵,因此不可逆。使用 np.linalg.pinv 或 np.linalg.lstsq 计算的伪逆离正确很远,例如:

L = np.array([[712e-3,712e-3],[712e-3,712e-3]])
L_inv = np.linalg.pinv(L)
np.dot(L,L_inv)
>>>array([[0.5,0.5],[0.5,0.5]])

知道 dx 是 x 的导数,我可以手动求解这些微分方程。有没有办法实现这个?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)