[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-dynamicslab--pysindy":3,"tool-dynamicslab--pysindy":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":79,"owner_twitter":79,"owner_website":79,"owner_url":80,"languages":81,"stars":86,"forks":87,"last_commit_at":88,"license":89,"difficulty_score":90,"env_os":91,"env_gpu":91,"env_ram":91,"env_deps":92,"category_tags":96,"github_topics":97,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":104,"updated_at":105,"faqs":106,"releases":135},2528,"dynamicslab\u002Fpysindy","pysindy","A package for the sparse identification of nonlinear dynamical systems from data","PySINDy 是一个专注于从数据中识别非线性动力学系统的 Python 开源库。其核心功能基于稀疏识别非线性动力学系统（SINDy）方法，旨在通过测量数据自动推导出支配系统演化的控制方程。简单来说，如果你拥有一组随时间变化的观测数据，PySINDy 能帮你“逆向工程”出背后的数学公式，从而揭示数据生成的物理规律。\n\n这一工具主要解决了传统黑盒模型难以解释、缺乏物理意义的问题。通过 PySINDy 发现的模型不仅具备高度的可解释性，还能准确预测未来状态、辅助控制输入设计或支持理论分析，实现了数据驱动与物理机理的有机结合。\n\nPySINDy 特别适合科研人员、数据科学家以及从事复杂系统建模的开发者和工程师使用。无论是研究流体力学、化学反应动力学，还是分析其他随时间演变的物理过程，它都能提供有力的支持。普通用户若对底层数学原理不熟悉，可能需要一定的学习成本，但其清晰的文档和丰富的教程降低了入门门槛。\n\n在技术亮点方面，PySINDy 不仅实现了基础的 SINDy 算法，还集成了多种先进的优化器，如用于凸优化的 SR3、处理 L0 约束的分支定界优化器 MIOSR，以及提供贝叶斯回归后验分布","PySINDy 是一个专注于从数据中识别非线性动力学系统的 Python 开源库。其核心功能基于稀疏识别非线性动力学系统（SINDy）方法，旨在通过测量数据自动推导出支配系统演化的控制方程。简单来说，如果你拥有一组随时间变化的观测数据，PySINDy 能帮你“逆向工程”出背后的数学公式，从而揭示数据生成的物理规律。\n\n这一工具主要解决了传统黑盒模型难以解释、缺乏物理意义的问题。通过 PySINDy 发现的模型不仅具备高度的可解释性，还能准确预测未来状态、辅助控制输入设计或支持理论分析，实现了数据驱动与物理机理的有机结合。\n\nPySINDy 特别适合科研人员、数据科学家以及从事复杂系统建模的开发者和工程师使用。无论是研究流体力学、化学反应动力学，还是分析其他随时间演变的物理过程，它都能提供有力的支持。普通用户若对底层数学原理不熟悉，可能需要一定的学习成本，但其清晰的文档和丰富的教程降低了入门门槛。\n\n在技术亮点方面，PySINDy 不仅实现了基础的 SINDy 算法，还集成了多种先进的优化器，如用于凸优化的 SR3、处理 L0 约束的分支定界优化器 MIOSR，以及提供贝叶斯回归后验分布的 SBR。这些特性使得模型在不同噪声水平和数据条件下都能保持稳健性和准确性。此外，该库具有良好的扩展性，支持与 Deeptime、PyDMD 等相关生态工具配合使用，为时间序列分析和降维提供了更多可能性。","PySINDy\n=========\n\n|BuildCI| |RTD| |PyPI| |Codecov| |JOSS1| |JOSS2| |DOI|\n\n**PySINDy** is a package for system identification, primarily revolving around the method of\nSparse Identification of Nonlinear Dynamical systems (SINDy) method introduced\nin Brunton et al. (2016a).\nIt also includes other methods from related literature.\n\n*System identification* refers to the process of using measurement data to infer the governing dynamics.\nOnce discovered, these equations can make predictions about future states, can inform control inputs, or can enable the theoretical study using analytical techniques.\nThe resulting models are inherently *interpretable* and *generalizable*.\n\n\nFirst Steps\n------------------\n\nInstallation\n^^^^^^^^^^^^^^\n\nThe preferred way to install is with pip or conda e.g. ``pip install pysindy``.\nYou may have to add the ``--user`` option.\nPysindy also provides several extras, e.g. ``pip install pysindy[miosr]``:\n\ncvxpy\n  Convex optimizer ``SR3`` and subclasses\n\nmiosr\n  Branch-and-bound optimizer for L0-constraint, ``MIOSR``\n\nsbr\n  Bayesian regression optimizer yielding posteriors, ``SBR``.\n\nExample\n^^^^^^^^^^^\nSuppose we have measurements of the position of a particle obeying the following dynamical system at different points in time\n\n.. math::\n\n  x' &= -2 x \\\\\n  y' &= y\n\nNote that this system of differential equations decouples into two differential equations whose solutions are simply\n\n.. math::\n\n  x(t) &= x_0 * exp(-2 * t) \\\\\n  y(t) &= y_0 * exp(t)\n\nThis example uses the initial conditions ``x_0 = 3`` and ``y_0 = 0.5``.\nIt then fits and prints the discovered model\n\n.. code-block:: python\n\n  import numpy as np\n  import pysindy as ps\n\n  t = np.linspace(0, 1, 100)\n  x = 3 * np.exp(-2 * t)\n  y = 0.5 * np.exp(t)\n  X = np.stack((x, y), axis=-1)  # First column is x, second is y\n\n  model = ps.SINDy()\n  model.fit(X, t=t, feature_names=[\"x\", \"y\"])\n  model.print()\n\nwhich correctly results in\n\n.. code-block:: text\n\n  x' = -2.000 x\n  y' = 1.000 y\n\nPySINDy provides numerous other features not shown here. We have a variety of tutorials and examples, starting with\n`generating data and fitting models \u003Cexamples\u002Ftutorial_1\u002Fexample.html>`_.\n\n\nGetting Help\n-------------\n\n* If you have a **question** or find a **bug**, please open an `issue \u003Chttps:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fissues>`_ on github.\n* The **documentation** site for PySINDy can be found `here \u003Chttps:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002F>`__.\n  A video overview of PySINDy can be found on `Youtube \u003Chttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=DvbbXX8Bd90>`__.\n  We have also created a `video playlist \u003Chttps:\u002F\u002Fwww.youtube.com\u002Fplaylist?list=PLN90bHJU-JLoOfEk0KyBs2qLTV7OkMZ25>`__ with practical PySINDy tips.\n* To understand more about the **types of objects** in pysindy, see the `object model \u003Chttps:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002Fobjects>`_.\n* If you want to fix a problem, add a feature, or share an example, check the `**Contributor** Guide \u003Chttps:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002Fcontributing.html>`_.\n* If you are using pysindy in **academic** work, please see `Academic Use \u003Chttps:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002Facademic.html>`_ for recommendations, including **citations**.\n\n\nRelated packages\n----------------\n* `Deeptime \u003Chttps:\u002F\u002Fgithub.com\u002Fdeeptime-ml\u002Fdeeptime>`_ - A Python library for the analysis of time series data with methods for dimension reduction, clustering, and Markov model estimation.\n* `PyDMD \u003Chttps:\u002F\u002Fgithub.com\u002FmathLab\u002FPyDMD\u002F>`_ - A Python package using the Dynamic Mode Decomposition (DMD) for a data-driven model simplification based on spatiotemporal coherent structures. DMD is a great alternative to SINDy.\n* `PySINDyGUI \u003Chttps:\u002F\u002Fgithub.com\u002Fhyumo\u002Fpysindy-gui>`_ - A slick-looking GUI for PySINDy.\n* `SEED \u003Chttps:\u002F\u002Fgithub.com\u002FM-Vause\u002FSEED2.0>`_ - Software for the Extraction of Equations from Data: a GUI for many of the methods provided by PySINDy.\n* `SymINDy \u003Chttps:\u002F\u002Fgithub.com\u002Fandreikitaitsev\u002FSymINDy\u002F>`_ - A Python package combining SINDy with genetic programming-based symbolic regression, used for the functions library optimization.\n* `derivative \u003Chttps:\u002F\u002Fderivative.readthedocs.io\u002Fen\u002Flatest\u002F>`_ - A Python package for differentiating (and optionally, smoothing) data, used by pysindy\n\n\n.. |BuildCI| image:: https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Factions\u002Fworkflows\u002Fmain.yml\u002Fbadge.svg\n    :target: https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Factions\u002Fworkflows\u002Fmain.yml?query=branch%3Amain\n\n.. |RTD| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fpysindy\u002Fbadge\u002F?version=latest\n    :target: https:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n    :alt: Documentation Status\n\n.. |PyPI| image:: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fpysindy.svg\n    :target: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fpysindy\n\n.. |Codecov| image:: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fdynamicslab\u002Fpysindy\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg\n    :target: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fdynamicslab\u002Fpysindy\n\n.. |JOSS1| image:: https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F82d080bbe10ac3ab4bc03fa75f07d644\u002Fstatus.svg\n    :target: https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F82d080bbe10ac3ab4bc03fa75f07d644\n\n.. |JOSS2| image:: https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F10.21105\u002Fjoss.03994\u002Fstatus.svg\n    :target: https:\u002F\u002Fdoi.org\u002F10.21105\u002Fjoss.03994\n\n.. |DOI| image:: https:\u002F\u002Fzenodo.org\u002Fbadge\u002F186055899.svg\n   :target: https:\u002F\u002Fzenodo.org\u002Fbadge\u002Flatestdoi\u002F186055899\n","PySINDy\n=========\n\n|BuildCI| |RTD| |PyPI| |Codecov| |JOSS1| |JOSS2| |DOI|\n\n**PySINDy** 是一个用于系统辨识的软件包，主要围绕 Brunton 等人（2016a）提出的非线性动力系统的稀疏辨识方法（SINDy）展开。它还包含了来自相关文献的其他方法。\n\n*系统辨识* 是指利用测量数据推断系统支配动力学的过程。一旦这些方程被发现，它们就可以用来预测未来的状态、指导控制输入，或者通过解析技术进行理论研究。由此得到的模型本质上是 *可解释的* 和 *可泛化的*。\n\n\n第一步\n------------------\n\n安装\n^^^^^^^^^^^^^^\n\n推荐使用 pip 或 conda 进行安装，例如 ``pip install pysindy``。你可能需要添加 ``--user`` 选项。Pysindy 还提供了多个附加组件，例如 ``pip install pysindy[miosr]``：\n\ncvxpy\n  凸优化器 ``SR3`` 及其子类\n\nmiosr\n  用于 L0 约束的分支定界优化器 ``MIOSR``\n\nsbr\n  贝叶斯回归优化器，可得到后验分布 ``SBR``。\n\n示例\n^^^^^^^^^^^^^\n假设我们有一组粒子在不同时刻的位置测量值，该粒子遵循以下动力系统：\n\n.. math::\n\n  x' &= -2 x \\\\\n  y' &= y\n\n请注意，这个微分方程组可以分解为两个独立的微分方程，其解分别为：\n\n.. math::\n\n  x(t) &= x_0 * exp(-2 * t) \\\\\n  y(t) &= y_0 * exp(t)\n\n本示例使用初始条件 ``x_0 = 3`` 和 ``y_0 = 0.5``。然后拟合并打印出所发现的模型：\n\n.. code-block:: python\n\n  import numpy as np\n  import pysindy as ps\n\n  t = np.linspace(0, 1, 100)\n  x = 3 * np.exp(-2 * t)\n  y = 0.5 * np.exp(t)\n  X = np.stack((x, y), axis=-1)  # 第一列是 x，第二列是 y\n\n  model = ps.SINDy()\n  model.fit(X, t=t, feature_names=[\"x\", \"y\"])\n  model.print()\n\n结果正确地输出：\n\n.. code-block:: text\n\n  x' = -2.000 x\n  y' = 1.000 y\n\nPySINDy 还提供了许多此处未展示的功能。我们有各种教程和示例，从 `生成数据和拟合模型 \u003Cexamples\u002Ftutorial_1\u002Fexample.html>`_ 开始。\n\n\n获取帮助\n-------------\n\n* 如果您有任何 **问题** 或发现了 **bug**，请在 GitHub 上提交一个 `issue \u003Chttps:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fissues>`_。\n* PySINDy 的 **文档** 网站可以在 `这里 \u003Chttps:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002F>`__ 找到。关于 PySINDy 的视频概述可以在 `Youtube \u003Chttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=DvbbXX8Bd90>`__ 上观看。我们还创建了一个包含实用 PySINDy 技巧的 `视频播放列表 \u003Chttps:\u002F\u002Fwww.youtube.com\u002Fplaylist?list=PLN90bHJU-JLoOfEk0KyBs2qLTV7OkMZ25>`__。\n* 若要深入了解 pysindy 中的 **对象类型**，请参阅 `对象模型 \u003Chttps:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002Fobjects>`_。\n* 如果您想修复问题、添加功能或分享示例，请查看 `**贡献者** 指南 \u003Chttps:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002Fcontributing.html>`_。\n* 如果您在 **学术** 工作中使用了 pysindy，请参阅 `学术使用 \u003Chttps:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002Facademic.html>`_，其中包含建议，包括 **引用**。\n\n\n相关软件包\n----------------\n* `Deeptime \u003Chttps:\u002F\u002Fgithub.com\u002Fdeeptime-ml\u002Fdeeptime>`_ - 一个用于时间序列数据分析的 Python 库，提供降维、聚类和马尔可夫模型估计等方法。\n* `PyDMD \u003Chttps:\u002F\u002Fgithub.com\u002FmathLab\u002FPyDMD\u002F>`_ - 一个基于动态模态分解（DMD）的 Python 包，用于基于时空相干结构的数据驱动模型简化。DMD 是 SINDy 的一个很好的替代方案。\n* `PySINDyGUI \u003Chttps:\u002F\u002Fgithub.com\u002Fhyumo\u002Fpysindy-gui>`_ - 一个界面美观的 PySINDy 图形用户界面。\n* `SEED \u003Chttps:\u002F\u002Fgithub.com\u002FM-Vause\u002FSEED2.0>`_ - 数据方程提取软件：一个为 PySINDy 提供的多种方法设计的图形用户界面。\n* `SymINDy \u003Chttps:\u002F\u002Fgithub.com\u002Fandreikitaitsev\u002FSymINDy\u002F>`_ - 一个结合了 SINDy 与基于遗传编程的符号回归的 Python 包，用于函数库的优化。\n* `derivative \u003Chttps:\u002F\u002Fderivative.readthedocs.io\u002Fen\u002Flatest\u002F>`_ - 一个用于对数据进行微分（并可选平滑处理）的 Python 包，被 pysindy 使用。\n\n\n.. |BuildCI| image:: https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Factions\u002Fworkflows\u002Fmain.yml\u002Fbadge.svg\n    :target: https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Factions\u002Fworkflows\u002Fmain.yml?query=branch%3Amain\n\n.. |RTD| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fpysindy\u002Fbadge\u002F?version=latest\n    :target: https:\u002F\u002Fpysindy.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n    :alt: 文档状态\n\n.. |PyPI| image:: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fpysindy.svg\n    :target: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fpysindy\n\n.. |Codecov| image:: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fdynamicslab\u002Fpysindy\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg\n    :target: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fdynamicslab\u002Fpysindy\n\n.. |JOSS1| image:: https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F82d080bbe10ac3ab4bc03fa75f07d644\u002Fstatus.svg\n    :target: https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F82d080bbe10ac3ab4bc03fa75f07d644\n\n.. |JOSS2| image:: https:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F10.21105\u002Fjoss.03994\u002Fstatus.svg\n    :target: https:\u002F\u002Fdoi.org\u002F10.21105\u002Fjoss.03994\n\n.. |DOI| image:: https:\u002F\u002Fzenodo.org\u002Fbadge\u002F186055899.svg\n   :target: https:\u002F\u002Fzenodo.org\u002Fbadge\u002Flatestdoi\u002F186055899","# PySINDy 快速上手指南\n\nPySINDy 是一个用于系统辨识的 Python 包，核心基于稀疏非线性动力学系统识别（SINDy）方法。它能够通过测量数据推断控制动态系统的方程，生成的模型具有可解释性和泛化能力。\n\n## 环境准备\n\n*   **Python 版本**：建议使用 Python 3.7 或更高版本。\n*   **前置依赖**：主要依赖 NumPy 和 SciPy 进行数值计算。\n*   **可选优化器依赖**：根据需求，你可能需要安装额外的优化库：\n    *   `cvxpy`：用于凸优化器 SR3。\n    *   `miosr`：用于 L0 约束的分支定界优化器 MIOSR。\n    *   `sbr`：用于贝叶斯回归优化器 SBR。\n\n## 安装步骤\n\n推荐使用 `pip` 或 `conda` 进行安装。\n\n### 基础安装\n\n```bash\npip install pysindy\n```\n\n如果遇到权限问题，可以添加 `--user` 选项：\n\n```bash\npip install --user pysindy\n```\n\n### 安装额外功能（Extras）\n\n如果你需要使用特定的优化器，可以通过以下命令安装对应扩展：\n\n*   安装 SR3 支持：\n    ```bash\n    pip install pysindy[cvxpy]\n    ```\n*   安装 MIOSR 支持：\n    ```bash\n    pip install pysindy[miosr]\n    ```\n*   安装 SBR 支持：\n    ```bash\n    pip install pysindy[sbr]\n    ```\n\n> **提示**：国内用户若下载速度较慢，可使用清华源或阿里源加速，例如：\n> `pip install pysindy -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n## 基本使用\n\n以下示例演示如何从粒子位置的时间序列数据中恢复其动力学方程。\n\n假设系统遵循以下微分方程：\n$$ x' = -2 x $$\n$$ y' = 1 y $$\n\n其解析解为 $x(t) = x_0 e^{-2t}$ 和 $y(t) = y_0 e^{t}$。我们将使用初始条件 $x_0 = 3$ 和 $y_0 = 0.5$ 生成数据并拟合模型。\n\n```python\nimport numpy as np\nimport pysindy as ps\n\n# 1. 生成模拟数据\nt = np.linspace(0, 1, 100)\nx = 3 * np.exp(-2 * t)\ny = 0.5 * np.exp(t)\nX = np.stack((x, y), axis=-1)  # 第一列为 x，第二列为 y\n\n# 2. 初始化并拟合模型\nmodel = ps.SINDy()\nmodel.fit(X, t=t, feature_names=[\"x\", \"y\"])\n\n# 3. 打印发现的动力学方程\nmodel.print()\n```\n\n**预期输出：**\n\n```text\nx' = -2.000 x\ny' = 1.000 y\n```\n\n模型成功识别出了正确的系数和结构。更多高级用法（如自定义函数库、不同优化器等）请参考官方文档中的教程部分。","某机器人研发团队正在开发一款新型柔性机械臂，需要从高频传感器采集的运动数据中反推其物理动力学方程，以便设计高精度的控制算法。\n\n### 没有 pysindy 时\n- **黑盒模型难解释**：团队通常使用深度学习（如 LSTM）拟合数据，虽然预测精度尚可，但得到的是复杂的神经网络权重，无法转化为具体的物理公式，工程师难以理解系统背后的力学机制。\n- **泛化能力差**：黑盒模型仅在训练数据覆盖的轨迹范围内有效，一旦机械臂执行未见过的新动作或负载发生变化，模型预测误差急剧上升，导致控制失效。\n- **人工推导成本高**：若尝试通过第一性原理手动建立微分方程，需耗费数周时间进行复杂的受力分析和参数辨识，且难以准确捕捉非线性摩擦和柔性形变等细微动态。\n- **调试与控制困难**：由于缺乏显式的数学表达式，无法利用经典的控制理论（如李雅普诺夫稳定性分析）来验证系统稳定性，控制器参数调整只能依靠盲目的试错。\n\n### 使用 pysindy 后\n- **发现显式方程**：pysindy 直接从数据中稀疏识别出简洁的微分方程组（如 $\\ddot{x} = -0.5\\dot{x} - 9.8\\sin(x) + u$），清晰揭示了惯性、阻尼、重力及控制输入之间的关系，模型具有极强的可解释性。\n- **优异的泛化性**：基于物理规律的方程天然具备良好的外推能力，即使在未见过的运动轨迹或不同负载条件下，模型仍能保持高精度预测，显著提升了系统的鲁棒性。\n- **自动化建模流程**：无需人工假设模型结构，只需提供状态变量和时间序列数据，pysindy 即可在几分钟内自动筛选关键项并确定系数，将建模周期从数周缩短至数小时。\n- **赋能先进控制**：获得的解析方程可直接用于模型预测控制（MPC）或反馈线性化设计，工程师能基于严格的数学证明优化控制策略，大幅减少了现场调试时间和安全风险。\n\n核心价值在于 pysindy 将“数据驱动”与“物理可解释性”完美结合，让工程师能从嘈杂数据中直接提取简洁、可信的物理定律，从而加速复杂动态系统的分析与控制开发。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdynamicslab_pysindy_ee1a6295.png","dynamicslab","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fdynamicslab_9f0fe0ac.png","",null,"https:\u002F\u002Fgithub.com\u002Fdynamicslab",[82],{"name":83,"color":84,"percentage":85},"Python","#3572A5",100,1787,372,"2026-04-02T13:43:20","NOASSERTION",1,"未说明",{"notes":93,"python":91,"dependencies":94},"推荐使用 pip 或 conda 安装。支持可选依赖以启用特定优化器：cvxpy（用于 SR3）、miosr（用于 MIOSR）、sbr（用于 SBR）。示例代码显示主要依赖 numpy 进行数据处理。",[95],"numpy",[13],[98,99,100,101,102,103],"dynamical-systems","machine-learning","sparse-regression","model-discovery","system-identification","nonlinear-dynamics","2026-03-27T02:49:30.150509","2026-04-06T09:45:00.645676",[107,112,117,122,126,131],{"id":108,"question_zh":109,"answer_zh":110,"source_url":111},11670,"如何为控制变量（control variables）使用不同的函数库（例如线性控制项）？","旧版本的 \"linear_control\" 选项已被移除。现在可以使用 `GeneralizedLibrary` 类为控制变量构建完全独立的 SINDy 库。\n\n例如，要构建一个包含二次多项式状态项和线性控制输入项的模型，可以按以下方式配置：\n\n1. 初始化两个库：\n   ```python\n   poly_library = ps.PolynomialLibrary() # 用于状态变量的多项式库\n   control_library = ps.PolynomialLibrary(degree=1) # 用于控制变量的线性库\n   ```\n\n2. 配置每个库使用的输入变量（假设共有5个输入变量，前几个是状态，后几个是控制）：\n   ```python\n   # 默认情况下每个库使用所有输入变量，需重新映射\n   inputs_temp = np.tile([0, 1, 2, 3, 4], 2)\n   inputs_per_library = np.reshape(inputs_temp, (2, 5))\n   \n   # 修改配置，使二次库不使用控制变量（例如 u0, u1），或根据实际需求调整\n   # 具体索引需根据你的数据列顺序调整\n   ```\n\n请参考官方示例笔记本 Example 15 获取更完整的代码实现。","https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fissues\u002F118",{"id":113,"question_zh":114,"answer_zh":115,"source_url":116},11671,"如何拟合广义 Lotka-Volterra (GLV) 模型并保证模型的稳定性？","广义 GLV 模型如果不加约束通常是不稳定的。为了保证稳定性，相互作用系数矩阵 alpha_{ij} 需要满足特定条件：\n\n1. **稳定性条件**：矩阵 alpha_{ij} 必须是负定矩阵（negative definite）。一个充分的条件是所有 alpha_{ij} 元素均小于等于 0。\n2. **实现方法**：在 PySINDy 中，可以使用 `ConstrainedSR3` 优化器，并设置 `inequality_constraints=True` 来施加不等式约束。\n3. **注意**：虽然严格的负定性要求所有元素非正，但在实际应用中，如果允许混合的正负值以解释复杂的相互作用，推导全局稳定性的约束会非常复杂。建议先尝试施加简单的不等式约束，或通过积分方程（如使用 `solve_ivp`）后续验证模型行为是否发散。","https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fissues\u002F157",{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},11672,"为什么在使用 PDELibrary 时会出现控制变量形状不匹配的错误？","错误信息 \"control variables u must have same number of rows as x\" 表明控制变量 `u` 的行数与状态变量 `x` 不一致。\n\n在处理时空数据（PDE）时，常见的误区是直接将整个时空网格的数据展平或错误 reshape。请注意：\n1. `u` 的形状必须与 `x` 在时间步长或样本点上严格对应。\n2. 如果你试图使用 `model.simulate` 来模拟偏微分方程（PDE）的未来行为，这通常是不适用的，因为 `simulate` 内部使用的是 ODE 求解器（`solve_ivp`），它期望初始条件 `y0` 是一个状态向量，而不是空间分布场。\n3. PySINDy 不提供 PDE 求解器。你需要使用识别出的 PDE 方程，并结合专门的 PDE 数值解法（如有限差分、谱方法等）来进行仿真。","https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fissues\u002F164",{"id":123,"question_zh":124,"answer_zh":125,"source_url":121},11673,"PySINDy 是否提供偏微分方程（PDE）的求解器用于仿真？","不提供。PySINDy 仅用于从数据中识别微分方程的结构和系数。\n\n由于 PDE 求解器非常复杂且取决于 PDE 的具体类型（例如线性 PDE 可用傅里叶变换，非线性可能需要有限元或有限差分法），PySINDy 不包含通用的 PDE 求解功能。\n\n**建议做法**：\n1. 使用 PySINDy 识别出 PDE 的数学形式。\n2. 根据识别出的方程类型，自行编写或使用现有的专业 PDE 数值求解库（如 FiPy, Dedalus, 或自定义有限差分代码）来进行时间演化仿真。",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},11674,"为什么 SINDy 发现的模型在训练数据上拟合良好，但仿真（simulate）时却输出一条直线？","这种情况通常由以下原因导致：\n\n1. **模型不稳定**：识别出的模型系数可能导致数值不稳定，使得仿真迅速发散或收敛到不动点（表现为直线）。\n2. **导数计算问题**：如果数据噪声较大，数值微分得到的导数不准确，可能导致识别出的动力学项平衡错误（例如识别出 x' = x' 这种恒等式或无效项）。\n3. **初始条件与仿真器不匹配**：确保传入 `model.simulate` 的初始条件 `x0` 形状正确，且时间数组 `t` 覆盖范围合理。\n\n**排查建议**：\n- 检查识别出的方程系数，看是否存在异常大的值。\n- 尝试使用 `ConstrainedSR3` 添加稀疏性或稳定性约束。\n- 验证数值微分步骤，确保使用的差分方法适合你的数据采样率。","https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fissues\u002F285",{"id":132,"question_zh":133,"answer_zh":134,"source_url":116},11675,"如何在 PySINDy 中处理具有负值的轨迹数据以拟合 Lotka-Volterra 模型？","传统的 Lotka-Volterra 模型通常假设变量为非负（如种群数量）。如果轨迹包含负值：\n\n1. **避免对数变换**：不能使用取对数将乘法关系转化为线性关系的技巧，因为负数无法取对数。\n2. **直接拟合**：直接使用 PySINDy 的多项式库进行拟合。GLV 的形式本质上是 $x_i$ 乘以其他变量的线性组合。PySINDy 可以处理负值数据。\n3. **约束稳定性**：由于存在负值，系统的相空间更大，更容易出现不稳定。务必使用 `ConstrainedSR3` 施加适当的约束（如限制系数符号或大小），以防止模型在非训练区域发散。",[136,141,146,151,156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231],{"id":137,"version":138,"summary_zh":139,"released_at":140},62156,"v2.1.0","向后不兼容的变更\n------------------------------\n\nSINDy(discrete=True) 已被新类取代\nSINDy.model 已移除（请直接使用 `feature_library` 和 `optimizer` 属性）\n\n功能改进\n------------\n\n将 DiscreteSINDy 单独拆分为一个新类\n\n错误修复\n--------------\n\n修复：对 `TensorLibrary` 进行张量化时，先展平库函数\n修复：支持 scikit-learn >=1.8（https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F670）\n\n开发者说明\n-------------------\n\nCI\u002FBLD：将最低 Python 版本提升至 3.10，因为 3.9 已停止维护（https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F643）\n文档进行了大规模更新\nCI：添加 ASV 检测以防止回归（https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F664）\nASV 基准测试网站：https:\u002F\u002Fdynamicslab.github.io\u002Fpysindy\u002F\n  （仍在开发中）\n特性：移除 SINDy.model 中的 `Pipeline` 对象（https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F668）\n\n查看所有变更记录，请运行 `git log v2.0.0..v2.1.0`","2026-01-08T18:15:08",{"id":142,"version":143,"summary_zh":144,"released_at":145},62157,"v2.0.0","距离上一次发布 pysindy 已经近三年了。当时存在各种类型注解问题或与 scikit-learn 的兼容性问题，为了解决这些问题，不得不打破向后兼容性。此外，许多文档无法进行测试，这意味着每当引入不兼容的更改时，文档往往会被破坏。\n\n在此期间，唯一的解决方案就是使用主分支，并及时同步仓库中的最新改动。然而，现在我们已经有一个专门的地方来归档旧的示例笔记本，并且完成了足够多必要的不兼容性改进。因此，我们可以维护 2.x 分支，同时继续完善文档。\n\n简而言之：新增了几种优化器、特征库和微分方法的改进，pysindy 模型的调用签名更小，约束条件也更加简单。\n\n## 变更内容\n* 基于 PyProject 的构建系统，采用 Setuptools，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F332\n* 在微分方法中保存平滑后的值，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F244\n* 简化输入参数，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F362\n* 隐式支持多条轨迹，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F376\n* 将 `unbias` 参数从 `SINDy.fit()` 移至 `BaseOptimizer`，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F380\n* 修复了 `sparse_indices` 下的 `coef_` 错误，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F385\n* 清理：移除优化器中的 `fit_intercept` 参数，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F388\n* 允许 STLSQ 仅对部分索引进行稀疏化或正则化，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F408\n* 新特性（优化器）：启用 MIOSR 优化器的序列化功能，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F458\n* 使 AxesArray 正确处理切片操作，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F451\n* 贝叶斯 SINDy 方法，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F440\n* 将 TrappingSR3 改为 ConstrainedSR3 的子类，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F435\n* 在 SINDyDerivative 中实现多维数组的微分，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F476\n* 修复 #414 问题：移除用户警告的抑制机制，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F528\n* 清理（PDE 库）：移除未使用的构造函数参数，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F537\n* 增强功能（#455）：将 IdentityLibrary 改为 Polynomial Library 的子类，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F533\n* 拓展捕获机制，分别应用于（a）涡度通量和（b）局部捕获，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F536\n* 增强功能（#448）：添加打印刷新功能，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F527\n* CI：增加原始构建和导入步骤（应会失败），详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F543\n* 修复 #394 问题：修正近端算子和正则化项，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F544\n* 增强功能（SR3）：重构阈值及阈值属性，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F548\n* 修复 SSR 问题，详见 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F559\n* 将 `SINDy` 中的公共功能提取到 `_BaseSINDy` 中。","2025-08-22T04:23:59",{"id":147,"version":148,"summary_zh":149,"released_at":150},62158,"v2.0.0-rc3","现代 NumPy\n\n此版本候选包含多项改进，旨在优化 pysindy 的依赖管理，其中最显著的是对 NumPy 2.0 的兼容性支持。此外，还有一项在数学上颇具意义的更改——默认采样方式的调整，请参阅 #618。\n\n这些版本候选的目标是让与 SINDy 相关的项目能够指定一个范围内的 pysindy 依赖版本，而无需固定指向 GitHub 的直接 URL。\n\n## 新贡献者\n* @s-kat0 在 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F618 中完成了他们的首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fcompare\u002Fv2.0.0-rc2...v2.0.0-rc3","2025-07-28T17:29:04",{"id":152,"version":153,"summary_zh":154,"released_at":155},62159,"v2.0.0-rc2","MIOSR、SBR 和捕获扩展\n\n此版本候选包含自几年前 v2.0.0-rc1 发布以来的多项更新。它新增了三个优化器，并大幅简化了 pysindy.SINDy 的 API。\n\n从现在到 v2.0.0 正式发布之前，功能方面预计不会有任何变化。该 RC 版本仅用于过渡，直至文档更新为当前 API 接口为止。\n\n","2025-04-14T21:56:16",{"id":157,"version":158,"summary_zh":159,"released_at":160},62160,"v1.7.5","## 变更内容\n* 我们认为现在确实修复了示例笔记本的文档构建问题，因此它们应该都能在 Read the Docs 文档站点上正确渲染。\n* 修正了 SCS 的版本要求，以避免在使用某些 Python 版本时运行 TrappingSR3 出现错误。\n* 将 CI 配置切换为测试较新的 Python 版本：3.8、3.9 和 3.10。","2023-04-07T15:11:51",{"id":162,"version":163,"summary_zh":164,"released_at":165},62161,"v1.7.4","## 变更内容\n* 修复了示例笔记本的文档构建问题，确保它们在 Read the Docs 文档站点上都能正确渲染。","2023-04-05T16:01:20",{"id":167,"version":168,"summary_zh":169,"released_at":170},62162,"v1.7.3","## 变更内容\n* 新增了由 @znicolaou 在 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F273 中引入的 ParameterizedLibrary，该功能基于近期发表的论文 https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.02673。带有控制参数的 SINDy（SINDyCP）在[示例](https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fblob\u002Fmaster\u002Fexamples\u002F17_parameterized_pattern_formation\u002Fparameterized_pattern_formation.ipynb)中进行了进一步说明。\n* 新增了由 @OliviaZ0826、@akaptano 和 @znicolaou 在 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F266 中实现的大规模基准测试功能，该功能基于近期发表的论文 https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.10787。大规模基准测试使用 [dysts](https:\u002F\u002Fgithub.com\u002Fwilliamgilpin\u002Fdysts) 数据库进行演示，相关结果和功能也可在[示例](https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Ftree\u002Fmaster\u002Fexamples\u002F16_noise_robustness)中找到。\n* 新增了由 @akaptano 在 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F269 中引入的 StableLinearSR3 优化器，该优化器允许用户构建任意规模的线性模型，并保证对于任何初始条件都具有稳定性。此外，还支持对系数施加任意数量的线性等式和不等式约束。\n* 修复了 Gurobipy 版本、requirements-dev.txt 中开发工具的 Sphinx 配置，以及 flake8 网站从 GitLab 迁移到 GitHub 的几个小 bug。","2023-02-25T20:46:43",{"id":172,"version":173,"summary_zh":174,"released_at":175},62163,"v1.7.2","有哪些变化\n\n新增了一种名为 MIOSR 的混合整数优化算法。\n新增了针对所有 Jupyter Notebook 示例的外部单元测试。\n将 Gurobipy 和 cvxpy 改为可选依赖。使用 MIOSR 时需要 Gurobipy，而使用不等式约束优化器、陷阱式 SINDy 算法或 SINDy-PI 算法时则需要 cvxpy。\n集成功能已移至“EnsembleOptimizer”，相关更新请参阅示例 1 笔记本。","2022-10-12T00:41:56",{"id":177,"version":178,"summary_zh":179,"released_at":180},62164,"1.7.1","应修复与 scikit-learn >= 1.0 的兼容性错误\n\n## 变更内容\n* 在 .gitignore 中添加常见的虚拟环境目录，由 @Jacob-Stevens-Haas 在 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F177 中完成\n* 增强：当 FROLS 具有线性相关的列时，抛出明确的错误。由 @Jacob-Stevens-Haas 在 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F193 中完成\n* 修复：SINDyDerivative 的 set_params() 方法遗漏了 scikit-learn 的接口。由 @Jacob-Stevens-Haas 在 https:\u002F\u002Fgithub.com\u002Fdynamicslab\u002Fpysindy\u002Fpull\u002F207 中完成","2022-07-26T17:55:22",{"id":182,"version":183,"summary_zh":184,"released_at":185},62165,"v2.0.0-rc1","这是 SINDY 主要版本 2 的预发布版。\n\n该预发布版保留了大量将在 2.0.0 版中移除的向后兼容性。\n\n通过 `AxesArray` 类，显式定义了内部数组结构。`AxesArray` 对象携带轴标签属性，例如 `arr.ax_time`，以及形状属性，例如 `arr.n_spatial`。目前，在进行切片操作时，这些属性会出错，但在几乎所有其他操作中仍能保持正确。\n\n此版本还新增了一个 `EnsemblingOptimizer` 类，用于处理数据和库的自助采样集成。尽管仍然支持通过特征库和 `SINDy` 对象传递集成参数，但这些参数现在会直接转发给 `EnsemblingOptimizer`。2.x 的稳定版本将移除这种向后兼容性，强制使用 `EnsemblingOptimizer`。此外，当前的数据与库项集成方式是为每个集成成员从一个数据袋和一个库袋中生成；而在之前，每个集成成员是由一个库袋和另一个由多个数据袋组成的集合生成的，这需要嵌套循环，导致运行时间为 $O(n_{bags}^2)$。\n\n可能在 2.0.0 版本之前修复的问题：\n- 允许直接将 `AxesArray` 对象传递给 pysindy；\n- 为 `AxesArray` 添加 `__getitem__` 和 `__setitem__` 方法，以正确处理切片操作，并在尝试创建包含缺失或不兼容轴标签的 `AxesArray` 时重新启用 `AxesWarning`；\n- 修复示例文档的 Binder 链接。\n\n2.0.0 版本中可能进一步引入的变更：\n- 新的 SINDyPI 方法？\n- 导数计算方法现在也将返回平滑后的 X 值。","2022-07-13T21:57:05",{"id":187,"version":188,"summary_zh":189,"released_at":190},62166,"v1.7","We have implemented new techniques for computing the weak formulation of SINDy, reducing the runtime by at least an order of magnitude. The \"num_pts_per_domain\" option in the weak formulation is now deprecated, and see the revamped Example 12 notebook for the new performance. This release also addresses Issues #155 #158 #159 #164. We have some minor fixes planned for the future, and hope to have a version of model.predict and model.simulate working for the weak formulation in the coming few months. \r\n","2022-04-30T20:20:58",{"id":192,"version":193,"summary_zh":194,"released_at":195},62167,"v1.6.3","The GeneralizedLibrary class had a bug if libraries were tensored together while using the ensembling functionality. This small patch fixes that issue. ","2022-01-28T15:21:05",{"id":197,"version":198,"summary_zh":199,"released_at":200},62168,"v1.6.2","This is PySINDy's second major release, representing new source code, documentation-generating scripts, examples, unit tests, and a markdown version of the new PySINDy JOSS submission [openjournals\u002Fjoss-reviews#3994](https:\u002F\u002Fgithub.com\u002Fopenjournals\u002Fjoss-reviews\u002Fissues\u002F3994). There is already a DOI via Zenodo, [![DOI](https:\u002F\u002Fzenodo.org\u002Fbadge\u002FDOI\u002F10.5281\u002Fzenodo.5842612.svg)](https:\u002F\u002Fdoi.org\u002F10.5281\u002Fzenodo.5842612).","2022-01-27T16:46:13",{"id":202,"version":203,"summary_zh":204,"released_at":205},62169,"v1.6.1","This minor release adds a verbose option to all the optimizers so users can optionally track the error terms in the various optimization problems. See example Jupyter notebook 1 for a simple use case. It also makes some minor fixes, including:\r\n\r\n1. Fixed a minor test error (see Issue #149)\r\n2. Fixed an issue when using multiple_trajectories or ensemble flags with PDEs and Weak PDEs, see Issue #148 \r\n3. Added Matplotlib to the dependencies so that (hopefully) the binder notebooks are now working properly online.\r\n4. Fixed some math notation in the optimizer documentations. ","2022-01-12T23:34:04",{"id":207,"version":208,"summary_zh":209,"released_at":210},62170,"v1.6","This release allows for differentiation along specific axes, revamps the PDE-FIND and weak SINDy functionalities to work in arbitrary spatial dimensions, and moves all the array-reshaping to the internal code so the user-interface is easier. Finite difference coefficients are now computed on the fly depending on the derivative order \"d\" and accuracy order \"order\", i.e. finite differences now work for arbitrarily high derivative and accuracy order.\r\n\r\n### References\r\n- See [this Youtube playlist](https:\u002F\u002Fwww.youtube.com\u002Fplaylist?list=PLN90bHJU-JLoOfEk0KyBs2qLTV7OkMZ25) for tips on using pysindy in practice and examples of new functionality.\r\n\r\n### Other updates\r\n- Added a SpectralDerivative() class for spectral differentiation at faster speed than is available with the \"derivative\" python package. \r\n- Finite Differences now have periodic boundary condition support.\r\n- Cleaned up the example notebooks a bit. ","2022-01-06T05:54:31",{"id":212,"version":213,"summary_zh":214,"released_at":215},62171,"v1.5.1","This release fixes a minor bug in the README file which prevented the previous release from being properly deployed to PyPI.","2021-12-05T19:38:12",{"id":217,"version":218,"summary_zh":219,"released_at":220},62172,"v1.5","This release introduces a wide range of new and advanced functionality for PySINDy users, which enables the identification of implicit differential equations (SINDy-PI), partial differential equations (PDE-FIND), and weak-formulation differential equations for both ODEs and PDEs. Several new sparse regression optimizers are added, system identification with inequality constraints is now implemented, and ensembling methods are available with all the optimizers, significantly improving performance on noisy data. We include several new Jupyter notebook examples where these advanced features are explained and used for system identification, and additionally revamp a number of existing example notebooks.\r\n\r\n### References\r\n- Please see [this paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2111.08481) for an overview of all the new tools available in this new release. \r\n- See [this Youtube playlist](https:\u002F\u002Fwww.youtube.com\u002Fplaylist?list=PLN90bHJU-JLoOfEk0KyBs2qLTV7OkMZ25) for tips on using pysindy in practice and examples of new functionality.\r\n\r\n### Other updates\r\n- Added a `TensoredLibrary` class which allows one to combine two feature libraries together by taking all possible pairs of terms and use multiplication syntax like `PolynomialLibrary() * FourierLibrary()`.\r\n- Additionally, we implement a `GeneralizedLibrary` class for concatenating and tensoring N different feature libraries together. Also allows each of the feature libraries to only use a subset of the input variables, and users can specify which of the libraries to tensor product together, for maximum flexibility (see Issue #134).\r\n- All optimizers now have the `normalize_columns` parameter, which normalizes each column of the feature library to magnitude 1 before performing the optimization. This often helps on systems with a wide range of scales. \r\n- The scikit-learn bug mentioned in Issues #124, #129, #130, and #131 is now fixed, so users can use PySINDy with scikit-learn versions >= 1.0.\r\n- The `normalize` option previously provided by our optimizers is deprecated. Please use the `normalize_columns` argument instead.\r\n- A large number of common ODEs have been added to the utils\u002Fodes.py file for reuse, and we would be happy if users would like to add additional systems. \r\n- PySINDy has switched default ODE solvers from `odeint` to `solve_ivp`. Note that `solve_ivp` defaults to the RK45 numerical solver. To reproduce old examples that used `odeint`, use `solve_ivp` with the following argument: method='LSODA', `atol` and `rtol` below 1e-12. This is the default behavior when calling `SINDy.simulate`.","2021-12-05T19:29:32",{"id":222,"version":223,"summary_zh":224,"released_at":225},62173,"v1.4.3","This release simply moves `cvxpy` from an optional dependency to a required one. This package is needed to use the `TrappingSR3` optimizer.","2021-07-08T02:34:39",{"id":227,"version":228,"summary_zh":229,"released_at":230},62174,"v1.4.2","This version removes auxiliary data files needed only for examples to make PySINDy small enough to deploy on PyPI.","2021-06-08T02:04:06",{"id":232,"version":233,"summary_zh":214,"released_at":234},62175,"v1.4.1","2021-06-07T14:33:03"]