标签: sympy

SymPy - 任意数量的符号

我正在编写一个函数来解决任意数量的联立方程.方程的数量由函数的一个参数设置,每个方程由许多符号构成 - 与方程一样多的符号.这意味着我不能简单地对方程式进行硬编码,甚至不需要将方程组合在一起所需的符号; 该函数需要能够处理任意数量的方程.所以,我的问题是,我如何生成符号列表?

我有一个可能的解决方案,但我的直觉告诉我,它不会非常有效.如果有更好的方法,请告诉我.

我是SymPy的新手,我仍然在摸索着.据我所知,符号需要用字符串定义.因此,我可以通过在字母上添加递增数字(例如't0','t1'等)来生成一系列字符串,将它们添加到列表中,然后使用这些字符串作为参数创建符号.这些符号本身将存储在列表中,并用于生成方程式.

def solveEquations(numEquations):
    symbolNameList = []
    symbolList = []
    equationList = []
    for i in range(numEquations):
        name = 't' + str(i)
        symbolNameList.append(name)
        symbolList.append(Symbol(name))

    for i in range(numEquations):
        equation = 0
        for sym in symbolList:
            equation += sym ** i # Or whatever structure the equation needs
        equationList.append(equation)


    #Then go on to solve the equations...
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗,还是有更有效的方法?

python symbols sympy equation-solving

21
推荐指数
3
解决办法
8262
查看次数

如何在SymPy中定义数学函数?

我一直在尝试这几个小时.我想我不明白一个基本概念,这就是为什么到目前为止我无法回答这个问题.

我正在尝试的是实现一个简单的数学函数,如下所示:

f(x) = x**2 + 1
Run Code Online (Sandbox Code Playgroud)

之后我想得到那个功能.

我已经定义了符号和函数:

x = sympy.Symbol('x')
f = sympy.Function('f')(x)
Run Code Online (Sandbox Code Playgroud)

现在我正在努力为这个函数定义方程f(x).有点像f.exp("x**2 + 1")不起作用.

我也想知道在最终定义之后我怎么能打印出这个函数的控制台.

python sympy

21
推荐指数
3
解决办法
2万
查看次数

将LaTex公式转换为可在SymPy中使用的类型

我想解析LaTeX公式并直接将它们用作SymPy表达式.换句话说,我需要的是类似于同情的东西:

from sympy import sympify
f = sympify('x^2 + sin(y) + 1/2')
print f
Run Code Online (Sandbox Code Playgroud)

但是这可以将LaTeX表达式(字符串)作为输入,例如:

f = latex_sympify('\frac{x}{1+x}')
Run Code Online (Sandbox Code Playgroud)

鉴于sympify能够将带有常规数学表达式的字符串转换为SymPy对象,如果有任何东西可以将LaTeX转换为常规数学表达式,我想这会有所作为 - 但我宁愿做所有事情在Python中.

任何建议将不胜感激.

python latex sympy

19
推荐指数
2
解决办法
5530
查看次数

代表代数整数的环

我试图代表戒指;

在此输入图像描述

其中theta是具有度数d的整数系数的monic不可约多项式f的根.

这个环是代数整数的子环,它本身就是该领域的一个子环;

在此输入图像描述

我可以用sympy的AlgebraicField课程代表这个领域

Q_theta = sympy.polys.domains.AlgebraicField(QQ,theta)
Run Code Online (Sandbox Code Playgroud)

有没有办法以类似的方式表示上面的整数子环?

python sympy

19
推荐指数
1
解决办法
955
查看次数

从Sympy返回的有限集返回的解决方案集中获取值

我在Python Sympy库中创建一个脚本,并尝试访问solveset()和linsolve()函数返回的结果.我的问题是这些函数返回的对象是有限集类型,我想自动选择一些结果,以便在其他方程中重新输入它.任何人都可以帮助我?

一个例子: 我创建了一个包含两个未知变量的方程列表:

>>> a1, a2 = symbols('a1, a2')
>>> eq2_1 = Eq(-3*a1/10 - 3*a2/20 + 1/12)
>>> eq2_2 = Eq(-3*a1/20 - 13*a2/105 + 1/20)
>>> lista = [eq2_1,eq2_2]
>>> str(lista)
[-3*a1/10 - 3*a2/20 + 1/12, -3*a1/20 - 13*a2/105 + 1/20]
Run Code Online (Sandbox Code Playgroud)

然后使用linsolve()方法解决它.

>>> a = linsolve(lista,a1,a2)
>>> a
{(71/369, 7/41)} 
Run Code Online (Sandbox Code Playgroud)

结果是正确的,但我无法将这些结果输入变量.

我尝试了dics,list,tuples,indexing命令,但总是返回错误."Finiteset对象没有属性'命令'"

python sympy

18
推荐指数
4
解决办法
5729
查看次数

如何在python中使用sympy计算表达式

我需要在python中使用sympy计算下面的表达式?

exp = '(a+b)*40-(c-a)/0.5'
Run Code Online (Sandbox Code Playgroud)

a=6,b=5,c=2这种情况下如何使用Python sympy计算表达式?请帮我.

python expression sympy

17
推荐指数
5
解决办法
2万
查看次数

在我的程序中使用"from __future__ import division",但它没有加载我的程序

我在Python 2中编写了以下程序来为我的数学问题集进行牛顿方法计算,虽然它完美地工作,但是出于我不知道的原因,当我最初在ipython中加载它时%run -i NewtonsMethodMultivariate.py,不会导入Python 3除法.我知道这是因为在加载我的Python程序后,输入x**(3/4)"1".手动导入新分区后,按预期x**(3/4)保留x**(3/4).为什么是这样?

# coding: utf-8
from __future__ import division
from sympy import symbols, Matrix, zeros

x, y = symbols('x y')
X = Matrix([[x],[y]])
tol = 1e-3

def roots(h,a):
  def F(s):
    return h.subs({x: s[0,0], y: s[1,0]})
  def D(s):
    return h.jacobian(X).subs({x: s[0,0], y: s[1,0]})
  if F(a) == zeros((2,1)):
    return a
  else:
    while (F(a)).norm() > tol:
      a = a - ((D(a))**(-1))*F(a)
      print a.evalf(10)
Run Code Online (Sandbox Code Playgroud)

我会使用Python 3来避免这个问题,但是我的Linux发行版只提供SymPy for Python 2.感谢任何人都能提供的帮助.

另外,如果有人想知道,我还没有为nxn Jacobians推广这个脚本,只需要在我的问题集中处理2x2.另外,我正在切换2x2零矩阵而不是使用命令,zeros(2,1) …

python sympy

17
推荐指数
1
解决办法
3万
查看次数

有没有办法在python中求解耦合微分方程组?

我一直在研究sympy和scipy,但是找不到或弄清楚如何求解耦合微分方程组(非线性,一阶).

那么有没有办法解决耦合微分方程?

方程的形式如下:

V11'(s) = -12*v12(s)**2
v22'(s) = 12*v12(s)**2
v12'(s) = 6*v11(s)*v12(s) - 6*v12(s)*v22(s) - 36*v12(s)
Run Code Online (Sandbox Code Playgroud)

初始条件为v11(s),v22(s),v12(s).

python numpy sympy scipy enthought

17
推荐指数
2
解决办法
4万
查看次数

Sympy - 比较表达式

有没有办法检查两个表达式在数学上是否相等?我期望 tg(x)cos(x) == sin(x)输出True,但它输出False.有没有办法与同情进行这样的比较?另一个例子 (a+b)**2 == a**2 + 2*a*b + b**2令人惊讶地也是输出False.

我发现了一些类似的问题,但没有人提到这个问题.

python sympy comparison-operators

17
推荐指数
2
解决办法
3236
查看次数

同情心如何运作?它如何与交互式Python shell交互,以及交互式Python shell如何工作?

我按下内部会发生什么Enter

除了好奇之外,我的动机是要弄清楚当你发生什么时会发生什么

from sympy import *
Run Code Online (Sandbox Code Playgroud)

并输入一个表达式.它如何从Enter致电

__sympifyit_wrapper(a,b)
Run Code Online (Sandbox Code Playgroud)

在sympy.core.decorators?(这是我尝试检查评估时winpdb带给我的第一个地方.)我猜想有一些内置的eval函数可以正常调用,并且在导入sympy时会被覆盖?

python scripting interactive eval sympy

16
推荐指数
3
解决办法
1515
查看次数