如何用渐近法求解退化方程组

编程入门 行业动态 更新时间:2024-10-10 21:21:27
本文介绍了如何用渐近法求解退化方程组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有很多方程组,有些没有详细说明,我想找一个非零解,如果它存在,或者报告说没有。然而,试图找到所有解决方案的症状似乎悬而未决。这里有一个极端的例子。

from sympy import * A = Matrix([ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ]) syms = symbols("x:12") s = Matrix(syms) constraints = [xi**3 - xi for xi in syms] solve(list(A*s) + constraints, syms) 在这样的示例中,我如何才能快速报告一个非零解?事实上,如果它只报告有解决方案,我会很高兴。

推荐答案

为SymPy提供越来越难的系统(指定的0较少),并在得到解决方案时退出:

>>> def nonzsol(eqs, syms): ... from sympy import subsets ... for i in range(len(syms)-1,-1,-1): ... for z in subsets(syms, i): ... s, nontriv = solve(eqs + list(z), set=True) ... for v in nontriv: ... if any(v): ... return dict(zip(s, v)) ... >>> >>> nonzsol(eqs, syms) {x0: 0, x1: 0, x10: 0, x11: -1, x2: 0, x3: 0, x4: 0, x5: 0, x6: 0, x7: 0, x8: 0, x9: 0}

更多推荐

如何用渐近法求解退化方程组

本文发布于:2023-11-30 06:11:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1648982.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方程组   渐近   如何用

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!