在Python / SageMath中解决非线性方程

时间:2015-04-08 12:48:19

标签: python sum solver sage

我是Python的新用户& SageMath。

我有两个非线性方程式:

  1. f(x)==h(x)
  2. g(x)+S_{i,j,k}(x) == 0
  3. 我知道我可以解决1.数字,做:

    x = var('x')
    find_root(f(x)==h(x), x, x_min, x_max)
    

    在2.中,S_{i,j,k}(x)xi的三重和函数,jk是和的索引。我怎样才能以数字方式解决它?

1 个答案:

答案 0 :(得分:1)

使用Python和sympy,您可以使用sympy.mpmath.nsum()定义S_{i,j,k}(x)函数, 然后使用sympy.mpmath.findroot()

import sympy.mpmath

x = sympy.symbols('x')


def S(x_):
    return sympy.mpmath.nsum(lambda i, j: x_*i + j, [0, 2], [3, 4])


print('Function: {}'.format(S(x)))
print('Solution: {}'.format(sympy.mpmath.findroot(S, -1)))

打印:

Function: 6.0*x + 21.0
Solution: -3.5

我选择了一个线性示例,但它也适用于非线性方程。