线性化和求解方程组的高层工具
项目描述
linsolve
linsolve
是一个模块,提供线性化和求解方程组的高层工具。
概述
linsolve
中的求解器包括LinearSolver
、LogProductSolver
和LinProductSolver
。 LinearSolver
解决形式为'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 = 2
,y_2 = 4
和 y_3 = 7
,它们对应的因变量值是 a_11 = 0
,a_21 = 2
和 a_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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7bf469201b81721a3822862c34228cc2cfd8bcf37d446dc3ade15a16b6976b3f |
|
MD5 | 238fa555bb450fa963c4a12f942a3ac7 |
|
BLAKE2b-256 | e432c3e5ec80c321a5e26966b35d0cefdcbfe0426b85221d3bea31bfb7f13fac |
linsolve-1.1.5-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3ff3530849ca4dec5e7a6a3e83ac01ec98a3fc0976137645072147b6bfce5a00 |
|
MD5 | 0e21814d5ac38d79161fc50a4cf656aa |
|
BLAKE2b-256 | 609cacc4e2a150fd4d1714a0ce70fc024dcaff6d3a4314dd7830a6253970cd63 |