繁体   English   中英

使用 sympy 求解表达式

[英]Solving an expression using sympy

我想使用 sympy 解决以下表达式。 我已经定义了所有的符号和功能。 c,x,R 是函数,f 是我要为 p 求解的方程。 我将有两个可能的 p 我想要 plot 如下所示。 p 也在 0 和 1 之间,我没有说,也不知道如何定义。 x 是 c function wrt k 的导数,我将它的倒数放在 f 中。

在此处输入图像描述

代码:

import sympy as sym
sym.init_printing()

p,q,a,c0,c1,z,k = sym.symbols('p,q,a,c0,c1,z,k')

c = sym.Eq(c0+0.5*c1*(1/k**2))

x = sym.diff(c,k)

R = sym.Eq(z*(a+x**(-1)))

f = sym.Eq((1-p+p*q)*(a+x**(-1))-c-(1-p)*R)

sym.solve([f],(p))

也许看到一个具体的工作示例将帮助您理清问题陈述。 您正在求解的表达式在p中是线性的,因此只有一个解。 e1e2x的两个函数(而不是p )。 如果您想知道它们在哪里交叉,您需要知道何时e1 == e2或等效地何时e1 - e2 = 0

>>> from sympy import solve, solveset, Interval
>>> from sympy.abc import x
>>> e1 = 1/x
>>> e2 = (5*x + 9)/(25*x - 5)
>>> solve(e1 - e2)
[8/5 - sqrt(39)/5, sqrt(39)/5 + 8/5]  <--- two solutions but one is larger than 1
>>> solveset(e1-e2, x, Interval(0,1))
FiniteSet(8/5 - sqrt(39)/5)  <--- single solution in range of interest

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM