python - 如何求解一组包含奇异矩阵而没有伪逆的线性微分方程?
问题描述
我正在尝试以矩阵形式求解一组微分方程:L* dx/dt = B*u - R*x
使用 scipy 的 solve_ivp 函数。
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,u,L_inv,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 的导数,我可以手动求解这些微分方程。有没有办法实现这个?
解决方案
推荐阅读
- javascript - window.scroll 不适用于页面上的多个滚动窗口
- c# - 在声明时初始化属性与 Blazor C# 中的 OnInitialize 的优缺点
- visual-studio - Qt VS 工具中的后台构建是什么
- python - 错误“产品”对象没有属性“_combinator_query”
- python - 如何找到最后一个元素的索引
- python - 我无法修复计算存款最终金额的功能
- python - 我的游戏角色只有在需要鼠标时鼠标在屏幕上移动时才会移动
- spartacus-storefront - 迁移 Spartacus SAP Commerce Cloud 2011
- flutter - 在 firebase 实时数据库中使用 get 和 index 获取文档
- html - 内容滚动通过视口时 CSS 背景不可见