How to solve a degenerate system of equations in sympy(如何用渐近法求解退化方程组)
本文介绍了如何用渐近法求解退化方程组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有很多方程组,有些没有详细说明,我想找一个非零解,如果它存在,或者报告说没有。然而,试图找到所有解决方案的症状似乎悬而未决。这里有一个极端的例子。
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}
这篇关于如何用渐近法求解退化方程组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如何用渐近法求解退化方程组
基础教程推荐
猜你喜欢
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
