问题标签 [pari-gp]
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.
pari - 如何返回集合的大小
我在 Pari gp 中有一个代码,它搜索(a(x),b(x))
给定值的对,x
使它们成为素数。如何返回使两者都为素数的 ia(x)
的b(x)
总数
reverse - 如何反转 PARI/GP 中整数的数字?
作为我正在做的一个小型项目的一部分,我需要一种方法来反转 PARI/GP 中整数的数字(该项目主要是回文数和数字总和)。
我试图以代码形式实现的是fun(13453)
给予35431
.
例如,我尝试执行以下操作:
Vecrev(digits(13453))
给出,[3,5,4,3,1]
但我不知道如何连接此列表中的每个连续元素。我不认为有一个预设功能,如
rev
,reverse
, 或未digitrev
在 PARI/GP 中定义。
有人可以告诉我如何做到这一点吗?最好不要使用循环,因为我希望将一个简单的函数放入if
语句或for
循环中。
pari - 如何确定哪些数字在某个范围内
我目前有一个数字列表,我想知道这些数字中有哪些在一定范围内,以及它们在列表中的位置。
我对帕里相当陌生,所以我不确定该怎么做。
对于我正在做的一个简单的例子:
找出 0.05 和 0.15 范围内的数字 1 到 20 的倒数
我已经建立了一个这样的列表:
从这里开始,我想要一个所有 i 的列表,以便 A[i] 在该范围内。
但我不确定如何从这里开始。我尝试了一些简单的 if/for 语句,但这些都不起作用。
我将如何尝试去做这样的事情?
file-writing - 将输出写入 Gp Pari 中的文件
我在 Gp Pari 上运行了相当长的计算,而 Pari 在计算过程中崩溃了,实际上浪费了一周的计算时间。在我再次运行程序之前,我想找到一种在计算输出时将输出写入文件的方法,这样如果再次发生这种情况,我将能够从程序停止的地方开始,而不是需要启动超过。
话虽如此,我这辈子都无法让 Pari 的读取功能正常工作。代码的每一个变体
for(i=1,10, write("C:\Users\Jonathan Hales\Desktop\pari_data.txt",i))
只是给了我错误
“写入:打开输出文件时出错:‘UsersJonathan HalesDesktoppari_data.txt’。”
但是我可以使用元命令
\w"C:\Users\Jonathan Hales\Desktop\pari_data.txt"
这会将 pari 的最后一个输出打印到文档中。但是,我不能在 for 循环中间使用元命令,这首先违背了将其写入文档的目的。
polynomials - 从多项式中去除循环因子 - Pari
我想取一些多项式 f 并删除它的所有分圆因子,然后查看生成的多项式(比如 g)。我知道polcyclofactors
并且我尝试过的当前代码是:
我遇到的问题是polcyclofactors
没有考虑到分圆因素的多样性。例如:
但
有什么方法可以很好地包含 f 的多个分圆因子来除以?还是我必须考虑分解 f 并尝试以这种方式去除分圆因子?
pari - 如何从 G(z) 获得幂级数 G(z^2)
我认为这是一个简单的问题,但我找不到正确的方法。
substpol
几乎可以按我的需要工作,但多项式次数加倍。
例如,使用:
G(z)=1+2*z+3*z^2+O(z^5)
我有:
但我想将结果保留在 O(z^5) 中:
equation-solving - PARI/GP 范围内函数的零点
我试图在 [0,1] 范围内找到函数的零点。我的函数通常看起来像这样:
到目前为止,我尝试过的天真的方法是将函数的非常粗略的图绘制到 Pari,plot(t=0,1,F(t))
中,然后从那里“猜测”一个小范围 [a1,a2] 第一个零的位置。然后我一直在使用solve(t=a1,a2,F(t))
找到那个零。然后找到第二个小范围 [a2,a3],并重复,直到我找到所有零。
显然不是一个好方法,但它完成了工作,到目前为止我看过的许多例子只有几个零。但是,我现在正在查看的示例(例如我在上面定义的 F(t))有更多的零,所以我正在寻找一种更快的方法。
我知道solvestep
,但我尝试过使用它,但它永远不会返回任何解决方案。我猜这种类型的函数并不适合它使用的拆分方法(或者可能我用错了..)。
有没有什么好方法可以让我在 [0,1] 中返回这个函数的零,而不必经历这个漫长而幼稚的方法?
exp - Pari/GP 中的二进制拆分
在尝试在没有 FPU 的情况下实现正弦函数时,我意识到所有输入都已经是理性的,因此我决定尝试一种全理性的方法。可能更慢但是:为什么不呢?该系列是线性收敛的,因此有机会通过二进制拆分进行运行时优化。甚至还有关于如何做到这一点以及我使用的非常详细的文献。
到目前为止,一切都很好。
我的数值算法原型工具是 Pari/GP,所以我将上面提到的论文中的代码移植到了 Pari/GP 中,正如您可能已经从我在这里发布问题的事实中猜到的那样,它不起作用。好吧,它确实有效,但无法将错误最小化。该论文还有其他几种不同功能的配方,但都表现出相同的行为。假设论文中有错字,我检查了作者在CLN中的实现。高度优化,但基于论文中的代码,甚至是逐字记录。
为了获得 MWE,我使用了他们的配方exp(p/q)
(除了阶乘之外最简单的配方)并简化了 Pari/GP 代码。
(最后一个可能需要更长的时间,如果你想运行它可以跳过它。)
如您所见,经过几十个步骤后,无法进一步减少错误。
所以这要么是我对算法如何工作或 Pari/GP 如何工作的误解。它是哪一个,为什么?
graph-theory - 在 Pari/GP 中为路径图编写代码
我正在尝试为 Pari 中 n 个顶点上的路径图的邻接矩阵编写一个矩阵。为了清楚起见,当我说图 P_n 时,我指的是具有 n 个顶点和 n-1 条边的图。
到目前为止,我已经设法针对特定情况执行此操作:
等等
但是,我想要一个可以选择路径长度的代码。类似的东西path(n)=...
。当我用上面的代码尝试这个时,我得到以下信息:
我不确定这是否是写这篇文章的正确方法,我错过了一些微妙的东西,或者我是否应该为此做一些不同的事情。任何帮助将不胜感激!
pari - Pari GP 函数“读取”产生嵌套太深的 *** 表达式
我让 Pari 计算了一些多项式并将它们写入文件中。现在我想把它们读回来,我遇到
*** 表达式嵌套太深。
文件中没有循环,它只是第 n 行上的 {P[n]=(some (Laurent) polynomial in q);}。
该文件只有约 500 KB,我读过更大的文件。
我尝试检查是否有错误并且找不到它们。接下来,我尝试简化文件并读取前一百个多项式左右。这行得通,然后我尝试只加载一个较大的多项式。它不起作用,然后我删除了文件中的一些项,发现如果删除了足够多的项,它就可以读入它。
例如我输入
或者
文件只是表格的一行
这是可以阅读的
文件只有一行完全相同,除了给定的额外+1
无法读入。