问题标签 [groebner-basis]
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.
python - 求解三次多项式系统(找到贝塞尔曲线的交点)
任何人都可以建议修复或替代路线来找到该系统的解决方案吗?特别是我只关心 [0,1]x[0,1] 中的解决方案 (s,t)
注意:我在这里寻找两条三次贝塞尔曲线的交点。我需要保证找到所有解决方案的方法,并希望在合理的时间内找到(对我来说,这意味着每对曲线需要几秒钟)。
我尝试使用 sympy 但solve() 和solve_poly_system() 都返回了空列表。
这是我的代码:
这输出:
谢谢阅读!
timeout - 测量和限制在算术子求解器中花费的时间
Q1:可以查询Z3在不同子求解器中花费的时间吗?
调用(get-info :all-statistics)
给出了 Z3 的整体运行时间,但我想将其分解为单独的子求解器。
我对花在与算术相关的子求解器上的时间特别感兴趣,更准确地说,是那些产生统计数据grobner
和nonlinear-horner
.
Q2:此外,是否可以在子求解器上设置超时?
我可以想象像定义每个 check-sat 和子求解器的超时,它限制了 Z3 可以在该子求解器中花费的时间。Z3 会重复调用n 个不同的子求解器,如果达到其中一个的时间限制,它会继续,但只使用剩余的n-1个子求解器。
我阅读了战术教程并得到的印象是,这实际上可能通过类似的方式来实现
但我不知道要使用哪些求解器。
z3 - smt.arith.nl.gb 对(句法)相等推理的意外影响 - 错误?
考虑以下 SMTLIB 程序(在rise4fun此处):
尽管它似乎只需要对句法相等进行推理,但 Z3(4.3.2 正式版,以及 4.4.0 b6c40c6c0eaf)仍然未能表明最终断言是unsat
.
出乎意料(至少对我而言),设置smt.arith.nl.gb
为true
使示例验证(即check-sat
产量unsat
)。
对于它的价值,这里有一些进一步的观察:
如果乘法分别更改为或,则可以显示最终断言
unsat
(* i n)
(* n i)
如果将乘法更改为,则无法显示
unsat
(* i i)
(push)
并且(pop)
似乎不会影响示例,即可以将它们删除而不影响所描述的观察结果
这是一个错误还是smt.arith.nl.gb
需要显示此示例的原因unsat
?
computational-geometry - 用 Groebner 基证明定理
我正在尝试使用 Groebner Basis 证明一些定理(如 Cox、Little 和 O'Shea Link中所述 )
提到的书作为练习使用给定的方法来证明 Pappus 定理,但我真的无法让它发挥作用。我尝试过使用 Sage、Mathematica 和 Singular,但 Grobner Basis 计算不会终止。
知道我能做什么吗?以前有没有其他人做过这个练习?谢谢。
这是单数代码:
polynomials - 用 Groebner 基求解系统
假设 C[x,y,z] 中的一组有限多项式具有有限数量的解(即生成的理想是 0 维的)。
还假设关于 lex order x>y>z 的 Groebner 基是
[f(z), g(y,z), h(y,z), k(x,y,z)]
众所周知,系统现在可以很容易地解决:选择 f 的根 z0,将其代入 g 和 h,然后寻找公共根 (y0) 等。
问题如下:对于 f 的每个根 z0 是否存在 y0,z0 使得 (x0,y0,z0) 满足系统?
在我看到的所有例子中,这是正确的,但我不知道这是普遍正确的还是有反例。
谢谢你。
python - 在 Sympy 中对多元多项式使用 div():余数不正确?
我想在 Python 中计算多元多项式的余数,我发现 sympy 中的 div() 应该可以解决问题(我还需要 sympy 来进行 Gröbner 计算)。但我一直发现的问题是 div() 似乎只检查除法的前导项,因为
给出r=y
,而
给r=x**2+y
.
我想做诸如理想成员资格之类的事情,因此在除以 G = {g_1,...,g_s} 时找到一些多项式 f 的余数,其中我现在不能依赖 div()。
在使用 Sage 时,我没有遇到这个问题(使用 (x^2+y)%y 给出 x^2),但我更熟悉 Python,更喜欢通过 Python 来完成。
如果我做错了什么,有人可以告诉我吗?或者有人知道用于余数的更好功能吗?
matlab - 八度音阶的 Groebner Base 算法
我想找到一个代码或通用算法来计算 Octave 多项式的 Groebner 基。我试过这个:如何在 Matlab 中计算方程组的 Groebner 基,但出现以下错误:
error: strcat: inputs must be strings or cells of strings error: called from strcat at line 105 column 7 test at line 2 column 9
该代码是否仅适用于 Matlab?我怎样才能使它适用于 Octave?
sympy - 在 Sympy 中,有没有办法根据定义多项式来表示 Groebner 基?
在 Sympy 中,可以通过 Grobner 基获得多项式归约的表示:
但我正在寻找的是一种根据定义它的多项式来表达 Groebner 基的元素的方法,基本上只是存储在生成基时使用的 Buchberger 算法中执行的计算。
例如
它表明这三个多项式生成单位理想,但我想要这些多项式的明确组合等于 1。在给出的示例中,它是线性组合,但我想要一种也适用于非线性的方法。
在我获得的第一个示例Q,r
中。在第二个示例中,我获得了余数的模拟,r
但我希望多项式能够Q
实现它。
同样,该方法G.contains()
将指示理想是否包含多项式,但不会告诉您如何生成它。有没有办法做到这一点?