如何在Python中求解符号方程组?

2024-09-28 21:23:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我是从MATLAB到Python的新手。我现在有一个用Python求解方程组的问题。例如,在Matlab中

R = solve( a1*[x1; x2] == [y1;y2], ...  
           a2*[x3; x4] == [y3;y4], ...
           a3*[x5; x6] == [y5;y6], ... 
           x2 == y3, x3 == y2, ...        
           x4 == y5, x5 == y4, ... 
           [    x2 x3 x4 x5    ...   
             y1 y2 y3 y4 y5 y6]...   % unknown
          );
y1 = simplify(R.y1);
y10 = simplify(R.y10);

a1..a5是系数y1y10,这是我要解的,它们应该是解后的符号表达式。如何在Python中实现这一点?在


Tags: a1simplifyx2matlab新手y1x3x4
1条回答
网友
1楼 · 发布于 2024-09-28 21:23:00

NumPy没有符号解的概念。可以按如下方式使用SymPy:

from sympy import *
a1, a2, a3 = 3, 4, 5   #   known coefficients, they could be symbols too
x1, x2, x3, x4, x5, x6 = symbols('x1:7')
y1, y2, y3, y4, y5, y6 = symbols('y1:7')
eqns = [a1*x1 - y1, a1*x2 - y2, a2*x3 - y3, a2*x4 - y4, a3*x5 - y5, a3*x6 - y6, 
        x2 - y3, x3 - y2, x4 - y5, x5 - y4]
linsolve(eqns, [x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6])

输出是{(y1/3, 0, 0, 0, 0, y6/5, y1, 0, 0, 0, 0, y6)},表示大多数变量必须是0,x1必须是y1/3,x5必须是y6/6,并且变量y1、y2可以是什么。在

上面使用^{},因为系统在每个未知项中都是线性的。其他solvers可用于非线性方程。在

注意,方程可以输入为lhs - rhs(如上所述)或Eq(lhs, rhs)。而不是lhs == rhs,它在Python中会立即计算为False。在

相关问题 更多 >