1

首先,

solve_poly_system( seq, *gens, **args),

有谁知道solve_poly_system 的参数到底是什么意思?

我有系统,

rd = λk
ua = λk
k = ad

其中 r, u, k 是已知的,a,d, λ 是变量。

当我使用 solve(system, [ a, d, λ]) 我得到错误,

NotImplementedError: only zero-dimensional systems supported (finite number of solutions)

文件中出现此错误

/usr/lib/python2.7/dist-packages/sympy/solvers/polysys.py", line 148, in solve_reduced_system

当我使用 solve_poly_system(system, [ a, d, λ]) 时,一切正常。

如我所见,solve() 和solve_poly_system() 最终都使用相同的函数来求解系统。对于非双二次,同样的函数是solve_generic(polys, opt),然后是_solve_reduced_system(system, gens, entry=False)

谁能解释为什么会这样?

我想使用solve(),因为我只对积极的解决方案感兴趣,所以我想使用'force'标志。

4

1 回答 1

1

我解决了我的问题。

起初,在Mateusz Paprocki的推荐下,我从master安装了 sympy 。这解决了solve()的问题

经过一番努力,我发现我的程序依赖于读取某些输入文件的顺序。这导致solve() 和solve_poly_system() 都退出

NotImplementedError: only zero-dimensional systems supported (finite number of solutions)

当我更改读取输入文件的顺序时。

更具体地说,我正在使用 Hadoop 1.0.2 Streaming 。我正在阅读一些文件,每个文件都有特定的、不同的内容和结构。在使用 sympy 模块进行一些操作后,这个总内容给出了一个线性系统。这就是问题所在。

Hadoop Streaming 不会以任何特定顺序读取输入文件。为此,在一起解析不同的文件时必须小心。我的“解析器”期望输入文件按特定顺序。当顺序不同时,文件的操作一直在给一个错误的系统来解决。为此,solve()、solve_poly_system() 引发了 NotImplementedError。这个问题的解决方案是修复我的“解析器”。

最后,从我使用它们的方式来看,solve_poly_system(seq, *gens, **args) 的参数,它们的意思是

  • seq = 序列,等于 0 的方程序列。在我的例子中,序列是一个列表

  • *gens = 在我的例子中,是一个变量列表。根据这些变量,我解决了我的系统。

于 2012-09-11T09:53:16.027 回答