# Set up variables and equations
x, y, P, Q, S, T, = sympy.symbols('x y P Q S T')
c, y_0, y_c, dy_0, dy_c = sympy.symbols('c y_0 y_c dy_0 dy_c')
eq_y = P * x + Q + x * x * (S * x + T)
eq_dy = eq_y.diff(x)
# Set up simultaneous equations that sympy will solve
equations = [
(y_0 - eq_y).subs(x, 0),
(dy_0 - eq_dy).subs(x, 0),
(y_c - eq_y).subs(x, c),
(dy_c - eq_dy).subs(x, c)
]
# Solve it for P, Q, S and T
solution_set = sympy.solve(equations, P, Q, S, T, set = True)
# Extract names, individual solutions and print everything
names = solution_set[0]
solutions = list(solution_set[1])
for k in range(len(solutions)):
print('Solution #%d' % (k+1))
for k2, name in enumerate(names):
print('\t%s: %s' % (name, solutions[k][k2]) )
目前解算器在求解含有更多
sqrt
的方程组时存在一些问题。因此在下面的代码中,首先删除sqrt
,然后解决方程式。当前求解器对于这些类型的方程并不快,它需要大约10秒来执行。在回答:
^{pr2}$请交叉核对答案。在
注:我对你最初的
y = P*x + Q + sqrt(S*x + T)
方程式表示同情。 我将使用y = P*x + Q + x*x*(S*x + T)
来演示sympy解算器是如何工作的(当它工作时)。在策略:
代码:
输出:
^{pr2}$现在,您可以使用其中一个解决方案,并执行另一个}作为一个纯粹由常量和
.subs(...)
来获得{x
组成的函数。在至于你最初的方程式。。。我想知道是否有人应该为sympy提交一个错误报告,以便他们能够改进它。。。:)
相关问题 更多 >
编程相关推荐