gpt4 book ai didi

python - numpy中分数的线性系统解决方案

转载 作者:行者123 更新时间:2023-12-04 21:11:34 26 4
gpt4 key购买 nike

我有矩阵 A和右侧向量 yfractions.Fraction 表示对象:

import random, fractions, numpy as np

A = np.zeros((3, 3), dtype=fractions.Fraction)
y = np.zeros((3, 1), dtype=fractions.Fraction)
for i in range(3):
for j in range(3):
A[i, j] = fractions.Fraction(np.random.randint(0, 4), np.random.randint(1, 6))
y[i] = fractions.Fraction(np.random.randint(0, 4), np.random.randint(1, 6))

我要解决系统 A*x = y使用 numpy 中提供的函数并得到以分数对象表示的结果,但不幸的是基本 x = np.linalg.solve(A, y)以标准浮点值形式返回结果:
>>> np.linalg.solve(A, y)

array([[-1.5245283 ],
[ 2.36603774],
[ 0.56352201]])

有没有办法获得分数对象的确切结果?

编辑

我想要做的对于 numpy 的内置功能是不可行的(从 1.10 版开始 - 请参阅 Mad Physicist 的回答)。人们可以做的是实现他/她自己的基于高斯消元的线性求解器,它依赖于求和、减法、乘法和除法,所有这些都是明确定义的,并且与分数对象完全一致(只要分子和分母适合在数据类型中,我认为它是任意长的)。

如果您真的对此感兴趣,只需自己实现一个求解器,这将很容易且快速地完成(遵循许多在线教程之一)。我不是很感兴趣,所以我会坚持浮点结果。

最佳答案

根据 this thread,似乎不可能使用纯 numpy 来反转有理数矩阵。在 python 邮件列表上。 The response建议您可以将 sympy 用于最大为 4x4 的有理数矩阵。如果您出于某种原因与 numpy 相关联,则可以考虑“手动”获取和使用 3x3 矩阵的逆矩阵。有关如何执行此操作的分步教程可以在 http://www.mathsisfun.com/algebra/matrix-inverse-minors-cofactors-adjugate.html 上找到。 ,以及大量关于矩阵求逆的其他教程。

关于python - numpy中分数的线性系统解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33437023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com