跳转到主要内容

线性化和求解方程组的高层工具

项目描述

linsolve

Run Tests Code Coverage

linsolve是一个模块,提供线性化和求解方程组的高层工具。

概述

linsolve中的求解器包括LinearSolverLogProductSolverLinProductSolverLinearSolver解决形式为'a*x + b*y + c*z'的线性方程。 LogProductSolver使用对数将形式为'x*y*z'的方程线性化。 LinProductSolver使用符号泰勒展开将形式为'x*y + y*z'的方程线性化。

请参阅linsolve_example.ipynb了解如何使用这些功能。


以下我们给出了LinearSolver的一般用法示例。

假设我们有一个线性方程组,其中数据向量 y 包含测量值,模型向量 b 包含我们想要求解的参数。让我们简化问题,将其视为拟合三个数据点的直线,这相当于求解斜率和偏移量。在这种情况下,我们的线性方程组可以写成:

其中 b_1 是斜率,b_2 是偏移量,A 矩阵包含从模型向量 b 到数据向量 y 的映射。在我们的例子中,a_x1 值是数据点的 x 值,而 a_x2 值等于 1。让我们假设数据向量的测量值是 y_1 = 2y_2 = 4y_3 = 7,它们对应的因变量值是 a_11 = 0a_21 = 2a_31 = 4

我们将使用 LinearSolver 以以下方式求解这个方程组。首先,我们设置一个数据字典,该字典包含线性模型方程右侧的字符串键,以及作为值的 y 数据测量值。

data = {'b_2': 2.0, '2.0*b_1 + b_2': 4.0, '4*b_1 + b_2': 7.0}

或者,我们可以更普遍地编写数据字典,同时编写我们不希望求解的常量字典(即 A 矩阵的值)。

data = {'a_11*b_1 + a_12*b_2': 2.0, 'a_21*b_1 + a_22*b_2': 4.0, 'a_31*b_1 + a_32*b_2': 7.0}
consts = {'a_11': 0.0, 'a_21': 2.0, 'a_31': 4.0, 'a_12': 1.0, 'a_22': 1.0, 'a_32': 1.0}

然后我们将此输入到 linsolve.LinearSolver 中(可选地通过关键字参数传递 consts 字典)。

ls = linsolve.LinearSolver(data) # or linsolve.LinearSolver(data, **consts) if we use constants
solution = ls.solve()

输出 solution 是一个包含模型向量解的字典。

{'b_1': 1.2499999999999998, 'b_2': 1.8333333333333324}

可以通过一个与数据构造平行的可选 wgts 字典来实现测量值的加权。要查看更深入的示例,请参阅 linsolve_example.ipynb 教程。


包详细信息

已知问题和计划改进

有关详细信息,请参阅 问题日志

社区指南

对该包的贡献,以添加新文件格式或解决 问题日志 中的任何问题,非常欢迎。请在验证现有测试通过以及任何新代码都经过良好的单元测试覆盖后,将改进作为对存储库的拉取请求提交。

欢迎提交错误报告或功能请求,请在验证该问题不存在后将其添加到问题日志中。对现有问题的评论也欢迎。

安装

首选的安装方法是 pip install .(或 pip install git+https://github.com/HERA-Team/linsolve)。这将安装所有依赖项。有关依赖项的手动管理,请参阅下文。

依赖项

如果您使用 conda 并希望确保依赖项通过 conda 而不是 pip 安装,您应执行:

$ conda install "numpy>=1.14" scipy

开发

如果您正在开发 linsolve,建议通过以下方式创建一个新环境:

$ git clone https://github.com/HERA-Team/linsolve.git
$ cd linsolve
$ conda create -n linsolve python=3
$ conda activate linsolve
$ conda env update -n linsolve -f environment.yml
$ pip install -e .

这将安装测试/开发所需的额外依赖项以及标准依赖项。

要运行测试,只需在顶层目录中运行 nosetests

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

linsolve-1.1.5.tar.gz (106.8 kB 查看哈希值

上传

构建分布

linsolve-1.1.5-py3-none-any.whl (17.7 kB 查看哈希)

上传时间 Python 3

支持者