标签: sympy

如何用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);
Run Code Online (Sandbox Code Playgroud)

a1..a5是系数y1 y10是我需要求解的,它们应该是求解后的符号表达式。如何在 Python 中做到这一点?

python equation numpy matrix sympy

2
推荐指数
1
解决办法
8952
查看次数

收集总和的公分母

我有一个总和,其中每个项共享相同的分母,例如a/Z + b/Z + ...。我想把Z. 虽然simplify可以做到,但是时间太长了。我已经尝试collect过了factor,但也没有达到我想要的效果。

有 SymPy 函数可以用于此目的吗?

python symbolic-math sympy

2
推荐指数
1
解决办法
1569
查看次数

Python 如何获取某一特定点的导数值?

from sympy import *
x = Symbol('x')
y = x ** 2
dx = diff(y, x)
Run Code Online (Sandbox Code Playgroud)

这段代码可以得到y的导数。这很容易dx = 2 * x

dx现在我想获取for的值x = 2

显然,dx = 2 * 2 = 4x = 2

但是我如何用Python代码实现这一点呢?

感谢您的帮助!

python sympy lambdify

2
推荐指数
1
解决办法
5171
查看次数

获取 sympy 表达式的运算

如何获得 sympy 表达式中出现的操作?例如,对于:2+x**2+exp(7*x)-log(y),我需要返回类似: 的内容["+","**","exp","*","-","log"]。我发现有一种简单的方法来获取变量,使用.free_symbols. 有没有简单的操作方法?我还发现了这个函数:srepr它返回:"Add(Pow(Symbol('x'), Integer(2)), exp(Mul(Integer(7), Symbol('x'))), Mul(Integer(-1), log(Symbol('y'))), Integer(2))"。这包含了我需要的一切,但我不确定如何以有效的方式从那里提取我需要的所有部分?有人能帮我吗?谢谢你!

python sympy

2
推荐指数
1
解决办法
423
查看次数

在 Python 中查找函数的反函数(可能使用 SymPy)

有没有办法在Python中找到函数的反函数?例如,如果我有 function def f(x): return x**2,Python/任何 Python 库函数中是否有一个函数可以执行此操作?或者这对计算机来说太难了,甚至无法解决?

python function sympy

2
推荐指数
1
解决办法
7738
查看次数

如何从 SymPy 符号表达式中删除 (1) 系数?

我想删除sympy符号表达式中任何等于1的系数,例如:我想要1.0x**2x**2有办法做到吗?另外,如果可能的话,可以舍入整数,2.0x**2例如2*x**2

python symbolic-math sympy python-3.x

2
推荐指数
1
解决办法
596
查看次数

使用 sympy 逐步微分

我正在尝试制作一个 python proram 来查找导数和积分以及展示如何进行。到目前为止,我发现有一个integral_steps函数返回所使用的步骤,但我还没有找到等效的微分函数。

有谁知道是否有等效的?

如果没有,您对如何找到找到导数所需的步骤有什么想法吗?

python math sympy calculus differentiation

2
推荐指数
1
解决办法
1578
查看次数

使用涉及 SymPy 中变量之间关系的假设简化表达式

如果我们知道变量满足某个方程,是否可以简化 SymPy 中的表达式?例如,在 Mathematica 中我们可以这样写:

Simplify[a+b-c, a+b==c]
Run Code Online (Sandbox Code Playgroud)

当然,在这种情况下,可以解决a并进行替换。然而,对于长表达式来说,进行全局替换可能没有意义。如果目标是产生尽可能最短的表达式,则可能需要对某些项应用替换,而其余项保持不变,或者求解b代替a

我认为sympy.assumptions模块不能对多个变量相互施加限制。Simplify[expr, assum]是否可以在 SymPy 中以任何其他方式实现 Mathematica 的功能?

或者还有其他开源项目可以做这样的事情吗?

symbolic-math sympy

2
推荐指数
1
解决办法
695
查看次数

有没有办法在 python 中的分段函数中指定 x!=y ?

我对这个词还是个新手,今天我想尝试在 Jupyter Notebook 上做一些数学题。我想解决这个功能: 在此处输入图像描述

我正在使用 jupyter 笔记本以及 sympy、numpy 和 matplotlib 等模块,但我不知道如何表示 x!=-y。

例如,如果函数不是 x!=-y,而是 x>y 我会这样做:

 x, y = sp.symbols('x y', real=True)
 g = sp.Piecewise(((x*y**4 - x**4*y)/(x**3+y**3), (x>y)), (0, True)) 
 G = sp.Lambda((x,y), g)
 display(G(x,y))
Run Code Online (Sandbox Code Playgroud)

但是如果我输入 x!=-y ,它不起作用(它不显示整个分段函数,它只显示分段函数的“第一部分”),我不知道如何解决它。

谢谢!!!

python sympy calculus

2
推荐指数
1
解决办法
131
查看次数

a**b 和 pow(a,b) 在符号计算中有何区别

编辑:按照 Wrzlprmft 的建议添加assert不会引发任何异常。

a**b在以下情况下,我必须编写具有许多类型表达式的代码

import sympy as sp
a, b = sp.symbols('a,b', real=True, positive=True)

expr1 = a**b
expr2 = pow(a,b)

assert expr1 is expr2
Run Code Online (Sandbox Code Playgroud)

a**b和之间的预期/可能差异是什么pow(a,b) (例如,当简化、收集等表达式时)。
在任何情况下我都应该预料到可能出现的错误结果吗?

到目前为止,我还没有找到。
我认为我不会使用第三个参数,pow因为我的基数是实数(指数通常是整数或一位或两位整数之间的比率),所以这个这个不相关。
thisthis 的重点是与 的比较math.pow,尽管有些答案也包括两者**pow的性能比较,显示出细微的差异。没有一个问题/答案涉及sympy.

如果math.powsympy.Pow任何情况下提供任何优势,我欢迎澄清。我预计我不会执行繁重的计算,因此微小的性能差异可能不会影响我的用例。

python sympy exponentiation pow

2
推荐指数
1
解决办法
260
查看次数