首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sympy函数导数和方程组

Sympy函数导数和方程组
EN

Stack Overflow用户
提问于 2017-11-07 13:55:11
回答 2查看 1.5K关注 0票数 0

我在研究非线性方程组。这些系统一般是一个非线性矢量微分方程。现在我想使用函数并导出它们关于时间和它们的时间导数,并通过求解非线性方程0=rhs(eqs)来找到平衡点。类似的东西需要计算欧拉-拉格朗日方程,在这里,你需要L wrt的导数。差(x,t)

现在我的问题是,如何在Sympy中实现这一点?我的两个主要问题是,导出一个符号的wrt。T diff(f,t),我得到0。我看得出来,这和

代码语言:javascript
复制
x = Symbol('x',real=True);
diff(x.subs(x,x(t)),t) # because diff(x,t) => 0

代码语言:javascript
复制
diff(x**2, x)

就像工作一样。

然而,与

代码语言:javascript
复制
x = Fuction('x')(t);
diff(x,t);

我让它工作了,但我无法区分wrt。函数本身,就像

代码语言:javascript
复制
diff(x**2,x) -DOES NOT WORK.

因为我需要这些东西,尤其是对于标量,而且向量(使用jacobian),我真的希望这是一个干净和功能的工作流程。为了避免奇怪的替换,我应该在Sympy中使用哪种类型的数学函数?情况只会变得更糟,在我无法得到的情况下

代码语言:javascript
复制
eqns = Matrix([f1-5, f2+1]);
variabs = Matrix([f1,f2]);
nonlinsolve(eqns,variabs);

按预期工作,因为它只允许符号作为输入。这里有很容易的转换吗?比如eqns.tolist() --它也不起作用吗?

编辑:我刚刚找到了问题,这个问题是关于使用表达式和矩阵的。我想要能够求解一组非线性方程组,建立向量wrt的jacobian。另一个向量并导出wrt。如上所述的职能。有人能为我指出一个方向来启动一个简洁的工作流程吗?我想最复杂的任务是计算谎言导数wrt。一个向量或函数列表,其余的应该是直接向前的。

编辑2:

代码语言:javascript
复制
def substi(expr,variables): 
   return expr.subs( {w:w(t)} )

将自动转换,因此substi(vector_expr,varlist_vector).diff(t)不是全部为0。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-11 03:58:30

是的,必须在函数中插入一个参数,然后才能得到它的导数。但在那之后,关于x(t)的微分在SymPy 1.1.1中起作用,我也可以区分它的导数。欧拉-拉格朗日方程推导实例:

代码语言:javascript
复制
t = Symbol("t")
x = Function("x")(t)
L = x**2 + diff(x, t)**2    # Lagrangian
EL = -diff(diff(L, diff(x, t)), t) + diff(L, x)

现在EL和预期的一样是2*x(t) - 2*Derivative(x(t), t, t)

也就是说,有一个欧拉-拉格朗日的内建方法

代码语言:javascript
复制
EL = euler_equations(L)

将得到相同的结果,除非表示为一个右侧为0:[Eq(2*x(t) - 2*Derivative(x(t), t, t), 0)]的微分方程。

票数 1
EN

Stack Overflow用户

发布于 2017-11-08 01:00:23

下面将x定义为t的一个函数

代码语言:javascript
复制
import sympy as s
t = s.Symbol('t')    

x = s.Function('x')(t)

这将解决diff(x,t)被评估为0的问题。但我认为你在以后的计算中仍然会遇到问题。我也处理变分微积分和欧拉-拉格朗日方程。在这些计算中,x'需要被视为独立于x。因此,通常最好为xx'使用两个完全不同的变量,以免将Sympy与这两个变量之间的关系混为一谈。在完成了Sympy中的计算之后,我们回到我们的笔和纸上,我们可以用x'代替第二个变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47159723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档