问题标签 [rational-number]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3585 浏览

c++ - 如何使用 C++ 中的类编写有理分数

我必须实现Rational类才能获得有理分数。该header.h文件由我的导师提供,因此我必须跟进。我还必须在函数中编写复制构造Rational::Rational(const Rational& cRational)函数,以便object可以复制。我已经编写了我的代码,但是在输出中添加分数是错误的。有人可以帮我解决这个问题吗?我的编码有什么问题,Rational::addition(const Rational &a)或者我该如何解决?

输出 :

主功能:

头文件:

我的程序:

0 投票
1 回答
137 浏览

octave - GNU/Octave 中的有理数比较与数值精度无关

Octave 解释器将此表达式计算为假:

原因

这可以通过rat(or rats) 函数或强制转换值来避免,但生成的表达式缺少初始表达式的清晰格式:

当使用 Octave 教孩子算术时,数学表达式的“脏”翻译是没有用的。

是否可以进行任何全局调整来评估为true原始表达式?

0 投票
1 回答
2107 浏览

c++ - 浮点数的精确值作为有理数

我正在寻找一种将浮点数的精确值转换为两个整数的有理商的方法,即a / bb大于指定的最大分母b_max。如果满足条件b <= b_max是不可能的,那么结果会退回到仍然满足条件的最佳近似值。

坚持,稍等。这里有很多关于截断实数的最佳有理逼近的问题/答案,该实数表示为浮点数。但是我对浮点数的确切值感兴趣,它本身就是一个具有不同表示的有理数。更具体地说,浮点数的数学集合是有理数的子集。在 IEEE 754 二进制浮点标准的情况下,它是二元有理数的子集。无论如何,任何浮点数都可以转换为两个有限精度整数的有理商,如.a / b

因此,例如假设 IEEE 754 单精度二进制浮点格式,有理等价的float f = 1.0f / 3.0f不是1 / 3,而是11184811 / 33554432。这是 的精确f,它是来自 IEEE 754 单精度二进制浮点数的数学集合中的一个数字。

根据我的经验,遍历(通过二进制搜索)Stern-Brocot 树在这里没有用,因为当浮点数被解释为截断实数而不是精确值时,它更适合近似浮点数的值理性

可能,连分数是要走的路。

这里的另一个问题是整数溢出。想想我们想要将有理数表示为两个的商int32_t,其中最大分母b_max = INT32_MAX。我们不能依赖像b > b_max. 所以算法一定不能溢出,或者它必须检测溢出。

到目前为止,我发现的是Rosetta Code 中的一种算法,它基于连分数,但它的来源提到它“还不够完整”。一些基本测试给出了很好的结果,但我无法确认它的整体正确性,我认为它很容易溢出。

0 投票
1 回答
167 浏览

sympy - 使用 Sympy 对某个数域上的单变量多项式进行因式分解

我正在使用 Sympy 在一些扩展字段上分解多元多项式。

如果我可以将单变量多项式分解为实数,我想我会有一个工作代码。对于我的代码,这使我不得不在“QQ”上分解单变量多项式,如果需要,在某个数字字段上分解。

我现在的方法是在“QQ”上定义这些单变量多项式,然后查看根并确定每个根是否为真。如果它是真实的,我会在“QQ”中添加所需的术语,然后让 Sympy 考虑因素。这意味着我尝试自动化以下步骤:

  1. f=Poly((x^2-3)*(x^2-5),x,domain='QQ')
  2. 解决(f,x)
  3. (给出 [-sqrt(3),sqrt(3),-sqrt(5),sqrt(5)])
  4. f.factor(f,extension=[sqrt(3),sqrt(5)])

(..或其他方式,但我认为具有类似的步骤和运行时间)

这当然有很长的运行时间,因为您需要两次计算因子。还有很多我需要考虑的例外情况。

长话短说:有没有办法让 Sympy 将多项式分解为 'QQ' 并允许它在需要时进行一些扩展?

有没有像 f.factor(numberfield=True) 这样的东西?

先感谢您!!

0 投票
1 回答
461 浏览

python - 在 Python 中解决有理数线性规划问题

我有一个带有整数约束的 LP,我想使用 Python 以精确的算术求解。其实我只需要一个可行的点。

编辑:这里的“精确算术”是指无界枚举数和分母的有理数。

以前的尝试:

  • 找到线性程序提到 qsoptex 的确切解决方案,但是当我尝试导入它时,我得到了ImportError: libqsopt_ex.so.2: cannot open shared object file: No such file or directory,尽管据我所知,我给出了该库的路径。
  • SoPlex 在控制台上工作,但我找不到 Python 接口。
  • PySCIPOpt ( https://github.com/SCIP-Interfaces/PySCIPOpt ) 是 SCIP 的 Python 接口,包括 SoPlex,但我不知道如何调用特定的求解器(带有特定选项)。
  • cdd(https://pycddlib.readthedocs.io/en/latest/linprog.html)做了一些事情,称之为LP,但我不知道他们实际解决了哪个问题。

速度只是一个中等问题。我的较大实例有大约 500 个带有框约束和 40 个等式的变量,但所涉及的数字可能很大。

0 投票
1 回答
51 浏览

python - 如何将有理数或无理数输入 argparse?

如何使用 argparse 通过终端将 3/2 等有理数输入到我的 python 脚本中?当我想使用 argparse 输入 pi 或任何其他无理数(如 sqrt(2))时,我遇到了同样的问题。

问候,哈迪

0 投票
1 回答
88 浏览

coq - 如何使 Coq 中的代数操作更容易?

我正在尝试使用 Coq 的整数和有理数标准库。到目前为止,我的证明非常耗时,而且看起来很糟糕。我想我错过了一些重要的证明技术。如此简单的引理不应该这么长时间来证明。有什么提示吗?

这是一个例子:

0 投票
1 回答
84 浏览

algorithm - 带误差控制的有理指数根的有理逼近

我正在寻找一种算法,可以有效地计算b^e哪里be是有理数,确保近似误差不会超过给定err(也是有理数)。明确地说,我正在寻找一个功能:

这将维护法律|exp(b, e, err) - b^e| < err

有理数表示为成对的大整数。让我们假设已经定义了所有保持理性的操作,如加法、乘法等。

我找到了几种方法,但它们并没有让我足够清楚地控制错误。在这个问题中,我不关心整数溢出。实现这一目标的最佳方法是什么?

0 投票
2 回答
77 浏览

exp - Pari/GP 中的二进制拆分

在尝试在没有 FPU 的情况下实现正弦函数时,我意识到所有输入都已经是理性的,因此我决定尝试一种全理性的方法。可能更慢但是:为什么不呢?该系列是线性收敛的,因此有机会通过二进制拆分进行运行时优化。甚至还有关于如何做到这一点以及我使用的非常详细的文献。

到目前为止,一切都很好。

我的数值算法原型工具是 Pari/GP,所以我将上面提到的论文中的代码移植到了 Pari/GP 中,正如您可能已经从我在这里发布问题的事实中猜到的那样,它不起作用。好吧,它确实有效,但无法将错误最小化。该论文还有其他几种不同功能的配方,但都表现出相同的行为。假设论文中有错字,我检查了作者在CLN中的实现。高度优化,但基于论文中的代码,甚至是逐字记录。

为了获得 MWE,我使用了他们的配方exp(p/q)(除了阶乘之外最简单的配方)并简化了 Pari/GP 代码。

(最后一个可能需要更长的时间,如果你想运行它可以跳过它。)

如您所见,经过几十个步骤后,无法进一步减少错误。

所以这要么是我对算法如何工作或 Pari/GP 如何工作的误解。它是哪一个,为什么?

0 投票
0 回答
427 浏览

vb.net - 为有理位的属性项写入 Exif 元数据 (rational64u)

我正在尝试修改/写入合理的属性项。一个合理的 Exif 属性是 Exposure Time:

在此处输入图像描述

来自 EXIF 标签的信息:0x829a、ExposureTime、rational64u、ExifIFD

然而,我遇到了障碍,不知道如何继续。我设法从图像中读取了曝光时间。不幸的是,我在理解如何更改和设置值时遇到了一些问题。

读取曝光时间的代码:

到目前为止我编写曝光时间的代码:

对我的“混乱”的任何帮助将不胜感激!